Esempio n. 1
0
File: base.py Progetto: astex/fable
    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
Esempio n. 2
0
File: base.py Progetto: astex/fable
    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
Esempio n. 3
0
 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()
Esempio n. 4
0
File: base.py Progetto: astex/fable
 def delete(self, id_, filter_data):
     model = self.get(id_)
     db.session.delete(model)
     commit()
     return {}
Esempio n. 5
0
 def put(self, id_, data, filter_data):
     model = self.get(id_)
     model.update(data)
     db.session.add(model)
     commit()
     return model
Esempio n. 6
0
 def post(self, data, filter_data):
     model = self.Model(**data)
     db.session.add(model)
     commit()
     return model