[Scodoc-devel] [SVN] Scolar : [1533] Bacs et abreviations dans table recap

eviennet at lipn.univ-paris13.fr eviennet at lipn.univ-paris13.fr
Lun 18 Juil 16:40:49 CEST 2016


Une pièce jointe HTML a été nettoyée...
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20160718/e3ca37a2/attachment.html>
-------------- section suivante --------------
Modified: branches/ScoDoc7/ZNotes.py
===================================================================
--- branches/ScoDoc7/ZNotes.py	2016-07-18 07:20:38 UTC (rev 1532)
+++ branches/ScoDoc7/ZNotes.py	2016-07-18 14:40:49 UTC (rev 1533)
@@ -2089,7 +2089,7 @@
         pas besoin d'être rentrées.
         </p>
         """
-        mod_descr = '<a href="moduleimpl_status?moduleimpl_id=%s">%s %s</a>%s' % (moduleimpl_id, Mod['code'], Mod['titre'], link)
+        mod_descr = '<a href="moduleimpl_status?moduleimpl_id=%s">%s %s</a> %s' % (moduleimpl_id, Mod['code'], Mod['titre'], link)
         if not readonly:
             H = ['<h3>%svaluation en %s</h3>' % (action, mod_descr) ]
         else:

Added: branches/ScoDoc7/sco_bac.py
===================================================================
--- branches/ScoDoc7/sco_bac.py	                        (rev 0)
+++ branches/ScoDoc7/sco_bac.py	2016-07-18 14:40:49 UTC (rev 1533)
@@ -0,0 +1,133 @@
+# -*- mode: python -*-
+# -*- coding: utf-8 -*-
+
+##############################################################################
+#
+# Gestion scolarite IUT
+#
+# Copyright (c) 2001 - 2016 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 at viennet.net
+#
+##############################################################################
+
+"""Bacs: noms de séries et spécialités, nomenclatures, abbréviations
+
+Types prédéfinis:
+G bacs généraux (S, L, ES, ...)
+T bacs technologiques (STI2D, STG, ...)
+P bacs professionnels
+E diplômes étrangers (équivalences)
+X divers
+"""
+for k in BACS_SSP:
+...     if len(BACS_SSP[k]) != 2:
+...             print k, len(BACS_SSP[k])
+
+
+
+_BACS = ( # tuples (bac, specialite, abbrev, type
+    # --- Reçus d'APB de 2013 à 2015 (tel qu'observé à IUTV)
+    #  merci d'envoyer vos mises à jour
+    ("A1 LETTRES-SCIENCES", '', 'A1', 'G'),
+    ("B ECONOMIQUE ET SOCIAL", '', 'B', 'G'),
+    ("B", "ÉCONOMIQUE ET SOCIAL", 'B', 'G'),
+    ("C MATHÉMATIQUES ET SCIENCES PHYSIQUES", '', 'C', 'G'),
+    ("C MATHEMATIQUES ET SCIENCES PHYSIQUES", '', 'C', 'G'),
+    ("L LITTERATURE", '', 'L', 'G'),
+    ("L LITTÉRATURE", '', 'L', 'G'),
+    ("L LITTÉRATURE", 'LITTÉRATURE', 'L', 'G'),
+    ("L", "LITTÉRATURE", 'L', 'G'),
+    ("S", 'SCIENTIFIQUE', 'S', 'G'),
+    ("S SCIENTIFIQUE", '', 'S', 'G'),
+    ("S SCIENTIFIQUE", 'SCIENTIFIQUE', 'S', 'G'),
+    ("ES ECONOMIQUE ET SOCIAL", '', 'ES', 'G'),
+    ("ES ECONOMIQUE ET SOCIAL", "ECONOMIQUE ET SOCIAL", 'ES', 'G'),
+    ("ES", "ECONOMIQUE ET SOCIAL", 'ES', 'G'),
+    
+    ("0000 SANS BAC", '', 'SANS', 'X'),
+    ("0001 BAC INTERNATIONAL", '', 'Int.', 'X'),
+    ("0021 BACS PROFESSIONNELS INDUSTRIELS", '', 'Pro I', 'P'),
+    ("0021", "BACS PROFESSIONNELS INDUSTRIELS", 'Pro I', 'P'),
+    ("0022 BACS PROFESSIONNELS TERTIAIRES", '', 'Pro T', 'P'),
+    ("0022", "BACS PROFESSIONNELS TERTIAIRES", 'Pro T', 'P'),
+    ("0030 CAPACITE DE DROIT", '', 'C.D.', 'X'),
+    ("0030 CAPACITÉ DE DROIT", '', 'C.D.', 'X'),
+    ("0031 TITRE ÉTRANGER ADMIS EN ÉQUIVALENCE", '', 'Etr.', 'E'), # accentué
+    ("0031 TITRE ETRANGER ADMIS EN EQUIVALENCE", '', 'Etr.', 'E'), # non acc
+    ("0031 TITRE ETRANGER ADMIS EN EQUIVALENCE", 'TITRE ETRANGER ADMIS EN EQUIVALENCE', 'Etr.', 'E'),
+    ("0031", "TITRE ÉTRANGER ADMIS EN ÉQUIVALENCE", 'Etr.', 'E'),
+    ("0032 TITRE FRANCAIS ADMIS EN DISPENSE", '', 'Disp.', 'X'),  
+    ("0032", "TITRE FRANCAIS ADMIS EN DISPENSE", 'Disp.', 'X'),  
+    ("0033 DAEU A OU ESEU A", '', 'DAEU', 'X'),
+    ("0034 DAEU B OU ESEU B", '', 'DAEU', 'X'),
+    ("0036 VALIDATION ETUDES EXPERIENCES PROF.", '', 'VAE', 'X'),
+    ("0036", "VALIDATION ÉTUDES EXPÉRIENCES PROF.", 'VAE', 'X'),
+    ("0037 AUTRES CAS DE NON BACHELIERS", '', 'Non', 'X'),
+    ("ST DE L'AGRONOMIE ET DU VIVANT", '', 'STAV', 'T'),
+    ("ST DE L'INDUSTRIE ET DU DEVT DURABLE", '', 'STI2D', 'T'),
+    ("ST DU MANAGEMENT ET DE LA GESTION", '', 'STMG', 'T'),
+    ("ST2S SCIENCES ET TECHNO SANTE ET SOCIAL", '', 'ST2S', 'T'),
+    ("ST2S", "SCIENCES ET TECHNO SANTÉ ET SOCIAL", 'ST2S', 'T'),
+    ("STI SCIENCES ET TECHNIQUES INDUSTRIELLES", '', 'STI', 'T'),
+    ("STI SCIENCES ET TECHNIQUES INDUSTRIELLES", "SCIENCES ET TECHNIQUES INDUSTRIELLES", 'STI', 'T'),
+    ("STI", "SCIENCES ET TECHNIQUES INDUSTRIELLES", 'STI', 'T'),    
+    ("STG SCIENCES ET TECHNOLOGIES DE GESTION", '', 'STG', 'T'),
+    ("STG SCIENCES ET TECHNOLOGIES DE GESTION", "SCIENCES ET TECHNOLOGIES DE GESTION", 'STG', 'T'),
+    ("STG", "SCIENCES ET TECHNOLOGIES DE GESTION", 'STG', 'T'),
+    ("STL", "SCIENCES ET TECHNO. DE LABORATOIRE", 'STL', 'T'),
+    ("STL SCIENCES ET TECHNO. DE LABORATOIRE", '', 'STL', 'T'),
+    ("STT SCIENCES ET TECHNOLOGIES TERTIAIRES", '', 'STT', 'T'),
+    ("STT", "SCIENCES ET TECHNOLOGIES TERTIAIRES", 'STT', 'T'),
+    ("SMS SCIENCES MEDICO-SOCIALES", '', 'SMS', 'T'), # XXX techno ou pro ? 
+    ("SMS SCIENCES MÉDICO-SOCIALES", '', 'SMS', 'T'), # XXX techno ou pro ? 
+    ("G1 TECHNIQUES ADMINISTRATIVES", '', 'G1', 'T'), 
+    ("G2 TECHNIQUES QUANTITATIVES DE GESTION", '', 'G2', 'T'),
+    ("G2 TECHNIQUES QUANTITATIVES DE GESTION", 'TECHNIQUES QUANTITATIVES DE GESTION', 'G2', 'T'),
+    ("G3", "TECHNIQUES COMMERCIALES", "G3", 'T'),
+    ("HOT", 'HÔTELLERIE', 'HOT', 'P'),
+    )
+
+# { (bac, specialite) : (abbrev, type) }
+BACS_SSP = { 
+    (t[0], t[1]) : t[2:] for t in _BACS 
+}
+
+
+class Baccalaureat:
+    def __init__(self, bac, specialite=''):
+        self.bac = bac
+        self.specialite = specialite
+        self._abbrev, self._type = BACS_SSP.get( (bac, specialite), (None, None))
+
+    def abbrev(self):
+        "abbreviation for this bac"
+        if self._abbrev is None:
+            return self.bac # could try to build an abbrev, either from bac/specialite or using a user-supplied lookup table (not implemented)
+        return self._abbrev
+
+    def type(self):
+        "type de bac (une lettre: G, T, P, X)"
+        return self._type or 'X'
+    
+    def is_general(self):
+        return self.type() == 'G'
+    
+    def is_techno(self):
+        return selt.type() == 'T'
+    
+        

Modified: branches/ScoDoc7/sco_recapcomplet.py
===================================================================
--- branches/ScoDoc7/sco_recapcomplet.py	2016-07-18 07:20:38 UTC (rev 1532)
+++ branches/ScoDoc7/sco_recapcomplet.py	2016-07-18 14:40:49 UTC (rev 1533)
@@ -36,10 +36,12 @@
 import sco_formsemestre_status
 import sco_bulletins_xml
 import sco_codes_parcours
+import sco_bac
 
 def formsemestre_recapcomplet(context, formsemestre_id=None, 
                               modejury=False, # affiche lien saisie decision jury
                               hidemodules=False, # cache colonnes notes modules
+                              hidebac=False, # cache colonne Bac
                               tabformat='html',
                               sortcol=None,
                               xml_with_decisions=False, # XML avec decisions
@@ -57,6 +59,7 @@
     # traduit du DTML
     modejury=int(modejury)
     hidemodules = int(hidemodules) or parcours.UE_IS_MODULE # cache les colonnes des modules
+    hidebac = int(hidebac)
     xml_with_decisions=int(xml_with_decisions)
     isFile = tabformat in ('csv','xls','xml', 'xlsall')
     H = []
@@ -92,14 +95,22 @@
             if hidemodules:
                 H.append('checked')
             H.append(""" >cacher les modules</input>""")
-
+        H.append("""<input type="checkbox" name="hidebac" value="1" onchange="document.f.submit()" """)
+        if hidebac:
+            H.append('checked')
+        H.append(""" >cacher bac</input>""")
     if tabformat == 'xml':
         REQUEST.RESPONSE.setHeader('content-type', 'text/xml')
     
     H.append( do_formsemestre_recapcomplet(
             context, REQUEST, 
-            formsemestre_id, format=tabformat, hidemodules=hidemodules, 
-            modejury=modejury, sortcol=sortcol, xml_with_decisions=xml_with_decisions,
+            formsemestre_id, 
+            format=tabformat, 
+            hidemodules=hidemodules, 
+            hidebac=hidebac,
+            modejury=modejury, 
+            sortcol=sortcol, 
+            xml_with_decisions=xml_with_decisions,
             rank_partition_id=rank_partition_id
             ) )
     
@@ -123,6 +134,7 @@
     context=None, REQUEST=None, formsemestre_id=None,
     format='html', # html, xml, xls, xlsall
     hidemodules=False, # ne pas montrer les modules (ignoré en XML)
+    hidebac=False, # pas de colonne Bac (ignoré en XML)
     xml_nodate=False, # format XML sans dates (sert pour debug cache: comparaison de XML)
     modejury=False, # saisie décisions jury
     sortcol=None, # indice colonne a trier dans table T
@@ -146,6 +158,7 @@
     context=None, REQUEST=None, formsemestre_id=None,
     format='html', # html, xml, xls, xlsall
     hidemodules=False, # ne pas montrer les modules (ignoré en XML)
+    hidebac=False, # pas de colonne Bac (ignoré en XML)
     xml_nodate=False, # format XML sans dates (sert pour debug cache: comparaison de XML)
     modejury=False, # saisie décisions jury
     sortcol=None, # indice colonne a trier dans table T
@@ -187,12 +200,16 @@
     # Construit une liste de listes de chaines: le champs du tableau resultat (HTML ou CSV)
     F = []
     h = [ rank_label, 'Nom' ]
+    if not hidebac:
+        h.append( 'Bac' )
+    
     # Si CSV ou XLS, indique tous les groupes
     if format[:3] == 'xls' or format == 'csv':
         for partition in partitions:
             h.append( '%s' % partition['partition_name'] )
     else:
         h.append( 'Gr' )
+    
     h.append( 'Moy' )
     # Ajoute rangs dans groupe seulement si CSV ou XLS
     if format[:3] == 'xls' or format == 'csv':
@@ -266,6 +283,11 @@
             rank = nt.get_etud_rang(etudid)
         
         l = [ rank, nt.get_nom_short(etudid) ]  # rang, nom, 
+        if not hidebac:
+            e = nt.identdict[etudid]
+            bac = sco_bac.Baccalaureat(e['bac'], e['specialite'])
+            l.append(bac.abbrev())
+        
         if format[:3] == 'xls' or format == 'csv': # tous les groupes
             for partition in partitions:                
                 group = partitions_etud_groups[partition['partition_id']].get(etudid, None)
@@ -275,7 +297,7 @@
                     l.append('')
         else:
             l.append(gr_name) # groupe
-              
+        
         l.append(fmtnum(fmt_note(t[0],keep_numeric=keep_numeric))) # moy_gen
         # Ajoute rangs dans groupes seulement si CSV ou XLS
         if format[:3] == 'xls' or format == 'csv':
@@ -305,6 +327,7 @@
         l.append(nt.identdict[etudid]['code_nip'] or '') # avant-derniere colonne = code_nip
         l.append(etudid) # derniere colonne = etudid
         F.append(l)
+    
     # Dernière ligne: moyennes, min et max des UEs et modules
     if not hidemodules: # moy/min/max dans chaque module
         mods_stats = {} # moduleimpl_id : stats
@@ -313,6 +336,8 @@
     
     def add_bottom_stat( key, title, corner_value='' ):
         l = [ '', title ] 
+        if not hidebac:
+            l.append('')
         if format[:3] == 'xls' or format == 'csv':
             l += ['']*len(partitions)
         else:


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