def put(self, tag_id): """Update tag.""" tag = Tag.query.filter_by(id=tag_id).one() data = TagSchema().deserialize(request.json) tag.name = data['name'] db_session.commit() return '', 204
def _delete_batch(self): """Delete list of tags.""" tag_ids = DeleteTagsSchema().deserialize(request.json)['ids'] count = Tag.query.filter( Tag.id.in_(tag_ids)).delete(synchronize_session=False) if count != len(tag_ids): # Not all tags from the list were deleted. abort(404) db_session.commit() return '', 204
def _delete_batch(self): """Delete list of entries.""" data = DeleteEntriesSchema().deserialize(request.json) count = Entry.query.filter( Entry.id.in_(data['ids'])).delete(synchronize_session=False) if count != len(data['ids']): # Not all entries from the list were deleted. abort(404) db_session.commit() return self._return_result_or_empty(data)
def delete(self, tag_id=None): """Delete tag.""" if tag_id is None: return self._delete_batch() count = Tag.query.filter_by( id=tag_id).delete(synchronize_session=False) if count != 1: # Tag wasn't deleted. abort(404) db_session.commit() return '', 204
def post(self): """Create tag.""" data = TagSchema().deserialize(request.json) tag_exists = db_session.query(exists().where( Tag.name == data['name'] )).scalar() if tag_exists: abort(409) tag = Tag() tag.name = data['name'] db_session.add(tag) db_session.commit() return jsonify(id=tag.id)
def delete(self, entry_id): """Delete entry.""" if entry_id is None: return self._delete_batch() data = {} if request.json: data = DeleteEntrySchema().deserialize(request.json) count = Entry.query.filter_by( id=entry_id).delete(synchronize_session=False) if count != 1: # Entry wasn't deleted. abort(404) db_session.commit() return self._return_result_or_empty(data)
def put(self, entry_id): """Update entry.""" entry = Entry.query.filter_by(id=entry_id).one() data = update_entry_schema.deserialize(request.json) entry.setoptattr('amount', data['amount']) entry.setoptattr('date', data['date']) # Empty string is treated as missing, use unprocessed value instead. entry.setoptattr('note', request.json.get('note')) tags = data['tags'] if tags is not None: if len(tags) == 0: entry.tags = [] else: entry.tags = Tag.query.filter(Tag.id.in_(tags)).all() db_session.commit() return self._return_result_or_empty(data)
def post(self, **kwargs): """Create entry.""" data = AddEntrySchema().deserialize(request.json) entry = Entry() entry.amount = data['amount'] entry.date = data['date'] entry.setoptattr('note', data['note']) if data['tags']: entry.tags = Tag.query.filter(Tag.id.in_(data['tags'])).all() db_session.add(entry) db_session.commit() resp = {'id': entry.id} d = data['totalForMonth'] if d is not None: resp['totalAmount'] = '%.2f' % (Entry.month_total(d) or 0) return jsonify(**resp)