Exemplo n.º 1
0
Arquivo: tags.py Projeto: xamox/beans
 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
Exemplo n.º 2
0
Arquivo: tags.py Projeto: xamox/beans
 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
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
Arquivo: tags.py Projeto: xamox/beans
    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
Exemplo n.º 5
0
Arquivo: tags.py Projeto: xamox/beans
 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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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)