[Scodoc-devel] [SVN] Scolar : [1268] - Bug formulaires de confirmation ( lie a upgrade Zope ?);

eviennet at lipn.univ-paris13.fr eviennet at lipn.univ-paris13.fr
Mer 2 Oct 20:14:08 CEST 2013


Une pièce jointe HTML a été nettoyée...
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20131002/7ba80fb6/attachment-0001.html>
-------------- section suivante --------------
Modified: branches/ScoDoc7/ZScolar.py
===================================================================
--- branches/ScoDoc7/ZScolar.py	2013-10-02 10:21:27 UTC (rev 1267)
+++ branches/ScoDoc7/ZScolar.py	2013-10-02 18:14:08 UTC (rev 1268)
@@ -2456,6 +2456,12 @@
                       helpmsg=None):
         # dialog de confirmation simple
         parameters[target_variable] = 1
+        # Attention: la page a pu etre servie en GET avec des parametres
+        # si on laisse l'url "action" vide, les parametres restent alors que l'on passe en POST...
+        if not dest_url:
+            dest_url = REQUEST.URL
+        # strip remaining parameters from destination url:
+        dest_url = urllib.splitquery(dest_url)[0]
         H = [ 
               """<form action="%s" method="post">""" % dest_url,
               message,

Modified: branches/ScoDoc7/sco_codes_parcours.py
===================================================================
--- branches/ScoDoc7/sco_codes_parcours.py	2013-10-02 10:21:27 UTC (rev 1267)
+++ branches/ScoDoc7/sco_codes_parcours.py	2013-10-02 18:14:08 UTC (rev 1268)
@@ -145,6 +145,7 @@
     NOTES_BARRE_VALID_UE = NOTES_BARRE_VALID_UE_TH - NOTES_TOLERANCE   # barre sur UE
     ALLOW_SEM_SKIP = False # Passage: autorise-t-on les sauts de semestres ?
     SESSION_NAME = 'semestre'
+    UNUSED_CODES = set() # Ensemble des codes jury non autoris\xE9s dans ce parcours
     def check(self, formation=None):
         return True, '' # status, diagnostic_message
     def get_barre_ue(self, ue_type, tolerance=True):
@@ -186,6 +187,8 @@
     NB_SEM = 1
     COMPENSATION_UE = False
     BARRE_UE = { UE_STAGE_LP : 10. }
+    # pas de codes ATT en LP
+    UNUSED_CODES = set( (ADC, ATT, ATB) )
 
 register_parcours(ParcoursLP())
 
@@ -216,6 +219,7 @@
     NAME = "Mono"
     NB_SEM = 1
     COMPENSATION_UE = False
+    UNUSED_CODES = set( (ADC, ATT, ATB) )
 
 register_parcours(ParcoursMono())
 
@@ -259,7 +263,8 @@
     TYPE_PARCOURS = 503
     NAME = "Formation UCAC en 1 session de dur\xE9e variable"
     NB_SEM = 1
-
+    UNUSED_CODES = set( (ADC, ATT, ATB) )
+    
 register_parcours(ParcoursMonoUCAC())
 
 class Parcours6Sem(TypeParcours):

Modified: branches/ScoDoc7/sco_formsemestre_validation.py
===================================================================
--- branches/ScoDoc7/sco_formsemestre_validation.py	2013-10-02 10:21:27 UTC (rev 1267)
+++ branches/ScoDoc7/sco_formsemestre_validation.py	2013-10-02 18:14:08 UTC (rev 1268)
@@ -206,29 +206,31 @@
     H.append('.</p>')
         
     # D\xE9cisions possibles
-    H.append("""<form method="get" action="formsemestre_validation_etud" id="formvalid" class="sfv_decisions">
-    <input type="hidden" name="etudid" value="%s"/>
-    <input type="hidden" name="formsemestre_id" value="%s"/>""" %
-             (etudid, formsemestre_id) )
-    if desturl:
-        H.append('<input type="hidden" name="desturl" value="%s"/>' % desturl)
-    if sortcol:
-        H.append('<input type="hidden" name="sortcol" value="%s"/>' % sortcol)
-    H.append('<h3 class="sfv">D\xE9cisions <em>recommand\xE9es</em> :</h3>')
-    H.append('<table>')
-    H.append(decisions_possible_rows(Se, True, subtitle='Etudiant assidu:', trclass='sfv_ass'))
-    
-    rows_pb_assiduite = decisions_possible_rows(Se, False,
-                                                subtitle='Si probl\xE8me d\'assiduit\xE9:',
-                                                trclass='sfv_pbass')
-    if rows_pb_assiduite:
-        H.append('<tr><td> </td></tr>') # spacer
-        H.append(rows_pb_assiduite)
+    rows_assidu = decisions_possible_rows(Se, True, subtitle='Etudiant assidu:', trclass='sfv_ass')
+    rows_non_assidu = decisions_possible_rows(Se, False,
+                                              subtitle='Si probl\xE8me d\'assiduit\xE9:', trclass='sfv_pbass')
+    # s'il y a des decisions recommandees issues des regles:
+    if rows_assidu or rows_non_assidu: 
+        H.append("""<form method="get" action="formsemestre_validation_etud" id="formvalid" class="sfv_decisions">
+        <input type="hidden" name="etudid" value="%s"/>
+        <input type="hidden" name="formsemestre_id" value="%s"/>""" %
+                 (etudid, formsemestre_id) )
+        if desturl:
+            H.append('<input type="hidden" name="desturl" value="%s"/>' % desturl)
+        if sortcol:
+            H.append('<input type="hidden" name="sortcol" value="%s"/>' % sortcol)
 
-    H.append('</table>')    
-    H.append('<p><br/></p><input type="submit" value="Valider ce choix" disabled="1" id="subut"/>')
-    H.append('</form>')
+        H.append('<h3 class="sfv">D\xE9cisions <em>recommand\xE9es</em> :</h3>')
+        H.append('<table>')
+        H.append(rows_assidu)        
+        if rows_non_assidu:
+            H.append('<tr><td> </td></tr>') # spacer
+            H.append(rows_non_assidu)
 
+        H.append('</table>')    
+        H.append('<p><br/></p><input type="submit" value="Valider ce choix" disabled="1" id="subut"/>')
+        H.append('</form>')
+
     H.append( form_decision_manuelle(context, Se, formsemestre_id, etudid) )
 
     H.append( """<div class="link_defaillance">Ou <a class="stdlink" href="formDef?etudid=%s&formsemestre_id=%s">d\xE9clarer l'\xE9tudiant comme d\xE9faillant dans ce semestre</a></div>""" % (etudid, formsemestre_id) )
@@ -279,6 +281,8 @@
         assidu = 1
     etud = context.getEtudInfo(etudid=etudid, filled=True)[0]
     Se = sco_parcours_dut.SituationEtudParcours(context, etud, formsemestre_id)
+    if code_etat in Se.parcours.UNUSED_CODES:
+        raise ScoValueError('code decision invalide dans ce parcours')
     # Si code ADC, extrait le semestre utilis\xE9:
     if code_etat[:3] == 'ADC':
         formsemestre_id_utilise_pour_compenser = code_etat.split('_')[1]
@@ -532,6 +536,8 @@
 
     H.append('<tr><td>Code semestre: </td><td><select name="code_etat"><option value="" selected>Choisir...</option>')
     for cod in codes:
+        if cod in Se.parcours.UNUSED_CODES:
+            continue
         if cod != 'ADC':
             H.append('<option value="%s">%s (code %s)</option>' % (cod, sco_codes_parcours.CODES_EXPL[cod], cod) )
         elif Se.sem['gestion_compensation'] == '1':

Modified: branches/ScoDoc7/sco_parcours_dut.py
===================================================================
--- branches/ScoDoc7/sco_parcours_dut.py	2013-10-02 10:21:27 UTC (rev 1267)
+++ branches/ScoDoc7/sco_parcours_dut.py	2013-10-02 18:14:08 UTC (rev 1268)
@@ -114,7 +114,10 @@
                  self.can_compensate_with_prev, self.semestre_non_terminal)
         # log('get_possible_choices: state=%s' % str(state) )
         for rule in DUTRules:
-            # saute regles REDOSEM si pas de semestres decales:
+            # Saute codes non autoris\xE9s dans ce parcours (eg ATT en LP)
+            if rule.conclusion[0] in self.parcours.UNUSED_CODES:
+                continue
+            # Saute regles REDOSEM si pas de semestres decales:
             if self.sem['gestion_semestrielle'] != '1' and rule.conclusion[3] == 'REDOSEM':
                 continue
             if rule.match(state):
@@ -394,8 +397,11 @@
         """Enregistre la decision (instance de DecisionSem)
         Enregistre codes semestre et UE, et autorisations inscription.
         """
-        cnx = self.znotes.GetDBConnexion(autocommit=False)
+        cnx = self.znotes.GetDBConnexion(autocommit=False)        
         # -- check
+        if decision.code_etat in self.parcours.UNUSED_CODES:
+            raise ScoValueError('code decision invalide dans ce parcours')
+        #
         if decision.code_etat == 'ADC':
             fsid = decision.formsemestre_id_utilise_pour_compenser
             if fsid:


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