def post(self, data, filter_data): model = self.Model() form = self.get_form(filter_data)(formdata=MultiDict(data)) if not form.validate(): raise BadRequest(form.errors) form.populate_obj(model) db.session.add(model) commit() return model
def put(self, id_, data, filter_data): model = self.get(id_) form = self.get_form(filter_data)(formdata=MultiDict(data)) if not str(form.id.data) == str(id_): raise BadRequest(['The id in the model and the uri do not match.']) if not form.validate(): raise BadRequest(form.errors.values()) form.populate_obj(model) db.session.add(model) commit() return model
def parse_tags(self, tag_names): """Parses a list of tag names into EntryTags and Tags for an entry.""" names = [t.strip().lower() for t in tag_names if t.strip()] tags = [ db.session.query(Tag).filter(Tag.name == name).first() or Tag(name=name) for name in names ] db.session.add_all([t for t in tags if not t.id_]) commit() entry_tags = [ db.session.query(EntryTag).filter( EntryTag.entry_id == self.id_, EntryTag.tag_id == tag.id_ ).first() or EntryTag(entry_id=self.id_, tag_id=tag.id_) for tag in tags ] db.session.add_all([e for e in entry_tags if not e.id_]) commit() db.session.query(EntryTag).filter( ~EntryTag.id_.in_([e.id_ for e in entry_tags]), EntryTag.entry_id==self.id_ ).delete(synchronize_session=False) commit()
def delete(self, id_, filter_data): model = self.get(id_) db.session.delete(model) commit() return {}
def put(self, id_, data, filter_data): model = self.get(id_) model.update(data) db.session.add(model) commit() return model
def post(self, data, filter_data): model = self.Model(**data) db.session.add(model) commit() return model