ScoDoc-PE/app/scodoc/html_sidebar.py

186 lines
7.0 KiB
Python
Raw Normal View History

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)
"""
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
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
def sidebar_common():
"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(),
"authuser": current_user.user_name,
2021-02-24 09:18:53 +01:00
}
2020-09-26 16:19:37 +02:00
H = [
2021-08-21 15:17:14 +02:00
f"""<a class="scodoc_title" href="about">ScoDoc 9</a>
2021-07-29 16:48:27 +02:00
<div id="authuser"><a id="authuserlink" href="{
url_for("users.user_info_page", scodoc_dept=g.scodoc_dept, user_name=current_user.user_name)
}">{current_user.user_name}</a>
<br/><a id="deconnectlink" href="{url_for("auth.logout")}">déconnexion</a>
</div>
{sidebar_dept()}
<h2 class="insidebar">Scolarité</h2>
<a href="{scu.ScoURL()}" class="sidebar">Semestres</a> <br/>
<a href="{scu.NotesURL()}" class="sidebar">Programmes</a> <br/>
<a href="{scu.AbsencesURL()}" class="sidebar">Absences</a> <br/>
"""
2020-09-26 16:19:37 +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-07-29 16:48:27 +02:00
f"""<a href="{scu.UsersURL()}" class="sidebar">Utilisateurs</a> <br/>"""
2020-09-26 16:19:37 +02:00
)
if current_user.has_permission(Permission.ScoChangePreferences):
2020-09-26 16:19:37 +02:00
H.append(
2021-07-29 16:48:27 +02:00
f"""<a href="{url_for("scolar.edit_preferences", scodoc_dept=g.scodoc_dept)}" class="sidebar">Paramétrage</a> <br/>"""
2020-09-26 16:19:37 +02:00
)
return "".join(H)
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
from app.scodoc import sco_etud
2021-09-10 21:12:59 +02:00
params = {}
2020-09-26 16:19:37 +02:00
2021-09-10 21:12:59 +02:00
H = [
f"""<div class="sidebar">
{ sidebar_common() }
<div class="box-chercheetud">Chercher étudiant:<br/>
<form method="get" id="form-chercheetud"
action="{ url_for('scolar.search_etud_in_dept', scodoc_dept=g.scodoc_dept) }">
<div><input type="text" size="12" id="in-expnom" name="expnom" spellcheck="false"></input></div>
</form></div>
<div class="etud-insidebar">
"""
]
# ---- 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-08-22 13:24:36 +02:00
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
2020-09-26 16:19:37 +02:00
params.update(etud)
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(
"""<h2 id="insidebar-etud"><a href="%(fiche_url)s" class="sidebar">
<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-09-10 21:12:59 +02:00
cur_sem = etud["cursem"]
nbabs, nbabsjust = sco_abs.get_abs_count(etudid, cur_sem)
nbabsnj = nbabs - nbabsjust
2020-09-26 16:19:37 +02:00
H.append(
2021-09-10 21:12:59 +02:00
f"""<span title="absences du { cur_sem["date_debut"] } au { cur_sem["date_fin"] }">(1/2 j.)
<br/>{ nbabsjust } J., { nbabsnj } N.J.</span>"""
2020-09-26 16:19:37 +02:00
)
H.append("<ul>")
if current_user.has_permission(Permission.ScoAbsChange):
2020-09-26 16:19:37 +02:00
H.append(
2021-09-10 21:12:59 +02:00
f"""
<li><a href="{ url_for('absences.SignaleAbsenceEtud', scodoc_dept=g.scodoc_dept, etudid=etudid) }">Ajouter</a></li>
<li><a href="{ url_for('absences.JustifAbsenceEtud', scodoc_dept=g.scodoc_dept, etudid=etudid) }">Justifier</a></li>
<li><a href="{ url_for('absences.AnnuleAbsenceEtud', scodoc_dept=g.scodoc_dept, etudid=etudid) }">Supprimer</a></li>
2020-09-26 16:19:37 +02:00
"""
)
if sco_preferences.get_preference("handle_billets_abs"):
2020-09-26 16:19:37 +02:00
H.append(
2021-09-10 21:12:59 +02:00
f"""<li><a href="{ url_for('absences.listeBilletsEtud', scodoc_dept=g.scodoc_dept, etudid=etudid) }">Billets</a></li>"""
2020-09-26 16:19:37 +02:00
)
H.append(
2021-09-10 21:12:59 +02:00
f"""
<li><a href="{ url_for('absences.CalAbs', scodoc_dept=g.scodoc_dept, etudid=etudid) }">Calendrier</a></li>
<li><a href="{ url_for('absences.ListeAbsEtud', scodoc_dept=g.scodoc_dept, etudid=etudid) }">Liste</a></li>
</ul>
2020-09-26 16:19:37 +02:00
"""
)
else:
pass # H.append("(pas d'étudiant en cours)")
# ---------
2021-08-22 19:30:58 +02:00
H.append("</div>") # /etud-insidebar
2020-09-26 16:19:37 +02:00
# Logo
H.append(
2021-09-10 21:12:59 +02:00
f"""<div class="logo-insidebar">
2021-09-11 15:59:06 +02:00
<div class="sidebar-bottom"><a href="{ url_for( 'scodoc.about', scodoc_dept=g.scodoc_dept ) }" class="sidebar">À propos</a><br/>
2021-09-10 21:12:59 +02:00
<a href="{ scu.SCO_USER_MANUAL }" target="_blank" class="sidebar">Aide</a>
</div></div>
2021-09-11 15:59:06 +02:00
<div class="logo-logo"><a href= { url_for( 'scodoc.about', scodoc_dept=g.scodoc_dept ) }
2021-09-10 21:12:59 +02:00
">{ scu.icontag("scologo_img", no_size=True) }</a>
</div>
</div>
<!-- end of sidebar -->
"""
2021-08-22 19:30:58 +02:00
)
2020-09-26 16:19:37 +02:00
return "".join(H)
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 = [
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
]
dept_intranet_url = sco_preferences.get_preference("DeptIntranetURL")
if dept_intranet_url:
2020-09-26 16:19:37 +02:00
H.append(
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)