[Scodoc-devel] [SVN] Scolar : [1241] - Possibilite d'editer certains champs (heures...) d 'un module d'une formation verrouillee

eviennet at lipn.univ-paris13.fr eviennet at lipn.univ-paris13.fr
Jeu 13 Juin 15:58:19 CEST 2013


Une pièce jointe HTML a été nettoyée...
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20130613/eb1fc408/attachment-0001.html>
-------------- section suivante --------------
Modified: trunk/ZNotes.py
===================================================================
--- trunk/ZNotes.py	2013-06-13 10:23:04 UTC (rev 1240)
+++ trunk/ZNotes.py	2013-06-13 13:58:18 UTC (rev 1241)
@@ -677,16 +677,20 @@
         return self._moduleEditor.list(cnx, *args, **kw)
 
     security.declareProtected(ScoChangeFormation, 'do_module_edit')
-    def do_module_edit(self, *args, **kw ):
+    def do_module_edit(self, val):
         "edit a module"
         # check
-        mod = self.do_module_list({'module_id' : args[0]['module_id']})[0]
+        mod = self.do_module_list({'module_id' : val['module_id']})[0]
         if self.module_is_locked(mod['module_id']):
-            raise ScoLockedFormError()
+            # formation verrouill\xE9e: empeche de modifier certains champs:
+            protected_fields = ('coefficient', 'ue_id', 'matiere_id', 'semestre_id')
+            for f in protected_fields:
+                if f in val:
+                    del val[f]
         # edit
         cnx = self.GetDBConnexion()
-        self._moduleEditor.edit(cnx, *args, **kw )
-
+        self._moduleEditor.edit(cnx, val)
+        
         sems = self.do_formsemestre_list(args={ 'formation_id' : mod['formation_id'] })
         if sems:
             self._inval_cache(formsemestre_id_list=[s['formsemestre_id'] for s in sems]) #> modif module

Modified: trunk/sco_edit_module.py
===================================================================
--- trunk/sco_edit_module.py	2013-06-13 10:23:04 UTC (rev 1240)
+++ trunk/sco_edit_module.py	2013-06-13 13:58:18 UTC (rev 1241)
@@ -137,6 +137,7 @@
     if not Mod:
         raise ScoValueError('invalid module !')
     Mod = Mod[0]
+    unlocked = not context.module_is_locked(module_id)
     Fo = context.formation_list( args={ 'formation_id' : Mod['formation_id'] } )[0]
     parcours = sco_codes_parcours.get_parcours_from_code(Fo['type_parcours'])
     M  = SimpleDictFetch(context, "SELECT ue.acronyme, mat.* FROM notes_matieres mat, notes_ue ue WHERE mat.ue_id = ue.ue_id AND ue.formation_id = %(formation_id)s ORDER BY ue.numero, mat.numero", {'formation_id' : Mod['formation_id']})
@@ -152,6 +153,9 @@
           """<h2>Modification du module %(titre)s""" % Mod,
           """ (formation %(acronyme)s, version %(version)s)</h2>""" % Fo,
           _MODULE_HELP ]
+    if not unlocked:
+        H.append("""<div class="ue_warning"><span>Formation verrouill\xE9e, seuls certains \xE9l\xE9ments peuvent \xEAtre modifi\xE9s</span></div>""")
+    
     tf = TrivialFormulator(REQUEST.URL0, REQUEST.form, (
         ('code'    , { 'size' : 10, 'explanation' : 'code du module' }),
         ('titre'    , { 'size' : 30, 'explanation' : 'nom du module' }),
@@ -161,20 +165,20 @@
         ('heures_td'    , { 'size' : 4, 'type' : 'float', 'explanation' : 'nombre d\'heures de Travaux Dirig\xE9s' }),
         ('heures_tp'    , { 'size' : 4, 'type' : 'float', 'explanation' : 'nombre d\'heures de Travaux Pratiques' }),
         
-        ('coefficient'    , { 'size' : 4, 'type' : 'float', 'explanation' : 'coefficient dans la formation (PPN)', 'allow_null' : False }),
-        ('ects', { 'size' : 4, 'type' : 'float', 'title' : 'ECTS', 'explanation' : 'nombre de cr\xE9dits ECTS' }),
+        ('coefficient'    , { 'size' : 4, 'type' : 'float', 'explanation' : 'coefficient dans la formation (PPN)', 'allow_null' : False, 'enabled' : unlocked }),
+        ('ects', { 'size' : 4, 'type' : 'float', 'title' : 'ECTS', 'explanation' : 'nombre de cr\xE9dits ECTS',  'enabled' : unlocked }),
         ('formation_id', { 'input_type' : 'hidden' }),
         ('ue_id',        { 'input_type' : 'hidden' }),
         ('module_id',    { 'input_type' : 'hidden' }),
         
         ('ue_matiere_id', { 'input_type' : 'menu', 'title' : 'Mati\xE8re', 
                             'explanation' : 'un module appartient \xE0 une seule mati\xE8re.',
-                            'labels' : Mnames, 'allowed_values' : Mids }),
+                            'labels' : Mnames, 'allowed_values' : Mids, 'enabled' : unlocked }),
 
         ('semestre_id', { 'input_type' : 'menu', 'type' : 'int',
                           'title' : parcours.SESSION_NAME.capitalize(), 
                           'explanation' : '%s de d\xE9but du module dans la formation standard' % parcours.SESSION_NAME,
-                          'labels' : [ str(x) for x in semestres_indices ] , 'allowed_values' : semestres_indices}),
+                          'labels' : [ str(x) for x in semestres_indices ] , 'allowed_values' : semestres_indices,  'enabled' : unlocked }),
         ('numero',    { 'size' : 2, 'explanation' : 'num\xE9ro (1,2,3,4...) pour ordre d\'affichage',
                         'type' : 'int' }),        
         ),

Modified: trunk/sco_edit_ue.py
===================================================================
--- trunk/sco_edit_ue.py	2013-06-13 10:23:04 UTC (rev 1240)
+++ trunk/sco_edit_ue.py	2013-06-13 13:58:18 UTC (rev 1241)
@@ -233,7 +233,7 @@
                              % (Mod['module_id'], delete_icon))
                 else:
                     H.append(delete_disabled_icon)
-                mod_editable = editable and not context.module_is_locked(Mod['module_id'])
+                mod_editable = editable # and not context.module_is_locked(Mod['module_id'])
                 if mod_editable:
                     H.append('<a class="discretelink" title="Modifier le module num\xE9ro %(numero)s, utilis\xE9 par %(nb_moduleimpls)d sessions" href="module_edit?module_id=%(module_id)s">' % Mod)                    
                 H.append('%(code)s %(titre)s' % Mod )


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