[Scodoc-devel] [SVN] Scolar : [1475] New API entry: search_inscr_etud_by_nip

eviennet at lipn.univ-paris13.fr eviennet at lipn.univ-paris13.fr
Sam 12 Déc 13:54:47 CET 2015


Une pièce jointe HTML a été nettoyée...
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20151212/d5e2207f/attachment.html>
-------------- section suivante --------------
Modified: branches/ScoDoc7/ZNotes.py
===================================================================
--- branches/ScoDoc7/ZNotes.py	2015-11-06 12:45:08 UTC (rev 1474)
+++ branches/ScoDoc7/ZNotes.py	2015-12-12 12:54:47 UTC (rev 1475)
@@ -132,7 +132,7 @@
     def __init__(self, id, title):
 	"initialise a new instance of ZNotes"
         self.id = id
-	self.title = title
+        self.title = title
     
     # The form used to edit this object
     def manage_editZNotes(self, title, RESPONSE=None):

Modified: branches/ScoDoc7/ZScoDoc.py
===================================================================
--- branches/ScoDoc7/ZScoDoc.py	2015-11-06 12:45:08 UTC (rev 1474)
+++ branches/ScoDoc7/ZScoDoc.py	2015-12-12 12:54:47 UTC (rev 1475)
@@ -815,8 +815,11 @@
     
     security.declareProtected('View', 'table_etud_in_accessible_depts')
     table_etud_in_accessible_depts = sco_find_etud.table_etud_in_accessible_depts
+    
+    security.declareProtected('View', 'search_inscr_etud_by_nip')
+    search_inscr_etud_by_nip = sco_find_etud.search_inscr_etud_by_nip
+    
 
-
 def manage_addZScoDoc(self, id= 'ScoDoc',
                       title='Site ScoDoc',
                       REQUEST=None):

Modified: branches/ScoDoc7/debug.py
===================================================================
--- branches/ScoDoc7/debug.py	2015-11-06 12:45:08 UTC (rev 1474)
+++ branches/ScoDoc7/debug.py	2015-12-12 12:54:47 UTC (rev 1475)
@@ -10,7 +10,9 @@
 Puis
 
 from debug import *
-context = go(app)
+context = go(app)  
+# ou 
+context = go_dept(app, 'CJ')
 
 authuser = app.acl_users.getUserById('admin')
 authuser = authuser.__of__(app.acl_users)
@@ -50,8 +52,17 @@
 
 def go(app, n=0):
     context = app.ScoDoc.objectValues('Folder')[n].Scolarite
+    print 'context in dept ', context.DeptId() 
     return context
 
+def go_dept(app, dept):
+    objs = app.ScoDoc.objectValues('Folder')
+    for o in objs:
+        context = o.Scolarite
+        if context.DeptId() == dept:
+            print 'context in dept ', context.DeptId() 
+            return context
+    raise ValueError('dep %s not found' % dept)
 
 class DummyResponse:
     """Emulation vide de Reponse http Zope"""

Modified: branches/ScoDoc7/sco_find_etud.py
===================================================================
--- branches/ScoDoc7/sco_find_etud.py	2015-11-06 12:45:08 UTC (rev 1474)
+++ branches/ScoDoc7/sco_find_etud.py	2015-12-12 12:54:47 UTC (rev 1475)
@@ -108,7 +108,7 @@
     if title:
         H.append('<h2>%s</h2>'%title)
     if expnom:
-        etuds = search_etuds_infos(context, expnom=expnom,REQUEST=REQUEST)
+        etuds = search_etuds_infos(context, expnom=expnom, REQUEST=REQUEST)
     else:
         etuds = []
     if len(etuds) == 1:
@@ -158,13 +158,16 @@
         return '\n'.join(H)
 
 # Was chercheEtudsInfo()
-def search_etuds_infos(context, expnom, REQUEST):
-    """recherche les étudiants correspondants à expnom
+def search_etuds_infos(context, expnom=None, code_nip=None, REQUEST=None):
+    """recherche les étudiants correspondants à expnom ou au code_nip
     et ramene liste de mappings utilisables en DTML.        
     """
     cnx = context.GetDBConnexion()
-    expnom = strupper(expnom) # les noms dans la BD sont en uppercase
-    etuds = scolars.etudident_list(cnx, args={'nom':expnom}, test='~' )        
+    if expnom:
+        expnom = strupper(expnom) # les noms dans la BD sont en uppercase
+        etuds = scolars.etudident_list(cnx, args={'nom':expnom}, test='~' )        
+    elif code_nip:
+        etuds = scolars.etudident_list(cnx, args={'code_nip': code_nip} ) 
     context.fillEtudsInfo(etuds)
     return etuds
 
@@ -189,7 +192,7 @@
     authuser = REQUEST.AUTHENTICATED_USER
     return authuser.has_permission(ScoView,context)
 
-def search_etud_in_accessible_depts(context, expnom = None, REQUEST = None):
+def search_etud_in_accessible_depts(context, expnom=None, code_nip=None, REQUEST=None):
     """
     context est le ZScoDoc
     result is a list of (sorted) etuds, one list per dept.
@@ -200,9 +203,9 @@
     for dept in deptList:
         #log('%s searching %s' % (str(REQUEST.AUTHENTICATED_USER),dept))
         if can_view_dept(dept, REQUEST):
-            if expnom:
+            if expnom or code_nip:
                 accessible_depts.append(dept.Scolarite.DeptId())
-                etuds = search_etuds_infos(dept.Scolarite, expnom=expnom, REQUEST=REQUEST)
+                etuds = search_etuds_infos(dept.Scolarite, expnom=expnom, code_nip=code_nip, REQUEST=REQUEST)
             else:
                 etuds = []
             result.append(etuds)
@@ -213,7 +216,7 @@
     Page avec table étudiants trouvés, dans tous les departements.
     Attention: nous sommes ici au niveau de ScoDoc, pas dans un département
     """
-    result, accessible_depts = search_etud_in_accessible_depts(context, expnom, REQUEST)
+    result, accessible_depts = search_etud_in_accessible_depts(context, expnom=expnom, REQUEST=REQUEST)
     H = [ """<div class="table_etud_in_accessible_depts">""",
           """<h3>Recherche multi-département de "<tt>%s</tt>"</h3>""" % expnom 
           ]
@@ -249,3 +252,39 @@
     H.append('</div>')
             
     return context.scodoc_top_html_header(REQUEST, page_title='Choix d\'un étudiant') + '\n'.join(H) + context.standard_html_footer(REQUEST)
+
+
+def search_inscr_etud_by_nip(context, code_nip, REQUEST=None, format='json'):
+    """Recherche multi-departement d'un étudiant par son code NIP
+    Seuls les département accessibles par l'utilisateur sont cherchés.
+
+    Renvoie une liste des inscriptions de l'étudiants dans tout ScoDoc:
+    code_nip, nom, prenom, sexe, dept, formsemestre_id, date_debut_sem, date_fin_sem
+    """
+    result, depts = search_etud_in_accessible_depts(context, code_nip=code_nip, REQUEST=REQUEST)
+    
+    T = []
+    for etuds in result:
+        if etuds:
+            DeptId = etuds[0]['dept']            
+            for e in etuds:
+                for sem in e['sems']:
+                    T.append({
+                        'dept' : DeptId,
+                        'etudid' : e['etudid'],
+                        'code_nip' : e['code_nip'],
+                        'sexe' : e['sexe'],
+                        'nom' : e['nom'],
+                        'prenom' : e['prenom'],
+                        'formsemestre_id' : sem['formsemestre_id'],
+                        'date_debut_iso' : sem['date_debut_iso'],
+                        'date_fin_iso' : sem['date_fin_iso'],
+                        })                        
+    
+    columns_ids=('dept', 
+                 'etudid', 'code_nip', 'sexe', 'nom', 'prenom', 
+                 'formsemestre_id', 'date_debut_iso', 'date_fin_iso'
+                 )
+    tab = GenTable( columns_ids=columns_ids, rows=T )
+    
+    return tab.make_page(context, format=format, with_html_headers=False, REQUEST=REQUEST, publish=True)


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