예제 #1
0
    def copy_permissions(self):
        brains = self.context.portal_catalog(
            path='/'.join(self.context.getPhysicalPath()))
        for brain in brains:
            for user, roles in dict(brain.get_local_roles).items():
                obj = brain.getObject()
                if user == self.source_user:
                    obj.manage_setLocalRoles(self.target_user, roles)
        IStatusMessage(self.request).addStatusMessage(
            _(u'Die Berechtigungen wurden kopiert'), type='info')

        #self.context.restrictedTraverse('@@update_security')()
        self.context.reindexObjectSecurity()
        return self.request.RESPONSE.redirect('@@copy_user_permissions')
예제 #2
0
 def __call__(self, *args, **kwargs):
     self.request.set('disable_border', True)
     form = self.request.form
     self.search = form.get('search_user', False)
     self.user_selected = form.get('user', False) and True
     self.user = form.get('user', False)
     self.confirmed = form.get('confirmed', False) and True
     if self.confirmed:
         self.removePermissions()
         IStatusMessage(self.request).addStatusMessage(
             _(u'Die Berechtigungen wurden erfolgreich entfernt.'),
             type='info')
         return self.request.RESPONSE.redirect('@@permission_manager')
     return self.template()
 def __call__(self, *args, **kwargs):
     self.request.set('disable_border', True)
     form = self.request.form
     self.search = form.get('search_user', False)
     self.user_selected = form.get('user', False) and True
     self.user = form.get('user', False)
     self.confirmed = form.get('confirmed', False) and True
     if self.confirmed:
         self.removePermissions()
         IStatusMessage(self.request).addStatusMessage(
             _(
                 u'Die Berechtigungen wurden erfolgreich entfernt.'),
                 type='info')
         return self.request.RESPONSE.redirect('@@permission_manager')
     return self.template()
    def setPermissions(self, row):
        try:
            obj = self.getObjectByPath(row)
        except AttributeError:
            IStatusMessage(self.request).addStatusMessage(
                _(u"Objekt konnte nicht gefunden werden: ${path}", mapping=dict(path=row["Path"])), type="error"
            )

        user = row["Userid"]
        roles = []
        for role in self.get_roles():
            if len(row[role]) > 0:
                roles.append(role)
        if len(roles) > 0:
            obj.manage_setLocalRoles(user, roles)
        else:
            obj.manage_delLocalRoles((user,))
        return True
    def setPermissions(self, row):
        try:
            obj = self.getObjectByPath(row)
        except (AttributeError, KeyError):
            IStatusMessage(self.request).addStatusMessage(_(
                u'Objekt konnte nicht gefunden werden: ${path}',
                mapping=dict(path=row['Path'])),
                                                          type='error')
            return

        user = row['Userid'].decode(self.encoding)
        roles = []
        for role in self.get_roles():
            if len(row[role]) > 0:
                roles.append(role)
        if len(roles) > 0:
            obj.manage_setLocalRoles(user, roles)
        else:
            obj.manage_delLocalRoles((user, ))
        return True
    def setPermissions(self, row):
        try:
            obj = self.getObjectByPath(row)
        except (AttributeError, KeyError):
            IStatusMessage(self.request).addStatusMessage(
                _(
                    u'Objekt konnte nicht gefunden werden: ${path}',
                    mapping=dict(path=row['Path'])),
                type='error')
            return

        user = row['Userid'].decode(self.encoding)
        roles = []
        for role in self.get_roles():
            if len(row[role])>0:
                roles.append(role)
        if len(roles)>0:
            obj.manage_setLocalRoles(user, roles)
        else:
            obj.manage_delLocalRoles((user, ))
        return True
    def startImport(self):
        _file = self.request.get("file")
        data = _file.read().replace("\r\n", "\n").replace("\r", "\n")
        data = StringIO.StringIO(data)
        dialect = csv.Sniffer().sniff(data.readline())
        data.seek(0)
        reader = csv.DictReader(data, fieldnames=self.get_fieldnames(), dialect=dialect)
        titles = None
        rows_imported = 0
        for row in reader:
            if not titles:
                titles = row
                continue
            if self.setPermissions(row):
                rows_imported += 1
        IStatusMessage(self.request).addStatusMessage(
            _(u"Es wurden ${rows_imported} Berechtigungen gesetzt.", mapping=dict(rows_imported=rows_imported)),
            type="info",
        )

        self.context.reindexObjectSecurity()
    def startImport(self):
        _file = self.request.get('file')
        data = _file.read().replace('\r\n', '\n').replace('\r', '\n')
        data = StringIO.StringIO(data)
        dialect = csv.Sniffer().sniff(data.readline())
        data.seek(0)
        reader = csv.DictReader(data,
                                fieldnames=self.get_fieldnames(),
                                dialect=dialect)
        titles = None
        rows_imported = 0
        for row in reader:
            if not titles:
                titles = row
                continue
            if self.setPermissions(row):
                rows_imported += 1
        IStatusMessage(self.request).addStatusMessage(_(
            u'Es wurden ${rows_imported} Berechtigungen gesetzt.',
            mapping=dict(rows_imported=rows_imported)),
                                                      type='info')

        self.context.reindexObjectSecurity()
    def __call__(self):
        mtool = getToolByName(self.context, 'portal_membership')
        gtool = getToolByName(self.context, 'portal_groups')

        principalid = self.request.get('principalid', None)

        if not principalid:
            return ''

        self.principalid = principalid

        member = mtool.getMemberById(self.principalid)
        if member:
            groups = gtool.getGroupsByUserId(self.principalid)
            self.groupids = [group.getId() for group in groups]

        tree = self.build_tree()
        if not tree:
            return translate(_(u'text_no_result', default=u'No results found'),
                             context=self.request)

        else:
            return self.render_tree(tree['children'])