# -*- mode: python -*- # -*- coding: utf-8 -*- ############################################################################## # # ScoDoc # # Copyright (c) 1999 - 2021 Emmanuel Viennet. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Emmanuel Viennet emmanuel.viennet@viennet.net # ############################################################################## """ Module main: page d'accueil, avec liste des départements Emmanuel Viennet, 2021 """ import flask from flask import flash, url_for, redirect, render_template from flask import request from flask.app import Flask from flask_login.utils import login_required from flask_wtf import FlaskForm from wtforms import SelectField, SubmitField # from wtforms.validators import DataRequired from app.models import Departement, ScoDocSiteConfig import sco_version from app.scodoc import sco_find_etud from app.decorators import admin_required from app.scodoc.sco_permissions import Permission from app.views import scodoc_bp as bp @bp.route("/") @bp.route("/ScoDoc") @bp.route("/ScoDoc/index") def index(): "Page d'accueil: liste des départements" depts = ( Departement.query.filter_by(visible=True).order_by(Departement.acronym).all() ) return render_template( "scodoc.html", title=sco_version.SCONAME, current_app=flask.current_app, depts=depts, Permission=Permission, ) @bp.route("/ScoDoc/table_etud_in_accessible_depts", methods=["POST"]) @login_required def table_etud_in_accessible_depts(): """recherche étudiants sur plusieurs départements""" return sco_find_etud.table_etud_in_accessible_depts(expnom=request.form["expnom"]) # ---- CONFIGURATION class ScoDocConfigurationForm(FlaskForm): "Panneau de configuration général" # très préliminaire ;-) # On veut y mettre la fonction bonus et ensuite les logos bonus_sport_func_name = SelectField( label="Fonction de calcul des bonus sport&culture", choices=[ (x, x if x else "Aucune") for x in ScoDocSiteConfig.get_bonus_sport_func_names() ], ) submit = SubmitField("Enregistrer") @bp.route("/ScoDoc/configuration", methods=["GET", "POST"]) @admin_required def configuration(): "Panneau de configuration général" form = ScoDocConfigurationForm( bonus_sport_func_name=ScoDocSiteConfig.get_bonus_sport_func_name() ) if form.validate_on_submit(): ScoDocSiteConfig.set_bonus_sport_func(form.bonus_sport_func_name.data) flash(f"Configuration enregistrée") return redirect(url_for("scodoc.index")) return render_template( "configuration.html", title="Configuration ScoDoc", form=form, # bonus_sport_func_name=ScoDocSiteConfig.get_bonus_sport_func(), ) # essais # @bp.route("/testlog") # def testlog(): # import time # from flask import current_app # from app import log # log(f"testlog called: handlers={current_app.logger.handlers}") # current_app.logger.debug(f"testlog message DEBUG") # current_app.logger.info(f"testlog message INFO") # current_app.logger.warning(f"testlog message WARNING") # current_app.logger.error(f"testlog message ERROR") # current_app.logger.critical(f"testlog message CRITICAL") # raise SyntaxError("une erreur de syntaxe") # return "testlog completed at " + str(time.time())