Changeset - 63c697d1a631
[Not reviewed]
default
0 6 0
Marcin Kuzminski - 15 years ago 2010-08-21 18:31:28
marcin@python-works.com
added logic for changin defualt permissions, and option to overwrite all defualt permissions on each repository
fixed registration form text
6 files changed with 52 insertions and 7 deletions:
0 comments (0 inline, 0 general)
pylons_app/controllers/admin/permissions.py
Show inline comments
 
@@ -97,6 +97,7 @@ class PermissionsController(BaseControll
 
        
 
        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')
pylons_app/controllers/login.py
Show inline comments
 
@@ -67,8 +67,9 @@ class LoginController(BaseController):
 
        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:
pylons_app/lib/auth.py
Show inline comments
 
@@ -124,6 +124,8 @@ def fill_data(user):
 
    else:
 
        user.is_authenticated = False
 
    meta.Session.remove()
 
    from pprint import pprint
 
    pprint(user.permissions)
 
    return user
 
            
 
def fill_perms(user):
 
@@ -165,9 +167,6 @@ def fill_perms(user):
 
        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:
pylons_app/model/forms.py
Show inline comments
 
@@ -332,6 +332,7 @@ def DefaultPermissionsForm(perms_choices
 
    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)
pylons_app/model/permission_model.py
Show inline comments
 
@@ -24,9 +24,10 @@ Model for permissions
 
"""
 

	
 
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 @@ class PermissionModel(object):
 
    
 
    
 
    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               
 
        
 
        
 
        
 
        
 
        
pylons_app/templates/admin/permissions/permissions.html
Show inline comments
 
@@ -33,6 +33,12 @@
 
				</div>
 
				<div class="select">
 
					${h.select('default_perm','',c.perms_choices)}
 
				
 
		                ${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">
0 comments (0 inline, 0 general)