Пример #1
0
def permission_edit(request):
    _ = get_localizer(request)
    
    permission_model = PermissionModel(request.db_session)
    
    permission_name = request.matchdict['permission_name']
    permission = permission_model.get_by_name(permission_name)
    if permission is None:
        msg = _(u'Permission %s does not exist') % permission_name
        return HTTPNotFound(msg)
    
    factory = FormFactory(_)
    PermissionEditForm = factory.make_permission_edit_form()
    form = PermissionEditForm(request.params, permission)
    
    if request.method == 'POST':
        check_csrf_token(request)
        
        validate_result = form.validate()
        permission_name = request.params['permission_name']
        description = request.params['description']
        
        by_name = permission_model.get_by_name(permission_name)
        if (
            by_name is not None and 
            permission_name != permission.permission_name
        ):
            msg = _(u'Permission name %s already exists') % permission_name
            form.permission_name.errors.append(msg)
            validate_result = False

        if validate_result:
            with transaction.manager:
                permission_model.update_permission(
                    permission_id=permission.permission_id,
                    permission_name=permission_name, 
                    description=description, 
                )
            
            msg = _(u"Permission ${permission_name} has been updated", 
                    mapping=dict(permission_name=permission_name))
            request.add_flash(msg, 'success')
            url = request.route_url('admin.permission_edit', 
                                    permission_name=permission_name)
            return HTTPFound(location=url)
        
    return dict(form=form, permission=permission)