def create(): data = EntityForm().deserialize(request_data()) authz.require(data['list']) authz.require(authz.list_write(data['list'].id)) entity = Entity.create(data, current_user) db.session.commit() refresh_selectors.delay(list(entity.terms)) return view(entity.id)
def update(id): entity = obj_or_404(Entity.by_id(id)) authz.require(authz.list_write(entity.list_id)) data = EntityForm().deserialize(request_data()) authz.require(data['list']) authz.require(authz.list_write(data['list'].id)) old_selectors = entity.terms entity.update(data) db.session.commit() selectors = old_selectors.symmetric_difference(entity.terms) refresh_selectors.delay(list(selectors)) return view(entity.id)
def update(self, data): data = EntityForm().deserialize(data) self.label = data.get('label') self.list = data.get('list') self.category = data.get('category') selectors = set(data.get('selectors')) selectors.add(self.label) existing = list(self.selectors) for sel in list(existing): if sel.text in selectors: selectors.remove(sel.text) existing.remove(sel) for sel in existing: db.session.delete(sel) for text in selectors: sel = Selector() sel.entity = self sel.text = text db.session.add(sel)