def user_deleted(event): request = event.request usr = event.user # delete user projects and associated acls. for p in User.by_id(usr.id).projects[:]: try: res = [] res.extend(ProjectGroupRole.by_resource(p)) res.extend(ProjectUserRole.by_resource(p)) res.append(p) modified = False for i in res: modified = True session.delete(i) if modified: session.commit() except Exception, e: error = 'Default project for %s cannot be deleted' % usr.username message = '%s' % e if message: error += ' : %s' % message logging.getLogger('mobyle2.delete_user').error(error)
def __call__(self): auths_list = self.request.resource_url( self.request.root['auths'] ) + '@@list' class authbackend_delete_schema(colander.MappingSchema): submitted = colander.SchemaNode( colander.String(), widget=deform.widget.HiddenWidget(), default='true', validator=colander.OneOf(['true']), title=_('delete me')) params = self.get_base_params() request = self.request params['ab'] = ab = self.request.context.ab form = w.Form(request, authbackend_delete_schema(), buttons=(_('Send'),)) params['f_content'] = form.render() if request.method == 'POST': controls = request.POST.items() # we are in regular post, just registering data in database try: struct = form.validate(controls) try: session.delete(ab) self.request.registry.notify(RegenerateVelruseConfigEvent(self.request)) session.commit() self.request.session.flash(_('Authentication backend deleted'), 'error') return HTTPFound(location=auths_list) except Exception, e: message = _(u'You can try to change some ' 'settings because an exception occured ' 'while adding your new authbackend ' ': ${msg}', mapping={'msg': u'%s' % e}) self.request.session.flash(message, 'error') session.rollback() except ValidationFailure, e: params['f_content'] = e.render()
def __call__(self): params = self.get_base_params() form, request = None, self.request is_a_post = request.method == 'POST' adding = request.params.get('__formid__', '') == 'add_group' default_groups = [a[0] for a in apexmodels.get_default_groups( request.registry.settings)] deleting = request.params.get('group_action', '') == 'delete' class GroupSH(colander.MappingSchema): name = colander.SchemaNode( colander.String(), title = _('Group name'), validator = colander.All( v.not_empty_string, v.existing_group, ) ) description = colander.SchemaNode(colander.String(), title=_('Group description'),) add_form = deform.Form( GroupSH(), buttons=(_('Send'),), formid = 'add_group') if is_a_post and deleting: items = [a[1] for a in request.POST.items() if a[0] == 'delete' and not a[1] in default_groups] todelete = session.query( user.Group).filter( se.and_( user.Group.id.in_(items), se.not_(user.Group.name.in_(default_groups)) ) ).all() noecho = [session.delete(i) for i in todelete] session.commit() request.session.flash(_('Items have been deleted'), 'info') if is_a_post and adding: controls = request.POST.items() try: data = add_form.validate(controls) group = session.query( user.Group).filter( user.Group.name == data['name'] ).first() if not group: rl = user.Group(name=data['name'], description=data['description']) session.add(rl) session.commit() request.session.flash(_('Group added: %s' % rl.name, 'info')) params['add_form'] = add_form.render() except Exception, e: params['add_form'] = e.render()
def __call__(self): params = self.get_base_params() form, request = None, self.request is_a_post = request.method == 'POST' adding = request.params.get('__formid__', '') == 'add_permission' deleting = request.params.get('permission_action', '') == 'delete' class PermissionSH(colander.MappingSchema): name = colander.SchemaNode( colander.String(), title=_('Permission name'), validator = colander.All( v.not_empty_string, v.existing_group, ) ) description = colander.SchemaNode(colander.String(), title=_('Permission description'),) add_form = deform.Form( PermissionSH(), buttons=(_('Send'),), formid = 'add_permission') if is_a_post and deleting: items = [a[1] for a in request.POST.items() if a[0] == 'delete'] todelete = session.query( auth.Permission).filter( se.and_( auth.Permission.id.in_(items), se.not_(auth.Permission.name.in_(auth.default_permissions.keys())) ) ).all() noecho = [session.delete(i) for i in todelete] session.commit() request.session.flash(_('Items have been deleted'), 'info') if is_a_post and adding: controls = request.POST.items() try: data = add_form.validate(controls) permission = session.query( auth.Permission).filter( auth.Permission.name == data['name'] ).first() if not permission: rl = auth.Permission(name=data['name'], description=data['description']) session.add(rl) session.commit() request.session.flash(_('Permission added: %s' % rl.name, 'info')) params['add_form'] = add_form.render() except Exception, e: params['add_form'] = e.render()