def add(self, subject_name, checkpoints_json): self.add_base_fields(checkpoints_json) self.add_base_checkpoint(checkpoints_json) subject = Subject.query.filter_by(name=subject_name).first() if subject is None: subject = Subject(name=subject_name) subject.add_to_db() checkpoints = subject.checkpoints for checkpoint_json in checkpoints_json: checkpoint_name = checkpoint_json['name'] checkpoint = checkpoints.filter_by(name=checkpoint_name).first() if checkpoint is None: checkpoint = Checkpoint(name=checkpoint_name) checkpoints.append(checkpoint) fields = checkpoint.fields for field_json in checkpoint_json['fields']: field_name = field_json['name'] field = fields.filter_by(name=field_name).first() if field is None: field = CheckpointField(name=field_name) fields.append(field) field.type = field_json.get('type', None) field.is_hidden = field_json.get('is_hidden', False) db.session.commit() checkpoints = subject.checkpoints.all() return Checkpoint.json_list(checkpoints)
def add_association(self, username, subject_name, group_id): tutor = self.find_tutor_by_username(username) if tutor.tgs.filter_by(subject_name=subject_name, group_id=group_id).first(): raise AssociationExist(subject_name=subject_name, group_id=group_id) subject = Subject.find_by_name(subject_name) if subject is None: subject = Subject(name=subject_name) subject.add_to_db() group = Group.find_by_id(group_id) if group is None: group = Group(id=group_id) group.add_to_db() association = AssociationTGS() association.subject = subject association.group = group tutor.tgs.append(association) db.session.commit()