endorsement/achievements.py

40 lines
1.4 KiB
Python
Raw Normal View History

2018-07-12 22:24:06 +02:00
from app import app, db
from models import Achievement
2018-07-17 09:56:02 +02:00
from flask import render_template, redirect, url_for
2018-07-12 22:24:06 +02:00
from flask_login import current_user, login_required
import json
@app.route("/achievement/<id>")
def get_achievement(id):
achievement = Achievement.query.filter_by(id=id).first()
if not achievement:
2018-07-17 09:44:20 +02:00
return "Unknown achievement"
2018-07-17 09:56:02 +02:00
return render_template("achievement.html", data=achievement, endorsed=(current_user in achievement.endorsed_by))
2018-07-12 22:24:06 +02:00
@app.route("/achievement/<id>/endorse")
@login_required
def endorse_achievement(id):
achievement = Achievement.query.filter_by(id=id).first()
if not achievement:
return "Invalid id"
if current_user in achievement.endorsed_by:
return "Already endorsed"
achievement.endorsed_by.append(current_user)
db.session.add(achievement)
db.session.commit()
2018-07-17 09:56:02 +02:00
return redirect(url_for("get_achievement", id=id))
2018-07-12 22:24:06 +02:00
@app.route("/achievement/<id>/unendorse")
@login_required
def unendorse_achievement(id):
achievement = Achievement.query.filter_by(id=id).first()
if not achievement:
return "Invalid id"
if current_user not in achievement.endorsed_by:
return "Can't unendorse if you never endorsed..."
achievement.endorsed_by.remove(current_user)
db.session.add(achievement)
db.session.commit()
2018-07-17 09:56:02 +02:00
return redirect(url_for("get_achievement", id=id))