##// END OF EJS Templates
added icons to journal, extend show more to actually show more pushed revisions,
added icons to journal, extend show more to actually show more pushed revisions,

File last commit:

r769:4bdcc08b beta
r808:1af15d66 beta
Show More
permissions.py
170 lines | 6.6 KiB | text/x-python | PythonLexer
Cleaned up scm model codes,Admin/admin permissions controller codes
r760 # -*- coding: utf-8 -*-
"""
package.rhodecode.controllers.admin.permissions
~~~~~~~~~~~~~~
permissions controller for Rhodecode
:created_on: Apr 27, 2010
:author: marcink
:copyright: (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
:license: GPLv3, see COPYING for more details.
"""
renamed project to rhodecode
r547 # 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; version 2
# of the License or (at your opinion) any later version of the license.
#
# 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.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
from formencode import htmlfill
from pylons import request, session, tmpl_context as c, url
from pylons.controllers.util import abort, redirect
from pylons.i18n.translation import _
from rhodecode.lib import helpers as h
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
implements #60, ldap configuration and authentication....
r705 from rhodecode.lib.auth_ldap import LdapImportError
renamed project to rhodecode
r547 from rhodecode.lib.base import BaseController, render
implements #60, ldap configuration and authentication....
r705 from rhodecode.model.forms import LdapSettingsForm, DefaultPermissionsForm
#50 on point cache invalidation changes....
r692 from rhodecode.model.permission import PermissionModel
implements #60, ldap configuration and authentication....
r705 from rhodecode.model.settings import SettingsModel
Code refactoring,models renames...
r629 from rhodecode.model.user import UserModel
renamed project to rhodecode
r547 import formencode
import logging
import traceback
log = logging.getLogger(__name__)
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
renamed project to rhodecode
r547 self.perms_choices = [('repository.none', _('None'),),
('repository.read', _('Read'),),
('repository.write', _('Write'),),
('repository.admin', _('Admin'),)]
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
Code refactoring,models renames...
r629
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)
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 permission_model = PermissionModel()
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 _form = DefaultPermissionsForm([x[0] for x in self.perms_choices],
[x[0] for x in self.register_choices],
[x[0] for x in self.create_choices])()
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 try:
form_result = _form.to_python(dict(request.POST))
form_result.update({'perm_user_name':id})
permission_model.update(form_result)
implements #60, ldap configuration and authentication....
r705 h.flash(_('Default permissions updated successfully'),
renamed project to rhodecode
r547 category='success')
Code refactoring,models renames...
r629
refactor codes and setup for python 2.5...
r564 except formencode.Invalid, errors:
renamed project to rhodecode
r547 c.perms_choices = self.perms_choices
c.register_choices = self.register_choices
c.create_choices = self.create_choices
implements #60, ldap configuration and authentication....
r705 defaults = errors.value
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 return htmlfill.render(
render('admin/permissions/permissions.html'),
implements #60, ldap configuration and authentication....
r705 defaults=defaults,
renamed project to rhodecode
r547 errors=errors.error_dict or {},
prefix_error=False,
Code refactoring,models renames...
r629 encoding="UTF-8")
renamed project to rhodecode
r547 except Exception:
log.error(traceback.format_exc())
h.flash(_('error occured 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)
c.perms_choices = self.perms_choices
c.register_choices = self.register_choices
c.create_choices = self.create_choices
Code refactoring,models renames...
r629
renamed project to rhodecode
r547 if id == 'default':
#49 Enabled anonymous access for web interface controllable from permissions pannel
r673 default_user = UserModel().get_by_username('default')
defaults = {'_method':'put',
'anonymous':default_user.active}
fixes #77 moved out ldap config to it's own section
r769
#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.'):
Code refactoring,models renames...
r629 defaults['default_perm'] = p.permission.permission_name
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
renamed project to rhodecode
r547 return htmlfill.render(
render('admin/permissions/permissions.html'),
defaults=defaults,
encoding="UTF-8",
Code refactoring,models renames...
r629 force_defaults=True,)
renamed project to rhodecode
r547 else:
return redirect(url('admin_home'))