예제 #1
0
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)
예제 #2
0
    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()
예제 #3
0
 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()
예제 #4
0
    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()