forked from ScoDoc/DocScoDoc
Export des annotations sur des groupes d'étudiants. Closes #327
This commit is contained in:
parent
912ee8b4da
commit
577cac00ee
96
app/scodoc/sco_groups_exports.py
Normal file
96
app/scodoc/sco_groups_exports.py
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# -*- mode: python -*-
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Gestion scolarite IUT
|
||||||
|
#
|
||||||
|
# Copyright (c) 1999 - 2022 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
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
"""Exports groupes
|
||||||
|
"""
|
||||||
|
from flask import request
|
||||||
|
|
||||||
|
from app.scodoc import notesdb as ndb
|
||||||
|
from app.scodoc import sco_excel
|
||||||
|
from app.scodoc import sco_groups_view
|
||||||
|
from app.scodoc import sco_preferences
|
||||||
|
from app.scodoc.gen_tables import GenTable
|
||||||
|
import app.scodoc.sco_utils as scu
|
||||||
|
import sco_version
|
||||||
|
|
||||||
|
|
||||||
|
def groups_list_annotation(group_ids: list[int]) -> list[dict]:
|
||||||
|
"""Renvoie la liste des annotations pour les groupes d"étudiants indiqués
|
||||||
|
Arg: liste des id de groupes
|
||||||
|
Clés: etudid, ine, nip, nom, prenom, date, comment
|
||||||
|
"""
|
||||||
|
cnx = ndb.GetDBConnexion()
|
||||||
|
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||||
|
annotations = []
|
||||||
|
for group_id in group_ids:
|
||||||
|
cursor.execute(
|
||||||
|
"""SELECT i.id AS etudid, i.code_nip, i.code_ine, i.nom, i.prenom, ea.date, ea.comment
|
||||||
|
FROM group_membership gm, identite i, etud_annotations ea
|
||||||
|
WHERE gm.group_id=%(group_ids)s
|
||||||
|
AND gm.etudid=i.id
|
||||||
|
AND i.id=ea.etudid
|
||||||
|
""",
|
||||||
|
{"group_ids": group_id},
|
||||||
|
)
|
||||||
|
annotations += cursor.dictfetchall()
|
||||||
|
return annotations
|
||||||
|
|
||||||
|
|
||||||
|
def groups_export_annotations(group_ids, formsemestre_id=None, format="html"):
|
||||||
|
"""Les annotations"""
|
||||||
|
groups_infos = sco_groups_view.DisplayedGroupsInfos(
|
||||||
|
group_ids, formsemestre_id=formsemestre_id
|
||||||
|
)
|
||||||
|
annotations = groups_list_annotation(groups_infos.group_ids)
|
||||||
|
for annotation in annotations:
|
||||||
|
annotation["date_str"] = annotation["date"].strftime("%d/%m/%Y à %Hh%M")
|
||||||
|
if format == "xls":
|
||||||
|
columns_ids = ("etudid", "nom", "prenom", "date", "comment")
|
||||||
|
else:
|
||||||
|
columns_ids = ("etudid", "nom", "prenom", "date_str", "comment")
|
||||||
|
table = GenTable(
|
||||||
|
rows=annotations,
|
||||||
|
columns_ids=columns_ids,
|
||||||
|
titles={
|
||||||
|
"etudid": "etudid",
|
||||||
|
"nom": "Nom",
|
||||||
|
"prenom": "Prénom",
|
||||||
|
"date": "Date",
|
||||||
|
"date_str": "Date",
|
||||||
|
"comment": "Annotation",
|
||||||
|
},
|
||||||
|
origin="Généré par %s le " % sco_version.SCONAME
|
||||||
|
+ scu.timedate_human_repr()
|
||||||
|
+ "",
|
||||||
|
page_title=f"Annotations sur les étudiants de {groups_infos.groups_titles}",
|
||||||
|
caption="Annotations",
|
||||||
|
base_url=groups_infos.base_url,
|
||||||
|
html_sortable=True,
|
||||||
|
html_class="table_leftalign",
|
||||||
|
preferences=sco_preferences.SemPreferences(formsemestre_id),
|
||||||
|
)
|
||||||
|
return table.make_page(format=format)
|
@ -826,6 +826,8 @@ def tab_absences_html(groups_infos, etat=None):
|
|||||||
% groups_infos.groups_query_args,
|
% groups_infos.groups_query_args,
|
||||||
"""<li><a class="stdlink" href="trombino?%s&format=pdflist">Liste d'appel avec photos</a></li>"""
|
"""<li><a class="stdlink" href="trombino?%s&format=pdflist">Liste d'appel avec photos</a></li>"""
|
||||||
% groups_infos.groups_query_args,
|
% groups_infos.groups_query_args,
|
||||||
|
"""<li><a class="stdlink" href="groups_export_annotations?%s">Liste des annotations</a></li>"""
|
||||||
|
% groups_infos.groups_query_args,
|
||||||
"</ul>",
|
"</ul>",
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
@ -810,7 +810,7 @@ def abbrev_prenom(prenom):
|
|||||||
|
|
||||||
#
|
#
|
||||||
def timedate_human_repr():
|
def timedate_human_repr():
|
||||||
"representation du temps courant pour utilisateur: a localiser"
|
"representation du temps courant pour utilisateur"
|
||||||
return time.strftime("%d/%m/%Y à %Hh%M")
|
return time.strftime("%d/%m/%Y à %Hh%M")
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,8 +68,6 @@ from app.scodoc.TrivialFormulator import TrivialFormulator, tf_error_message
|
|||||||
import app
|
import app
|
||||||
from app.scodoc.gen_tables import GenTable
|
from app.scodoc.gen_tables import GenTable
|
||||||
from app.scodoc import html_sco_header
|
from app.scodoc import html_sco_header
|
||||||
from app.scodoc import html_sidebar
|
|
||||||
from app.scodoc import imageresize
|
|
||||||
from app.scodoc import sco_import_etuds
|
from app.scodoc import sco_import_etuds
|
||||||
from app.scodoc import sco_abs
|
from app.scodoc import sco_abs
|
||||||
from app.scodoc import sco_archives_etud
|
from app.scodoc import sco_archives_etud
|
||||||
@ -87,12 +85,9 @@ from app.scodoc import sco_formsemestre_edit
|
|||||||
from app.scodoc import sco_formsemestre_inscriptions
|
from app.scodoc import sco_formsemestre_inscriptions
|
||||||
from app.scodoc import sco_groups
|
from app.scodoc import sco_groups
|
||||||
from app.scodoc import sco_groups_edit
|
from app.scodoc import sco_groups_edit
|
||||||
|
from app.scodoc import sco_groups_exports
|
||||||
from app.scodoc import sco_groups_view
|
from app.scodoc import sco_groups_view
|
||||||
from app.scodoc import sco_logos
|
|
||||||
from app.scodoc import sco_news
|
|
||||||
from app.scodoc import sco_page_etud
|
from app.scodoc import sco_page_etud
|
||||||
from app.scodoc import sco_parcours_dut
|
|
||||||
from app.scodoc import sco_permissions
|
|
||||||
from app.scodoc import sco_permissions_check
|
from app.scodoc import sco_permissions_check
|
||||||
from app.scodoc import sco_photos
|
from app.scodoc import sco_photos
|
||||||
from app.scodoc import sco_portal_apogee
|
from app.scodoc import sco_portal_apogee
|
||||||
@ -364,6 +359,12 @@ sco_publish(
|
|||||||
methods=["GET", "POST"],
|
methods=["GET", "POST"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
sco_publish(
|
||||||
|
"/groups_export_annotations",
|
||||||
|
sco_groups_exports.groups_export_annotations,
|
||||||
|
Permission.ScoView,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/groups_view")
|
@bp.route("/groups_view")
|
||||||
@scodoc
|
@scodoc
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- mode: python -*-
|
# -*- mode: python -*-
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
SCOVERSION = "9.1.69"
|
SCOVERSION = "9.1.70"
|
||||||
|
|
||||||
SCONAME = "ScoDoc"
|
SCONAME = "ScoDoc"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user