diff --git a/app/controllers/api.py b/app/controllers/api.py index 1389155..5400d4d 100644 --- a/app/controllers/api.py +++ b/app/controllers/api.py @@ -109,8 +109,50 @@ def report(): processor.enqueue({'request': 'report', 'data': token}) + except: logger.exception("report failure") abort(500) - return "OK" \ No newline at end of file + return "OK" + + +@app.route("/accept", methods=['GET']) +def accept_comment(): + + try: + id = request.args.get('id', '') + secret = request.args.get('secret', '') + + if secret != config.SECRET: + logger.warn('Unauthorized request') + abort(401) + + processor.enqueue({'request': 'late_accept', 'data': id}) + + except: + logger.exception("accept failure") + abort(500) + + return "PUBLISHED" + + +@app.route("/reject", methods=['GET']) +def reject_comment(): + + try: + id = request.args.get('id', '') + secret = request.args.get('secret', '') + + if secret != config.SECRET: + logger.warn('Unauthorized request') + abort(401) + + processor.enqueue({'request': 'late_reject', 'data': id}) + + except: + logger.exception("reject failure") + abort(500) + + return "REJECTED" + diff --git a/app/services/processor.py b/app/services/processor.py index 06ba4bc..11b8752 100644 --- a/app/services/processor.py +++ b/app/services/processor.py @@ -42,6 +42,10 @@ class Processor(Thread): unsubscribe_reader(msg['data']) elif msg['request'] == 'report': report(msg['data']) + elif msg['request'] == 'late_accept': + late_accept_comment(msg['data']) + elif msg['request'] == 'late_reject': + late_reject_comment(msg['data']) else: logger.info("throw unknown request " + str(msg)) except: @@ -160,6 +164,35 @@ def reply_comment_email(data): comment.site.token, comment.site.url, comment.url) +def late_reject_comment(id): + + # retrieve site and comment rows + comment = Comment.select().where(Comment.id == id).get() + + # report event + report_rejected(comment) + + # delete Comment row + comment.delete_instance() + + logger.info('late reject comment: %d' % id) + + +def late_accept_comment(id): + + # retrieve site and comment rows + comment = Comment.select().where(Comment.id == id).get() + + # report event + report_published(comment) + + # update Comment row + comment.published = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + comment.save() + + logger.info('late accept comment: %d' % id) + + def get_email_metadata(message): # retrieve metadata reader email from email body sent by admin email = ""