From e052d951571e5fbd43b8df44cac6b30fa50e7e67 Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Sun, 23 Oct 2022 13:51:41 +0100 Subject: [PATCH] Add JSON API endpoint --- feedbackloop/model.py | 9 +++++++++ feedbackloop/views.py | 12 +++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/feedbackloop/model.py b/feedbackloop/model.py index 3db965f..00cbbe0 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 d4a9f7b..98dcd5b 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')) -- GitLab