diff --git a/feedbackloop/model.py b/feedbackloop/model.py index 3db965fc5ccc0cdbe78bdbd06322b6a891e9f585..00cbbe0fffa5ca3f0e4e9cafbb089e1b8eabefce 100644 --- a/feedbackloop/model.py +++ b/feedbackloop/model.py @@ -9,3 +9,12 @@ class FeedbackEntry(db.Model): is_list = db.Column(db.Boolean, index=True) message = db.Column(db.Text) timestamp = db.Column(db.DateTime) + + def to_api_dict(self): + return { + 'id': self.id, + 'sender': self.sender, + 'reporter': self.reporter, + 'is_list': self.is_list, + 'timestamp': self.timestamp.strftime('%Y-%m-%dT%H:%M:%SZ'), + } diff --git a/feedbackloop/views.py b/feedbackloop/views.py index d4a9f7bc2b2ca8b200cc0a6e60808822192a1ba1..98dcd5be2db1879ae5cb387f499c55f49edb5e16 100644 --- a/feedbackloop/views.py +++ b/feedbackloop/views.py @@ -1,4 +1,4 @@ -from flask import request, render_template, abort +from flask import request, render_template, abort, jsonify from sqlalchemy import func, text from .app import app, db from .model import FeedbackEntry @@ -24,6 +24,16 @@ def by_sender(sender): reports=reports) +@app.route('/api/by_sender/<sender>') +def api_by_sender(sender): + reports = FeedbackEntry.query.filter( + FeedbackEntry.sender == sender).order_by( + FeedbackEntry.timestamp.desc()) + return jsonify({ + 'reports': [x.to_api_dict() for x in reports], + }) + + @app.route('/') def index(): n = int(request.args.get('n', '20'))