[Scodoc-devel] [SVN] Scolar : [1307] get_etud_dept(): si etudiant dans plusieurs departements, ramene le celui avec le semestre le plus recent.

eviennet at lipn.univ-paris13.fr eviennet at lipn.univ-paris13.fr
Mer 18 Déc 20:50:04 CET 2013


Une pièce jointe HTML a été nettoyée...
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20131218/0f6b018a/attachment.html>
-------------- section suivante --------------
Modified: branches/ScoDoc7/ZScoDoc.py
===================================================================
--- branches/ScoDoc7/ZScoDoc.py	2013-12-17 14:32:23 UTC (rev 1306)
+++ branches/ScoDoc7/ZScoDoc.py	2013-12-18 19:50:04 UTC (rev 1307)
@@ -846,12 +846,30 @@
         Warning: This function is inefficient and its result should be cached.
         """
         depts = self.list_depts()
+        depts_etud = [] # liste des depts où l'etud est defini
         for dept in depts:
-            etud = dept.Scolarite.getEtudInfo(REQUEST=REQUEST)
-            if etud:
-                return dept.id
-        return '' # not found
-
+            etuds = dept.Scolarite.getEtudInfo(REQUEST=REQUEST)
+            if etuds:
+                depts_etud.append( (dept, etuds) )                
+        if not depts_etud:
+            return '' # not found
+        elif len(depts_etud) == 1:            
+            return depts_etud[0][0].id
+        # inscriptions dans plusieurs departements: cherche la plus recente
+        last_dept = None
+        last_date = None
+        for (dept, etuds) in depts_etud:
+            dept.Scolarite.fillEtudsInfo(etuds)
+            etud = etuds[0]
+            if etud['sems']:
+                if (not last_date) or (etud['sems'][0]['date_fin_iso'] > last_date):
+                    last_date = etud['sems'][0]['date_fin_iso']
+                    last_dept = dept
+        if not last_dept: 
+            # est present dans plusieurs semestres mais inscrit dans aucun
+            return  depts_etud[0][0]
+        return last_dept.id
+        
 def manage_addZScoDoc(self, id= 'ScoDoc',
                       title='Site ScoDoc',
                       REQUEST=None):


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