def plot_date(d): """Sum amounts and group by dates. """ query = db_session.query( Entry.date, func.sum(Entry.amount) ).filter( (extract('year', Entry.date) == d.year) & (extract('month', Entry.date) == d.month) ).group_by(Entry.date).order_by(Entry.date) series = [(str(d), '%.2f' % s) for d, s in query] return jsonify(series=series)
def plot_bar(d): """Sum amounts and group by tags.""" query = db_session.query( Tag.name, func.sum(Entry.amount) ).outerjoin(Entry.tags).filter( (extract('year', Entry.date) == d.year) & (extract('month', Entry.date) == d.month) ).group_by(Tag.name).order_by(Tag.name) series = [(t or '(no tag)', '%.2f' % s) for t, s in query] return jsonify(series=series)
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)