2020-09-26 16:19:37 +02:00
|
|
|
# -*- mode: python -*-
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
#
|
|
|
|
# Gestion scolarite IUT
|
|
|
|
#
|
2021-01-01 17:51:08 +01:00
|
|
|
# Copyright (c) 1999 - 2021 Emmanuel Viennet. All rights reserved.
|
2020-09-26 16:19:37 +02:00
|
|
|
#
|
|
|
|
# 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
|
|
|
|
#
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
"""
|
|
|
|
Génération de la "sidebar" (marge gauche des pages HTML)
|
|
|
|
"""
|
2021-07-29 16:31:15 +02:00
|
|
|
from flask import url_for
|
|
|
|
from flask import g
|
|
|
|
from flask import request
|
|
|
|
from flask_login import current_user
|
2020-09-26 16:19:37 +02:00
|
|
|
|
2021-06-19 23:21:37 +02:00
|
|
|
import app.scodoc.sco_utils as scu
|
|
|
|
from app.scodoc import sco_preferences
|
|
|
|
from app.scodoc.sco_permissions import Permission
|
|
|
|
|
2020-09-26 16:19:37 +02:00
|
|
|
|
2021-07-29 16:31:15 +02:00
|
|
|
def sidebar_common():
|
2021-07-03 23:35:32 +02:00
|
|
|
"partie commune à toutes les sidebar"
|
2021-02-24 09:18:53 +01:00
|
|
|
params = {
|
2021-06-15 12:34:33 +02:00
|
|
|
"ScoURL": scu.ScoURL(),
|
|
|
|
"UsersURL": scu.UsersURL(),
|
|
|
|
"NotesURL": scu.NotesURL(),
|
|
|
|
"AbsencesURL": scu.AbsencesURL(),
|
2021-07-03 23:35:32 +02:00
|
|
|
"LogoutURL": url_for("auth.logout"),
|
2021-07-29 16:31:15 +02:00
|
|
|
"authuser": current_user.user_name,
|
2021-02-24 09:18:53 +01:00
|
|
|
}
|
2020-09-26 16:19:37 +02:00
|
|
|
H = [
|
2021-06-28 10:45:00 +02:00
|
|
|
'<a class="scodoc_title" href="about">ScoDoc 8</a>',
|
2021-07-03 23:35:32 +02:00
|
|
|
'<div id="authuser"><a id="authuserlink" href="%(ScoURL)s/Users/user_info_page">%(authuser)s</a><br/><a id="deconnectlink" href="%(LogoutURL)s">déconnexion</a></div>'
|
2020-09-26 16:19:37 +02:00
|
|
|
% params,
|
2021-07-29 16:31:15 +02:00
|
|
|
sidebar_dept(),
|
|
|
|
"""<h2 class="insidebar">Scolarité</h2>
|
2020-09-26 16:19:37 +02:00
|
|
|
<a href="%(ScoURL)s" class="sidebar">Semestres</a> <br/>
|
2021-02-24 09:18:53 +01:00
|
|
|
<a href="%(NotesURL)s" class="sidebar">Programmes</a> <br/>
|
|
|
|
<a href="%(AbsencesURL)s" class="sidebar">Absences</a> <br/>
|
2020-09-26 16:19:37 +02:00
|
|
|
"""
|
|
|
|
% params,
|
|
|
|
]
|
|
|
|
|
2021-07-29 16:31:15 +02:00
|
|
|
if current_user.has_permission(
|
|
|
|
Permission.ScoUsersAdmin
|
|
|
|
) or current_user.has_permission(Permission.ScoUsersView):
|
2020-09-26 16:19:37 +02:00
|
|
|
H.append(
|
2021-02-24 09:18:53 +01:00
|
|
|
"""<a href="%(UsersURL)s" class="sidebar">Utilisateurs</a> <br/>""" % params
|
2020-09-26 16:19:37 +02:00
|
|
|
)
|
|
|
|
|
2021-07-29 16:31:15 +02:00
|
|
|
if current_user.has_permission(Permission.ScoChangePreferences):
|
2020-09-26 16:19:37 +02:00
|
|
|
H.append(
|
|
|
|
"""<a href="%(ScoURL)s/edit_preferences" class="sidebar">Paramétrage</a> <br/>"""
|
|
|
|
% params
|
|
|
|
)
|
|
|
|
|
|
|
|
return "".join(H)
|
|
|
|
|
|
|
|
|
2021-07-29 16:31:15 +02:00
|
|
|
def sidebar():
|
2020-09-26 16:19:37 +02:00
|
|
|
"Main HTML page sidebar"
|
|
|
|
# rewritten from legacy DTML code
|
2021-07-19 19:53:01 +02:00
|
|
|
from app.scodoc import sco_abs
|
2021-06-19 23:21:37 +02:00
|
|
|
from app.scodoc import sco_etud
|
|
|
|
|
2021-07-11 17:37:12 +02:00
|
|
|
params = {
|
|
|
|
"ScoURL": scu.ScoURL(),
|
|
|
|
"SCO_USER_MANUAL": scu.SCO_USER_MANUAL,
|
|
|
|
}
|
2020-09-26 16:19:37 +02:00
|
|
|
|
2021-07-29 16:31:15 +02:00
|
|
|
H = ['<div class="sidebar">', sidebar_common()]
|
2020-09-26 16:19:37 +02:00
|
|
|
|
|
|
|
H.append(
|
|
|
|
"""<div class="box-chercheetud">Chercher étudiant:<br/>
|
2021-02-18 08:07:21 +01:00
|
|
|
<form method="get" id="form-chercheetud" action="%(ScoURL)s/search_etud_in_dept">
|
2021-02-15 15:15:56 +01:00
|
|
|
<div><input type="text" size="12" id="in-expnom" name="expnom" spellcheck="false"></input></div>
|
2020-09-26 16:19:37 +02:00
|
|
|
</form></div>
|
|
|
|
<div class="etud-insidebar">
|
|
|
|
"""
|
|
|
|
% params
|
|
|
|
)
|
2021-07-29 16:31:15 +02:00
|
|
|
# ---- Il y-a-t-il un etudiant selectionné ?
|
|
|
|
etudid = None
|
|
|
|
if request.method == "GET":
|
|
|
|
etudid = request.args.get("etudid", None)
|
|
|
|
elif request.method == "POST":
|
|
|
|
etudid = request.form.get("etudid", None)
|
|
|
|
|
|
|
|
if etudid:
|
2021-06-19 23:21:37 +02:00
|
|
|
etud = sco_etud.get_etud_info(filled=1, etudid=etudid)[0]
|
2020-09-26 16:19:37 +02:00
|
|
|
params.update(etud)
|
2021-07-11 17:37:12 +02:00
|
|
|
params["fiche_url"] = url_for(
|
|
|
|
"scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid
|
|
|
|
)
|
2020-09-26 16:19:37 +02:00
|
|
|
# compte les absences du semestre en cours
|
|
|
|
H.append(
|
2021-07-11 17:37:12 +02:00
|
|
|
"""<h2 id="insidebar-etud"><a href="%(fiche_url)s" class="sidebar">
|
2021-02-13 17:28:55 +01:00
|
|
|
<font color="#FF0000">%(civilite_str)s %(nom_disp)s</font></a>
|
2020-09-26 16:19:37 +02:00
|
|
|
</h2>
|
|
|
|
<b>Absences</b>"""
|
|
|
|
% params
|
|
|
|
)
|
|
|
|
if etud["cursem"]:
|
2021-07-19 19:53:01 +02:00
|
|
|
params["nbabs"], params["nbabsjust"] = sco_abs.get_abs_count(
|
|
|
|
etudid, etud["cursem"]
|
|
|
|
)
|
2020-09-26 16:19:37 +02:00
|
|
|
params["nbabsnj"] = params["nbabs"] - params["nbabsjust"]
|
|
|
|
params["date_debut"] = etud["cursem"]["date_debut"]
|
|
|
|
params["date_fin"] = etud["cursem"]["date_fin"]
|
|
|
|
H.append(
|
|
|
|
"""<span title="absences du %(date_debut)s au %(date_fin)s">(1/2 j.)<br/>%(nbabsjust)s J., %(nbabsnj)s N.J.</span>"""
|
|
|
|
% params
|
|
|
|
)
|
|
|
|
|
|
|
|
H.append("<ul>")
|
2021-07-29 16:31:15 +02:00
|
|
|
if current_user.has_permission(Permission.ScoAbsChange):
|
2020-09-26 16:19:37 +02:00
|
|
|
H.append(
|
|
|
|
"""
|
|
|
|
<li> <a href="%(ScoURL)s/Absences/SignaleAbsenceEtud?etudid=%(etudid)s">Ajouter</a></li>
|
|
|
|
<li> <a href="%(ScoURL)s/Absences/JustifAbsenceEtud?etudid=%(etudid)s">Justifier</a></li>
|
|
|
|
<li> <a href="%(ScoURL)s/Absences/AnnuleAbsenceEtud?etudid=%(etudid)s">Supprimer</a></li>
|
|
|
|
"""
|
|
|
|
% params
|
|
|
|
)
|
2021-07-28 17:03:54 +02:00
|
|
|
if sco_preferences.get_preference("handle_billets_abs"):
|
2020-09-26 16:19:37 +02:00
|
|
|
H.append(
|
|
|
|
"""<li> <a href="%(ScoURL)s/Absences/listeBilletsEtud?etudid=%(etudid)s">Billets</a></li>"""
|
|
|
|
% params
|
|
|
|
)
|
|
|
|
H.append(
|
|
|
|
"""
|
|
|
|
<li> <a href="%(ScoURL)s/Absences/CalAbs?etudid=%(etudid)s">Calendrier</a></li>
|
|
|
|
<li> <a href="%(ScoURL)s/Absences/ListeAbsEtud?etudid=%(etudid)s">Liste</a></li>
|
|
|
|
</ul>
|
|
|
|
"""
|
|
|
|
% params
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
pass # H.append("(pas d'étudiant en cours)")
|
|
|
|
# ---------
|
|
|
|
H.append("</div><br/> ") # /etud-insidebar
|
|
|
|
# Logo
|
2021-02-04 20:02:44 +01:00
|
|
|
scologo_img = scu.icontag("scologo_img")
|
2020-09-26 16:19:37 +02:00
|
|
|
H.append('<div class="logo-insidebar"><div class="logo-logo">%s<br/>' % scologo_img)
|
|
|
|
H.append(
|
|
|
|
"""<a href="%(ScoURL)s/about" class="sidebar">A propos</a><br/>
|
|
|
|
<a href="%(SCO_USER_MANUAL)s" class="sidebar">Aide</a><br/>
|
|
|
|
</div></div>
|
|
|
|
|
|
|
|
</div> <!-- end of sidebar -->
|
|
|
|
"""
|
|
|
|
% params
|
|
|
|
) # '
|
|
|
|
#
|
|
|
|
return "".join(H)
|
|
|
|
|
|
|
|
|
2021-07-29 16:31:15 +02:00
|
|
|
def sidebar_dept():
|
2021-01-01 18:40:47 +01:00
|
|
|
"""Partie supérieure de la marge de gauche"""
|
2020-09-26 16:19:37 +02:00
|
|
|
H = [
|
2021-07-29 16:31:15 +02:00
|
|
|
f"""<h2 class="insidebar">Dépt. {sco_preferences.get_preference("DeptName")}</h2>
|
|
|
|
<a href="{url_for("scodoc.index")}" class="sidebar">Accueil</a> <br/> """
|
2020-09-26 16:19:37 +02:00
|
|
|
]
|
2021-07-29 16:31:15 +02:00
|
|
|
dept_intranet_url = sco_preferences.get_preference("DeptIntranetURL")
|
|
|
|
if dept_intranet_url:
|
2020-09-26 16:19:37 +02:00
|
|
|
H.append(
|
2021-07-29 16:31:15 +02:00
|
|
|
f"""<a href="{dept_intranet_url}" class="sidebar">{
|
|
|
|
sco_preferences.get_preference("DeptIntranetTitle")}</a> <br/>"""
|
2020-09-26 16:19:37 +02:00
|
|
|
)
|
2021-07-09 13:21:34 +02:00
|
|
|
# Entreprises pas encore supporté en ScoDoc8
|
|
|
|
# H.append(
|
|
|
|
# """<br/><a href="%(ScoURL)s/Entreprises" class="sidebar">Entreprises</a> <br/>"""
|
|
|
|
# % infos
|
|
|
|
# )
|
2020-09-26 16:19:37 +02:00
|
|
|
return "\n".join(H)
|