##// END OF EJS Templates
use label for auto status change
use label for auto status change

File last commit:

r3179:cd50d1b5 merge default
r3260:dadfcd30 beta
Show More
permissions.py
194 lines | 7.9 KiB | text/x-python | PythonLexer
Cleaned up scm model codes,Admin/admin permissions controller codes
r760 # -*- coding: utf-8 -*-
"""
some docs updates on controller
r853 rhodecode.controllers.admin.permissions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
source code cleanup: remove trailing white space, normalize file endings
r1203
Cleaned up scm model codes,Admin/admin permissions controller codes
r760 permissions controller for Rhodecode
source code cleanup: remove trailing white space, normalize file endings
r1203
Cleaned up scm model codes,Admin/admin permissions controller codes
r760 :created_on: Apr 27, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
Cleaned up scm model codes,Admin/admin permissions controller codes
r760 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
renamed project to rhodecode
r547
Deprecated UserModel removals...
r1501 import logging
import traceback
import formencode
renamed project to rhodecode
r547 from formencode import htmlfill
Deprecated UserModel removals...
r1501
renamed project to rhodecode
r547 from pylons import request, session, tmpl_context as c, url
from pylons.controllers.util import abort, redirect
from pylons.i18n.translation import _
Deprecated UserModel removals...
r1501
renamed project to rhodecode
r547 from rhodecode.lib import helpers as h
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator,\
AuthUser
renamed project to rhodecode
r547 from rhodecode.lib.base import BaseController, render
Deprecated UserModel removals...
r1501 from rhodecode.model.forms import DefaultPermissionsForm
#50 on point cache invalidation changes....
r692 from rhodecode.model.permission import PermissionModel
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 from rhodecode.model.db import User, UserIpMap
another major refactoring with session management
r1734 from rhodecode.model.meta import Session
renamed project to rhodecode
r547
log = logging.getLogger(__name__)
PEP8ify - controllers
r1245
renamed project to rhodecode
r547 class PermissionsController(BaseController):
"""REST Controller styled on the Atom Publishing Protocol"""
# To properly map this controller, ensure your config/routing.py
# file has a resource setup:
# map.resource('permission', 'permissions')
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 @LoginRequired()
@HasPermissionAllDecorator('hg.admin')
def __before__(self):
c.admin_user = session.get('admin_user')
c.admin_username = session.get('admin_username')
super(PermissionsController, self).__before__()
Code refactoring,models renames...
r629
implemented #663 Admin/permission: specify default repogroup perms...
r3052 self.repo_perms_choices = [('repository.none', _('None'),),
('repository.read', _('Read'),),
('repository.write', _('Write'),),
('repository.admin', _('Admin'),)]
self.group_perms_choices = [('group.none', _('None'),),
('group.read', _('Read'),),
('group.write', _('Write'),),
('group.admin', _('Admin'),)]
renamed project to rhodecode
r547 self.register_choices = [
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 ('hg.register.none',
_('disabled')),
renamed project to rhodecode
r547 ('hg.register.manual_activate',
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 _('allowed with manual account activation')),
renamed project to rhodecode
r547 ('hg.register.auto_activate',
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 _('allowed with automatic account activation')), ]
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 self.create_choices = [('hg.create.none', _('Disabled')),
Code refactoring,models renames...
r629 ('hg.create.repository', _('Enabled'))]
renamed project to rhodecode
r547
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 self.fork_choices = [('hg.fork.none', _('Disabled')),
('hg.fork.repository', _('Enabled'))]
# set the global template variables
implemented #663 Admin/permission: specify default repogroup perms...
r3052 c.repo_perms_choices = self.repo_perms_choices
c.group_perms_choices = self.group_perms_choices
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 c.register_choices = self.register_choices
c.create_choices = self.create_choices
c.fork_choices = self.fork_choices
renamed project to rhodecode
r547 def index(self, format='html'):
"""GET /permissions: All items in the collection"""
# url('permissions')
def create(self):
"""POST /permissions: Create a new item"""
# url('permissions')
def new(self, format='html'):
"""GET /permissions/new: Form to create a new item"""
# url('new_permission')
def update(self, id):
"""PUT /permissions/id: Update an existing item"""
# Forms posted to this method should contain a hidden field:
# <input type="hidden" name="_method" value="PUT" />
# Or using helpers:
# h.form(url('permission', id=ID),
# method='put')
# url('permission', id=ID)
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 if id == 'default':
c.user = default_user = User.get_by_username('default')
c.perm_user = AuthUser(user_id=default_user.user_id)
c.user_ip_map = UserIpMap.query()\
.filter(UserIpMap.user == default_user).all()
permission_model = PermissionModel()
Code refactoring,models renames...
r629
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 _form = DefaultPermissionsForm(
[x[0] for x in self.repo_perms_choices],
[x[0] for x in self.group_perms_choices],
[x[0] for x in self.register_choices],
[x[0] for x in self.create_choices],
[x[0] for x in self.fork_choices])()
Code refactoring,models renames...
r629
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 try:
form_result = _form.to_python(dict(request.POST))
form_result.update({'perm_user_name': id})
permission_model.update(form_result)
Session().commit()
h.flash(_('Default permissions updated successfully'),
category='success')
Code refactoring,models renames...
r629
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 except formencode.Invalid, errors:
defaults = errors.value
Code refactoring,models renames...
r629
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 return htmlfill.render(
render('admin/permissions/permissions.html'),
defaults=defaults,
errors=errors.error_dict or {},
prefix_error=False,
encoding="UTF-8")
except Exception:
log.error(traceback.format_exc())
h.flash(_('error occurred during update of permissions'),
category='error')
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 return redirect(url('edit_permission', id=id))
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 def delete(self, id):
"""DELETE /permissions/id: Delete an existing item"""
# Forms posted to this method should contain a hidden field:
# <input type="hidden" name="_method" value="DELETE" />
# Or using helpers:
# h.form(url('permission', id=ID),
# method='delete')
# url('permission', id=ID)
def show(self, id, format='html'):
"""GET /permissions/id: Show a specific item"""
# url('permission', id=ID)
def edit(self, id, format='html'):
"""GET /permissions/id/edit: Form to edit an existing item"""
#url('edit_permission', id=ID)
Code refactoring,models renames...
r629
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 #this form can only edit default user permissions
renamed project to rhodecode
r547 if id == 'default':
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 c.user = default_user = User.get_by_username('default')
defaults = {'anonymous': default_user.active}
c.perm_user = AuthUser(user_id=default_user.user_id)
c.user_ip_map = UserIpMap.query()\
.filter(UserIpMap.user == default_user).all()
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 for p in default_user.user_perms:
renamed project to rhodecode
r547 if p.permission.permission_name.startswith('repository.'):
implemented #663 Admin/permission: specify default repogroup perms...
r3052 defaults['default_repo_perm'] = p.permission.permission_name
if p.permission.permission_name.startswith('group.'):
defaults['default_group_perm'] = p.permission.permission_name
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 if p.permission.permission_name.startswith('hg.register.'):
defaults['default_register'] = p.permission.permission_name
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 if p.permission.permission_name.startswith('hg.create.'):
defaults['default_create'] = p.permission.permission_name
Code refactoring,models renames...
r629
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 if p.permission.permission_name.startswith('hg.fork.'):
defaults['default_fork'] = p.permission.permission_name
renamed project to rhodecode
r547 return htmlfill.render(
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 render('admin/permissions/permissions.html'),
defaults=defaults,
encoding="UTF-8",
Added UserIpMap interface for allowed IP addresses and IP restriction access...
r3125 force_defaults=False
RhodeCode now has a option to explicitly set forking permissions. ref #508...
r2709 )
renamed project to rhodecode
r547 else:
return redirect(url('admin_home'))