[scodoc-devel] [SVN] Scolar : [1808] Gestion balise datefinalisationinscription (debut)

eviennet at lipn.univ-paris13.fr eviennet at lipn.univ-paris13.fr
Ven 19 Oct 13:05:03 CEST 2018


Une pièce jointe HTML a été nettoyée...
URL: https://listes.univ-paris13.fr/pipermail/scodoc-devel/attachments/20181019/33e2b0e0/attachment.htm 
-------------- section suivante --------------
Modified: branches/ScoDoc7/sco_groups_view.py
===================================================================
--- branches/ScoDoc7/sco_groups_view.py	2018-10-16 10:19:10 UTC (rev 1807)
+++ branches/ScoDoc7/sco_groups_view.py	2018-10-19 11:05:03 UTC (rev 1808)
@@ -57,7 +57,7 @@
         # Options pour listes:
         with_codes=0,
         etat=None,
-        with_paiement=0, # si vrai, ajoute colonne infos paiement droits inscription (lent car interrogation portail)
+        with_paiement=0, # si vrai, ajoute colonnes infos paiement droits et finalisation inscription (lent car interrogation portail)
         with_archives=0, # ajoute colonne avec noms fichiers archivés
         with_annotations=0,
         formsemestre_id=None # utilise si aucun groupe selectionné
@@ -357,7 +357,7 @@
         with_codes=0,
         etat=None,
         format='html',
-        with_paiement=0, # si vrai, ajoute colonne infos paiement droits inscription (lent car interrogation portail)
+        with_paiement=0, # si vrai, ajoute colonnes infos paiement droits et finalisation inscription (lent car interrogation portail)
         with_archives=0, # ajoute colonne avec noms fichiers archivés
         with_annotations=0
         ):
@@ -383,6 +383,7 @@
                'etat':'Etat',
                'etudid':'etudid',
                'code_nip':'code_nip', 'code_ine':'code_ine',
+               'datefinalisationinscription_str' : 'Finalisation inscr.',
                'paiementinscription_str' : 'Paiement',
                'etudarchive' : 'Fichiers',
                'annotations_str' : 'Annotations',
@@ -401,7 +402,7 @@
     if with_codes:
         columns_ids += ['etape', 'etudid', 'code_nip', 'code_ine']
     if with_paiement:
-        columns_ids += ['paiementinscription_str']
+        columns_ids += ['datefinalisationinscription_str', 'paiementinscription_str']
     if with_paiement or with_codes:
         sco_portal_apogee.check_paiement_etuds(context, groups_infos.members)
     if with_archives:

Modified: branches/ScoDoc7/sco_inscr_passage.py
===================================================================
--- branches/ScoDoc7/sco_inscr_passage.py	2018-10-16 10:19:10 UTC (rev 1807)
+++ branches/ScoDoc7/sco_inscr_passage.py	2018-10-19 11:05:03 UTC (rev 1808)
@@ -477,9 +477,12 @@
                 else:
                     # ce n'est pas un etudiant ScoDoc
                     elink = etud['nomprenom']
-                    
+
+                if etud.get('datefinalisationinscription', None):
+                    elink += '<span class="greenboldtext">' + "inscription finalisée le " + etud['datefinalisationinscription_str'] + '</span>'
+                
                 if not etud.get('paiementinscription', True):
-                    elink = '<span class="paspaye">' + elink + ' (non paiement)</span>'
+                    elink += '<span class="paspaye"> (non paiement)</span>'
                 
                 H.append("""<div class="pas_etud%s">""" % c )
                 if 'etape' in etud:

Modified: branches/ScoDoc7/sco_portal_apogee.py
===================================================================
--- branches/ScoDoc7/sco_portal_apogee.py	2018-10-16 10:19:10 UTC (rev 1807)
+++ branches/ScoDoc7/sco_portal_apogee.py	2018-10-19 11:05:03 UTC (rev 1808)
@@ -144,7 +144,8 @@
     doc = query_portal(req, timeout=portal_timeout)
     if not doc:
         raise ScoValueError('pas de réponse du portail ! (timeout=%s)' % portal_timeout)
-    etuds = xml_to_list_of_dicts(doc, req=req)
+    etuds = _normalize_apo_fields(xml_to_list_of_dicts(doc, req=req))
+    
     # Filtre sur annee inscription Apogee:
     def check_inscription(e):
         if e.has_key('inscription'):
@@ -281,7 +282,7 @@
     portal_timeout = context.get_preference('portal_timeout')
     req = etud_url + '?' + urllib.urlencode((('nip', code_nip),))
     doc = query_portal(req, timeout=portal_timeout )
-    d = xml_to_list_of_dicts(doc, req=req)
+    d = _normalize_apo_fields(xml_to_list_of_dicts(doc, req=req))
     if not d:
         return None
     if len(d) > 1:
@@ -399,6 +400,48 @@
     etapes.sort() # tri sur le code etape
     return etapes
 
+def _portal_date_dmy2date(s):
+    """date inscription renvoyée sous la forme dd/mm/yy
+    renvoie un objet date, ou None
+    """    
+    s = s.strip()
+    if not s:
+        return None
+    else:
+        d,m,y= [ int(x) for x in s.split('/') ] # raises ValueError if bad format
+        if y < 100:
+            y += 2000 # 21ème siècle
+        return datetime.date(y, m, d)
+
+def _normalize_apo_fields(infolist):
+    """
+    infolist: liste de dict renvoyés par le portail Apogee
+
+    recode les champs: paiementinscription (-> booleen), datefinalisationinscription (date)
+    ajoute le champs 'paiementinscription_str' : 'ok', 'Non' ou '?' 
+    ajuoute le champs 'etape' (= None) s'il n'est pas présent
+    """
+    for infos in infolist:
+        if infos.has_key('paiementinscription'):
+            infos['paiementinscription'] = (strlower(infos['paiementinscription']) == 'true')
+            if infos['paiementinscription']:
+                infos['paiementinscription_str'] = 'ok'
+            else:
+                infos['paiementinscription_str'] = 'Non'
+        else:
+            infos['paiementinscription'] = None
+            infos['paiementinscription_str'] = '?'
+        
+        if infos.has_key('datefinalisationinscription'):
+            infos['datefinalisationinscription'] = _portal_date_dmy2date(infos['datefinalisationinscription'])
+            infos['datefinalisationinscription_str'] = infos['datefinalisationinscription'].strftime('%d/%m/%Y')
+        else:
+            infos['datefinalisationinscription'] = None
+            infos['datefinalisationinscription_str'] = ''
+            
+        if not infos.has_key('etape'):
+            infos['etape'] = None
+
 def check_paiement_etuds(context, etuds):
     """Interroge le portail pour vérifier l'état de "paiement" et l'étape d'inscription.
 
@@ -416,25 +459,11 @@
         if not etud.has_key('code_nip'):
             etud['paiementinscription'] = None
             etud['paiementinscription_str'] = '(pas de code)'
+            etud['datefinalisationinscription'] = None
             etud['etape'] = None
         else:
             infos = get_etud_apogee(context, etud['code_nip'])
-            if infos and infos.has_key('paiementinscription'):
-                etud['paiementinscription'] = (strlower(infos['paiementinscription']) == 'true')
-                if etud['paiementinscription']:
-                    etud['paiementinscription_str'] = 'ok'
-                else:
-                    etud['paiementinscription_str'] = 'Non'
-            else:
-                etud['paiementinscription'] = None
-                etud['paiementinscription_str'] = '?'
-            
-            if infos and infos.has_key('etape'):
-                etud['etape'] = infos['etape']
-            else:
-                etud['etape'] = None
 
-    
 def get_maquette_apogee(context, etape='', annee_scolaire=''):
     """Maquette CSV Apogee pour une étape et une annee scolaire
     """

Modified: branches/ScoDoc7/sco_synchro_etuds.py
===================================================================
--- branches/ScoDoc7/sco_synchro_etuds.py	2018-10-16 10:19:10 UTC (rev 1807)
+++ branches/ScoDoc7/sco_synchro_etuds.py	2018-10-19 11:05:03 UTC (rev 1808)
@@ -294,7 +294,7 @@
     etuds_nonapogee = inscrits_set - etudsapo_set
     # Etudiants ayant payé (avec balise <paiementinscription> true)
     # note: si le portail ne renseigne pas cette balise, suppose que paiement ok
-    etuds_payes = set( [  x[EKEY_APO] for x in etudsapo if x.get('paiementinscription', 'true').lower() == 'true' ] )
+    etuds_payes = set( [  x[EKEY_APO] for x in etudsapo if x.get('paiementinscription', True) ] )
     #
     cnx = context.GetDBConnexion()
     # Tri listes


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