[scodoc-devel] [SVN] Scolar : [1777] Avis de poursuite d'Etude (Cleo)

eviennet at lipn.univ-paris13.fr eviennet at lipn.univ-paris13.fr
Jeu 26 Avr 14:04:18 CEST 2018


Une pièce jointe HTML a été nettoyée...
URL: https://listes.univ-paris13.fr/pipermail/scodoc-devel/attachments/20180426/ad741c7b/attachment.htm 
-------------- section suivante --------------
Modified: branches/ScoDoc7/pe_avislatex.py
===================================================================
--- branches/ScoDoc7/pe_avislatex.py	2018-04-19 13:38:03 UTC (rev 1776)
+++ branches/ScoDoc7/pe_avislatex.py	2018-04-26 12:04:18 UTC (rev 1777)
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2018 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2018 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
@@ -39,6 +39,7 @@
 import scolars
 
 import pe_jurype, pe_tagtable, pe_tools
+from gen_tables import GenTable, SeqGenTable
 
 DEBUG = False # Pour debug et repérage des prints à changer en Log
 
@@ -367,4 +368,56 @@
                 template_latex = get_code_latex_from_modele(p)
             else:
                 template_latex = ''  # fallback: avis vides
-        return template_latex
\ No newline at end of file
+        return template_latex
+
+# ----------------------------------------------------------------------------------------
+def table_syntheseAnnotationPE(context, syntheseJury, tag_annotation_pe):
+    """Génère un fichier excel synthétisant les annotations PE telles qu'inscrites dans les fiches de chaque étudiant
+    """
+    sT = SeqGenTable() # le fichier excel à générer
+
+    # Les etudids des étudiants à afficher, triés par ordre alphabétiques de nom+prénom
+    donnees_tries = sorted( [ (etudid, syntheseJury[etudid]['nom'] + ' ' + syntheseJury[etudid]['prenom']) for etudid in syntheseJury.keys()], key=lambda c: c[1] )
+    etudids = [e[0] for e in donnees_tries]
+    if not etudids: #Si pas d'étudiants
+        T = GenTable( columns_ids=["pas d'étudiants"], rows=[ ], titles={"pas d'étudiants" : "pas d'étudiants"}, html_sortable=True, xls_sheet_name="dut" )
+        sT.add_genTable("Annotation PE", T)
+        return sT
+
+    # Si des étudiants
+    maxParcours = max( [syntheseJury[etudid]['nbSemestres'] for etudid in etudids] ) # le nombre de semestre le + grand
+
+    infos = ['sexe', 'nom', 'prenom', 'age', 'nbSemestres' ]
+    entete = ['etudid']
+    entete.extend( infos )
+    entete.extend(['P%d' % i for i in range(1, maxParcours + 1)])  # ajout du parcours
+    entete.append("Annotation PE")
+    columns_ids = entete  # les id et les titres de colonnes sont ici identiques
+    titles = {i: i for i in columns_ids}
+
+    rows = []
+    for etudid in etudids:  # parcours des étudiants par ordre alphabétique des nom+prénom
+        e = syntheseJury[etudid]
+        # Les info générales:
+        row = {
+                'etudid': etudid,
+                'sexe': e['sexe'],
+                'nom': e['nom'],
+                'prenom': e['prenom'],
+                'age': e['age'],
+                'nbSemestres': e['nbSemestres']
+            }
+        # Les parcours: P1, P2, ...
+        n = 1
+        for p in e['parcours']:
+            row['P%d' % n] = p['titreannee']
+            n += 1
+
+        # L'annotation PE
+        annotationPE = get_annotation_PE(context, etudid, tag_annotation_pe=tag_annotation_pe)
+        row["Annotation PE"] = annotationPE.encode(SCO_ENCODING) if annotationPE else ""
+        rows.append(row)
+
+    T = GenTable(columns_ids=columns_ids, rows=rows, titles=titles, html_sortable=True, xls_sheet_name="Annotation PE")
+    sT.add_genTable("Annotation PE", T)
+    return sT

Modified: branches/ScoDoc7/pe_jurype.py
===================================================================
--- branches/ScoDoc7/pe_jurype.py	2018-04-19 13:38:03 UTC (rev 1776)
+++ branches/ScoDoc7/pe_jurype.py	2018-04-26 12:04:18 UTC (rev 1777)
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2018 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2018 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
@@ -152,7 +152,7 @@
         # self.add_file_to_zip(filename, self.xls.excel())
 
         # Fabrique 1 fichier excel résultat avec 1 seule feuille => trop gros
-        filename = self.NOM_EXPORT_ZIP + "jurySyntheseDict_" + str(self.diplome) + '_v2.xls'
+        filename = self.NOM_EXPORT_ZIP + "_jurySyntheseDict" + '.xls'
         self.xlsV2 = self.table_syntheseJury(mode="multiplesheet")
         if self.xlsV2:
             self.add_file_to_zip(filename, self.xlsV2.excel())
@@ -734,7 +734,9 @@
         """
         sT = SeqGenTable() # le fichier excel à générer
 
-        etudids =  self.syntheseJury.keys()
+        # Les etudids des étudiants à afficher, triés par ordre alphabétiques de nom+prénom
+        donnees_tries = sorted( [ (etudid, self.syntheseJury[etudid]['nom'] + ' ' + self.syntheseJury[etudid]['prenom']) for etudid in self.syntheseJury.keys()], key=lambda c: c[1] )
+        etudids = [e[0] for e in donnees_tries]
         if not etudids: #Si pas d'étudiants
             T = GenTable( columns_ids=["pas d'étudiants"], rows=[ ], titles={"pas d'étudiants" : "pas d'étudiants"}, html_sortable=True, xls_sheet_name="dut" )
             sT.add_genTable("dut", T)
@@ -749,11 +751,13 @@
         entete.extend( [ 'P%d' % i for i in range(1,maxParcours+1) ] )
         champs = ['note', 'class groupe', 'class promo' , 'min/moy/max groupe', 'min/moy/max promo']
 
+        # Les aggrégats à afficher par ordre tel que indiqué dans le dictionnaire parcours
         aggregats = JuryPE.PARCOURS.keys()# ['S1', 'S2', ..., '1A', '4S']
         aggregats = sorted(aggregats, key=lambda t: JuryPE.PARCOURS[t]['ordre']) # Tri des aggrégats
 
         if mode == "multiplesheet":
             allSheets = self.get_allTagInSyntheseJury() # tous les tags de syntheseJuryDict
+            allSheets = sorted(allSheets) # Tri des tags par ordre alphabétique
             for sem in aggregats: # JuryPE.PARCOURS.keys() -> ['S1', 'S2', ..., '1A', '4S']
                 entete.extend( ['%s %s' % (sem, champ) for champ in champs] )
         else: # "singlesheet"

Modified: branches/ScoDoc7/pe_view.py
===================================================================
--- branches/ScoDoc7/pe_view.py	2018-04-19 13:38:03 UTC (rev 1776)
+++ branches/ScoDoc7/pe_view.py	2018-04-26 12:04:18 UTC (rev 1777)
@@ -61,8 +61,7 @@
         <br/>
         De nombreux aspects sont paramétrables: 
         <a href="https://trac.lipn.univ-paris13.fr/projects/scodoc/wiki/AvisPoursuiteEtudes">
-        voir la documentation
-        </a>.
+        voir la documentation</a>.
         </p>
         <form method="post" action="pe_view_sem_recap" id="pe_view_sem_recap_form" enctype="multipart/form-data">
         <div class="pe_template_up">
@@ -136,6 +135,11 @@
         context, formsemestre_id,
         champ='pe_tag_annotation_avis_latex')
 
+    # Ajout des annotations PE dans un fichier excel
+    sT = pe_avislatex.table_syntheseAnnotationPE(context, jury.syntheseJury, tag_annotation_pe)
+    if sT:
+        jury.add_file_to_zip(jury.NOM_EXPORT_ZIP + "_annotationsPE.xls", sT.excel())
+
     latex_pages = {}  # Dictionnaire de la forme nom_fichier => contenu_latex
     for etudid in etudids:
         [nom_fichier, contenu_latex] = pe_avislatex.get_avis_poursuite_par_etudiant(


Plus d'informations sur la liste de diffusion scodoc-devel