55 lines
1.7 KiB
Python
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='Опросы')
|
|
|