changeset 418:63c697d1a631

added logic for changin defualt permissions, and option to overwrite all defualt permissions on each repository fixed registration form text
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 21 Aug 2010 18:31:28 +0200
parents 3ed2d46a2ca7
children ccbe72990884
files pylons_app/controllers/admin/permissions.py pylons_app/controllers/login.py pylons_app/lib/auth.py pylons_app/model/forms.py pylons_app/model/permission_model.py pylons_app/templates/admin/permissions/permissions.html
diffstat 6 files changed, 54 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/pylons_app/controllers/admin/permissions.py	Sat Aug 21 16:34:37 2010 +0200
+++ b/pylons_app/controllers/admin/permissions.py	Sat Aug 21 18:31:28 2010 +0200
@@ -97,6 +97,7 @@
         
         try:
             form_result = _form.to_python(dict(request.POST))
+            form_result.update({'perm_user_name':id})
             permission_model.update(form_result)
             h.flash(_('Default permissions updated succesfully'),
                     category='success')
--- a/pylons_app/controllers/login.py	Sat Aug 21 16:34:37 2010 +0200
+++ b/pylons_app/controllers/login.py	Sat Aug 21 18:31:28 2010 +0200
@@ -67,8 +67,9 @@
         user_model = UserModel()
         c.auto_active = False
         for perm in user_model.get_default().user_perms:
+            print perm.permission.permission_name
             if perm.permission.permission_name == 'hg.register.auto_activate':
-                c.auto_active = False
+                c.auto_active = True
                 break
                         
         if request.POST:
--- a/pylons_app/lib/auth.py	Sat Aug 21 16:34:37 2010 +0200
+++ b/pylons_app/lib/auth.py	Sat Aug 21 18:31:28 2010 +0200
@@ -124,6 +124,8 @@
     else:
         user.is_authenticated = False
     meta.Session.remove()
+    from pprint import pprint
+    pprint(user.permissions)
     return user
             
 def fill_perms(user):
@@ -164,10 +166,7 @@
         #default global
         for perm in default_perms:
             user.permissions['global'].add(perm.UserToPerm.permission.permission_name)
-            
-#        user.permissions['global'].add('hg.create.repository')
-#        user.permissions['global'].add('hg.register')
-        
+                    
         #default repositories
         for perm in default_perms:
             if perm.Repository.private and not perm.Repository.user_id == user.user_id:
--- a/pylons_app/model/forms.py	Sat Aug 21 16:34:37 2010 +0200
+++ b/pylons_app/model/forms.py	Sat Aug 21 18:31:28 2010 +0200
@@ -332,6 +332,7 @@
     class _DefaultPermissionsForm(formencode.Schema):
         allow_extra_fields = True
         filter_extra_fields = True
+        overwrite_default = OneOf(['true', 'false'], if_missing='false')
         default_perm = OneOf(perms_choices)
         default_register = OneOf(register_choices)
         default_create = OneOf(create_choices)
--- a/pylons_app/model/permission_model.py	Sat Aug 21 16:34:37 2010 +0200
+++ b/pylons_app/model/permission_model.py	Sat Aug 21 18:31:28 2010 +0200
@@ -24,9 +24,10 @@
 """
 
 from pylons.i18n.translation import _
-from pylons_app.model.db import User, Permission
+from pylons_app.model.db import User, Permission, UserToPerm, RepoToPerm
 from pylons_app.model.meta import Session
 import logging
+import traceback
 log = logging.getLogger(__name__)
 
 
@@ -47,5 +48,41 @@
     
     
     def update(self, form_result):
-        print form_result
-        pass
+        perm_user = self.sa.query(User)\
+                .filter(User.username == form_result['perm_user_name']).scalar()
+        u2p = self.sa.query(UserToPerm).filter(UserToPerm.user == perm_user).all()
+        if len(u2p) != 3:
+            raise Exception('There is more than 3 defined \
+            permissions for defualt user. This should not happen please verify\
+            your database')
+        
+        try:
+            #stage 1 change defaults    
+            for p in u2p:
+                if p.permission.permission_name.startswith('repository.'):
+                    p.permission = self.get_permission_by_name(form_result['default_perm'])
+                    self.sa.add(p)
+                    
+                if p.permission.permission_name.startswith('hg.register.'):
+                    p.permission = self.get_permission_by_name(form_result['default_register'])
+                    self.sa.add(p)
+                    
+                if p.permission.permission_name.startswith('hg.create.'):
+                    p.permission = self.get_permission_by_name(form_result['default_create'])
+                    self.sa.add(p)
+            #stage 2 update all default permissions for repos if checked
+            if form_result['overwrite_default'] == 'true':
+                for r2p in self.sa.query(RepoToPerm).filter(RepoToPerm.user == perm_user).all():
+                    r2p.permission = self.get_permission_by_name(form_result['default_perm'])
+                    self.sa.add(r2p)
+            
+            self.sa.commit()
+        except:
+            log.error(traceback.format_exc())
+            self.sa.rollback()
+            raise               
+        
+        
+        
+        
+        
--- a/pylons_app/templates/admin/permissions/permissions.html	Sat Aug 21 16:34:37 2010 +0200
+++ b/pylons_app/templates/admin/permissions/permissions.html	Sat Aug 21 18:31:28 2010 +0200
@@ -33,7 +33,13 @@
 				</div>
 				<div class="select">
 					${h.select('default_perm','',c.perms_choices)}
-				</div>
+				
+		                ${h.checkbox('overwrite_default','true')}
+		                <label for="overwrite_default">
+		                <span class="tooltip" 
+		                tooltip_title="${h.tooltip(_('All default permissions on each repository will be reset to choosen permission, note that all custom default permission on repositories will be lost'))}">
+		                ${_('overwrite existing settings')}</span> </label>
+				</div>		                
 			</div>   
 			<div class="field">
 		        <div class="label">