# -*- coding: utf-8 -*- ############################################################################## # # Gestion scolarite IUT # # 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 absences: issu de ScoDoc7 / ZAbsences.py Emmanuel Viennet, 2021 Gestion des absences (v4) Code dérivé de la partie la plus ancienne de ScoDoc, et à revoir. L'API de plus bas niveau est en gros: AnnuleAbsencesDatesNoJust( dates) count_abs(etudid, debut, fin, matin=None, moduleimpl_id=None) count_abs_just(etudid, debut, fin, matin=None, moduleimpl_id=None) list_abs_just(etudid, datedebut) [pas de fin ?] list_abs_non_just(etudid, datedebut) [pas de fin ?] list_abs_justifs(etudid, datedebut, datefin=None, only_no_abs=True) list_abs_jour(date, am=True, pm=True, is_abs=None, is_just=None) list_abs_non_just_jour(date, am=True, pm=True) """ import calendar import datetime import dateutil import dateutil.parser import re import time import urllib from xml.etree import ElementTree import flask from flask import g, request from flask import url_for from flask_login import current_user from app.decorators import ( scodoc, scodoc7func, permission_required, admin_required, login_required, permission_required_compat_scodoc7, ) from app.views import absences_bp as bp # --------------- from app.models.absences import BilletAbsence from app.scodoc import sco_utils as scu from app.scodoc import notesdb as ndb from app import log from app.scodoc.scolog import logdb from app.scodoc.sco_permissions import Permission from app.scodoc.sco_exceptions import ScoValueError, APIInvalidParams from app.scodoc.TrivialFormulator import TrivialFormulator from app.scodoc.gen_tables import GenTable from app.scodoc import html_sco_header from app.scodoc import sco_abs from app.scodoc import sco_abs_notification from app.scodoc import sco_abs_views from app.scodoc import sco_cache from app.scodoc import sco_compute_moy from app.scodoc import sco_etud from app.scodoc import sco_excel from app.scodoc import sco_find_etud from app.scodoc import sco_formsemestre from app.scodoc import sco_groups from app.scodoc import sco_groups_view from app.scodoc import sco_moduleimpl from app.scodoc import sco_preferences from app.scodoc import sco_xml CSSSTYLES = html_sco_header.BOOTSTRAP_MULTISELECT_CSS def sco_publish(route, function, permission, methods=["GET"]): """Declare a route for a python function, protected by permission and called following ScoDoc 7 Zope standards. """ return bp.route(route, methods=methods)( scodoc(permission_required(permission)(scodoc7func(function))) ) # -------------------------------------------------------------------- # # ABSENCES (/ScoDoc//Scolarite/Absences/...) # # -------------------------------------------------------------------- @bp.route("/") @bp.route("/index_html") @scodoc @permission_required(Permission.ScoView) @scodoc7func def index_html(): """Gestionnaire absences, page principale""" # crude portage from 1999 DTML sems = sco_formsemestre.do_formsemestre_list() authuser = current_user H = [ html_sco_header.sco_header( page_title="Gestion des absences", cssstyles=["css/calabs.css"], javascripts=["js/calabs.js"], ), """

Gestion des Absences

""", ] if not sems: H.append( """

Aucun semestre défini (ou aucun groupe d'étudiant)

""" ) else: H.append( """