[scodoc-devel] [SVN] Scolar : [1794] Fix: formulaire roles utilisateurs

eviennet at lipn.univ-paris13.fr eviennet at lipn.univ-paris13.fr
Mar 11 Sep 23:49:37 CEST 2018


Une pièce jointe HTML a été nettoyée...
URL: https://listes.univ-paris13.fr/pipermail/scodoc-devel/attachments/20180911/83ef6fb5/attachment.htm 
-------------- section suivante --------------
Modified: branches/ScoDoc7/ZScoUsers.py
===================================================================
--- branches/ScoDoc7/ZScoUsers.py	2018-08-24 14:34:21 UTC (rev 1793)
+++ branches/ScoDoc7/ZScoUsers.py	2018-09-11 21:49:36 UTC (rev 1794)
@@ -30,8 +30,8 @@
 import string, re
 import time
 import md5, base64
-from sets import Set
 
+
 from sco_zope import *
 
 # ---------------
@@ -233,7 +233,7 @@
 
     def _all_roles(self):
         "ensemble de tous les roles attribués ou attribuables"
-        roles = Set(self.DeptUsersRoles())
+        roles = set(self.DeptUsersRoles())
         cnx = self.GetUsersDBConnexion()
         L = self._userEditor.list( cnx, {} )
         for l in L:
@@ -534,24 +534,24 @@
         # 
         if authuser.has_permission(ScoSuperAdmin,self):
             log('create_user_form called by %s (super admin)' %(auth_name, ))
-            editable_roles = Set(self._all_roles())
+            editable_roles = set(self._all_roles())
         else:
-            editable_roles = Set(self.DeptUsersRoles())
+            editable_roles = set(self.DeptUsersRoles())
         #log('create_user_form: editable_roles=%s' % editable_roles)
         #         
         if not edit:
             submitlabel = 'Créer utilisateur'
-            orig_roles = Set()
+            orig_roles = set()
         else:
             submitlabel = 'Modifier utilisateur'
             initvalues['roles'] = initvalues['roles'].split(',') or []
-            orig_roles = Set(initvalues['roles'])
+            orig_roles = set(initvalues['roles'])
             if initvalues['status'] == 'old':
-                editable_roles = Set() # can't change roles of a disabled user
+                editable_roles = set() # can't change roles of a disabled user
         # add existing user roles
         displayed_roles = list(editable_roles.union(orig_roles))
         displayed_roles.sort()
-        disabled_roles = {} # pour desactiver les role que l'on ne peut pas editer
+        disabled_roles = {} # pour desactiver les roles que l'on ne peut pas editer
         for i in range(len(displayed_roles)):
             if displayed_roles[i] not in editable_roles:
                 disabled_roles[i] = True
@@ -632,7 +632,12 @@
                        ]
         
         if 'tf-submitted' in REQUEST.form and not 'roles' in REQUEST.form:
-            REQUEST.form['roles'] = ''
+            REQUEST.form['roles'] = []
+        if 'tf-submitted' in REQUEST.form:
+            # Ajoute roles existants mais non modifiables (disabled dans le form)
+            # orig_roles - editable_roles
+            REQUEST.form['roles'] = list( set(REQUEST.form['roles']).union(orig_roles - editable_roles))
+        
         tf = TrivialFormulator( REQUEST.URL0, REQUEST.form, descr,
                                 initvalues = initvalues,
                                 submitlabel = submitlabel )
@@ -725,7 +730,7 @@
     def _check_modif_user(self, edit, user_name='', nom='', prenom='',
                           email='', roles=[]):
         """Vérifie que et utilisateur peut etre crée (edit=0) ou modifié (edit=1)
-        Cherche homonymes.
+        Cherche homonymes.        
         returns (ok, msg)
           - ok : si vrai, peut continuer avec ces parametres
               (si ok est faux, l'utilisateur peut quand même forcer la creation)


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