Files

55 lines
1.7 KiB
Python

from flask import Blueprint, render_template, redirect, url_for
from flask_login import login_required, current_user
from app.models import SurveyInvite, UserSurvey, SurveyType, User
bp = Blueprint('core', __name__)
@bp.route('/', endpoint='home')
def home():
return redirect(url_for('choose_survey'))
@bp.route('/dashboard', endpoint='dashboard')
@login_required
def dashboard():
if current_user.is_admin:
invites = (SurveyInvite
.select()
.join(UserSurvey)
.order_by(SurveyInvite.sent_at.desc()))
else:
invites = (SurveyInvite
.select()
.join(UserSurvey)
.where(UserSurvey.user == current_user.id)
.order_by(SurveyInvite.sent_at.desc()))
return render_template('user/dashboard.html', invites=invites, title='Отчёты')
@bp.route('/quiz', endpoint='choose_survey')
@login_required
def choose_survey():
if current_user.is_admin:
surveys = SurveyType.select()
users = User.select().where(User.is_admin == False)
assignments = {
s.id: [us.user.id for us in UserSurvey.select().where(UserSurvey.survey_type == s)]
for s in surveys
}
else:
surveys = (SurveyType
.select()
.join(UserSurvey)
.where(UserSurvey.user == current_user.id)
.distinct())
users = []
assignments = {}
return render_template('choose_survey.html',
surveys=surveys,
users=users,
assignments=assignments,
title='Опросы')