[Checkins] SVN: Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view Added functionality to update principal data (including roles).

Uli Fouquet uli at gnufix.de
Sun Aug 19 17:42:40 EDT 2007


Log message for revision 79003:
  Added functionality to update principal data (including roles).

Changed:
  U   Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view.py
  U   Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view_templates/users.pt

-=-
Modified: Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view.py
===================================================================
--- Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view.py	2007-08-19 21:07:17 UTC (rev 79002)
+++ Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view.py	2007-08-19 21:42:40 UTC (rev 79003)
@@ -490,9 +490,34 @@
     def setPassword(self, id, password):
         pass
 
-    def updatePrincipal(self, id, login, title, description):
-        pass
+    def updatePrincipal(self, id, login, title, description, roles):
+        if id is None:
+            id = login
+        principals = self.getPrincipals()
+        if login not in [x.login for x in principals]:
+            self.msg = (u'Login `%s` does not exist.' % (login,))
+            return
+        for key in [login, title]:
+            if key is None or key == '':
+                self.msg= (u'Login and title must not be empty.')
+                return
+            
+        # Update generic data...
+        principal = self.userfolder[id[len(self.userfolder.prefix):]]
+        principal.title = title
+        principal.description = description
+        
+        # Update roles...
+        role_manager = IPrincipalRoleManager(self.context)
+        role_manager = removeSecurityProxy(role_manager)
+        for role in self.roles:
+            if role in roles:
+                role_manager.assignRoleToPrincipal(role, id)
+            else:
+                role_manager.unsetRoleForPrincipal(role, id)
+        self.msg=u'Principal `%s` successfully updated.' % (title,)
 
+
     def update(self, id=None, login=None, title=None, description=None,
                passwd=None, roles=[], addprincipal=None, delprincipal=None,
                setpassword=None, update=None):

Modified: Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view_templates/users.pt
===================================================================
--- Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view_templates/users.pt	2007-08-19 21:07:17 UTC (rev 79002)
+++ Sandbox/ulif/grok-adminui-with-principals/src/grok/admin/view_templates/users.pt	2007-08-19 21:42:40 UTC (rev 79003)
@@ -29,8 +29,10 @@
 	      </tr>
 	      <tr>
 		<td><label for="login">Login:</label></td>
-		<td><input type="text" name="login"
+		<td><input type="text" name="login" disabled="disabled"
 		tal:attributes="value principal/login" />
+		<input type="hidden" name="login"
+		       tal:attributes="value principal/login" />
 		</td>
 		<td><label for="roles">Roles:</label></td>
 	      </tr>



More information about the Checkins mailing list