示例#1
0
 def add(self, entry):
     self.users = SessionUsers(self.context)
     util = getUtility(IUserManagerUtil)
     entry = util.new(entry)
     users = util.find(entry['uniqueIdentifier'])
     self.users = SessionUsers(self.context)
     self.users.set_users(users)
示例#2
0
 def add(self, entry):
     self.users = SessionUsers(self.context)
     util = getUtility(IUserManagerUtil)
     entry = util.new(entry)
     users = util.find(entry['uniqueIdentifier'])
     self.users = SessionUsers(self.context)
     self.users.set_users(users)
示例#3
0
    def update(self):
        self.uc_update()
        form.SchemaForm.update(self)

        self.users = SessionUsers(self.context)
        user = self.users.current()
        uid = user.get('uid', '???')
        cn = user.get('cn', '???')
        accClass = user.get('accClass', '???')

        self.label = "Cambiar password para '{0}'".format(uid)
        self.description = '{0}: {1}'.format(cn, accClass)
示例#4
0
class New(form.SchemaAddForm, UcBaseView):
    '''Nuevo Usuario'''
    grok.context(IUserManager)
    grok.require('usermanager.new')
    grok.name('new')

    schema = IUser
    ignoreContext = True
    label = 'Crear un nuevo Usuario'
    name = 'usermanager-add-form'

    def updateWidgets(self):
        form.SchemaAddForm.updateWidgets(self)
        widget = self.widgets['accClass']
        widget.template = ViewPageTemplateFile("browser/acc_class_widget.pt")

    def create(self, data):
        entry = self.entry_from_user(data)
        return entry

    def add(self, entry):
        self.users = SessionUsers(self.context)
        util = getUtility(IUserManagerUtil)
        entry = util.new(entry)
        users = util.find(entry['uniqueIdentifier'])
        self.users = SessionUsers(self.context)
        self.users.set_users(users)

    @button.buttonAndHandler(_('Crear'), name='save')
    def handleAdd(self, action):
        self.uc_update()

        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return
        try:
            obj = self.createAndAdd(data)
        except Exception as err:
            self.set_status(str(err), u'error')
            return

        if obj is not None:
            self._finishedAdd = True
            self.set_status('Usuario creado.', u'info')

    @button.buttonAndHandler(_(u'Cancelar'), name='cancel')
    def handleCancel(self, action):
        self.uc_update()
        self.set_status('Accion cancelada.', u'info')
        self.request.response.redirect(self.nextURL())
示例#5
0
class New(form.SchemaAddForm, UcBaseView):
    '''Nuevo Usuario'''
    grok.context(IUserManager)
    grok.require('usermanager.new')
    grok.name('new')

    schema = IUser
    ignoreContext = True
    label = 'Crear un nuevo Usuario'
    name = 'usermanager-add-form'

    def updateWidgets(self):
        form.SchemaAddForm.updateWidgets(self)
        widget = self.widgets['accClass']
        widget.template = ViewPageTemplateFile("browser/acc_class_widget.pt")

    def create(self, data):
        entry = self.entry_from_user(data)
        return entry

    def add(self, entry):
        self.users = SessionUsers(self.context)
        util = getUtility(IUserManagerUtil)
        entry = util.new(entry)
        users = util.find(entry['uniqueIdentifier'])
        self.users = SessionUsers(self.context)
        self.users.set_users(users)

    @button.buttonAndHandler(_('Crear'), name='save')
    def handleAdd(self, action):
        self.uc_update()

        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return
        try:
            obj = self.createAndAdd(data)
        except Exception as err:
            self.set_status(str(err), u'error')
            return

        if obj is not None:
            self._finishedAdd = True
            self.set_status('Usuario creado.', u'info')

    @button.buttonAndHandler(_(u'Cancelar'), name='cancel')
    def handleCancel(self, action):
        self.uc_update()
        self.set_status('Accion cancelada.', u'info')
        self.request.response.redirect(self.nextURL())
示例#6
0
class Password(form.SchemaForm, UcBaseView):
    '''Cambio de Password'''
    grok.context(IUserManager)
    grok.require('usermanager.password')
    grok.name('password')

    schema = IPassword
    ignoreContext = True

    def update(self):
        self.uc_update()
        form.SchemaForm.update(self)

        self.users = SessionUsers(self.context)
        user = self.users.current()
        uid = user.get('uid', '???')
        cn = user.get('cn', '???')
        accClass = user.get('accClass', '???')

        self.label = "Cambiar password para '{0}'".format(uid)
        self.description = '{0}: {1}'.format(cn, accClass)

    @button.buttonAndHandler(u'Ok')
    def handleApply(self, action):
        '''Boton OK'''
        if not self.admin.has_permission(self.current_user):
            return

        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        self.users = SessionUsers(self.context)
        user = self.users.current()
        util = getUtility(IUserManagerUtil)

        try:
            user = util.password(user, data['userPassword'])
            self.users.set_current(user)
            self.status = 'Password cambiado.'
            self.response.redirect(self.context.absolute_url())

        except PasswordException as e:
            self.context.plone_utils.addPortalMessage(e.message, 'error')


    @button.buttonAndHandler(u"Cancel")
    def handleCancel(self, action):
        '''Boton cancelar'''
        self.response.redirect(self.context.absolute_url())
示例#7
0
class Password(form.SchemaForm, UcBaseView):
    '''Cambio de Password'''
    grok.context(IUserManager)
    grok.require('usermanager.password')
    grok.name('password')

    schema = IPassword
    ignoreContext = True

    def update(self):
        self.uc_update()
        form.SchemaForm.update(self)

        self.users = SessionUsers(self.context)
        user = self.users.current()
        uid = user.get('uid', '???')
        cn = user.get('cn', '???')
        accClass = user.get('accClass', '???')

        self.label = "Cambiar password para '{0}'".format(uid)
        self.description = '{0}: {1}'.format(cn, accClass)

    @button.buttonAndHandler(u'Ok')
    def handleApply(self, action):
        '''Boton OK'''
        if not self.admin.has_permission(self.current_user):
            return

        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        self.users = SessionUsers(self.context)
        user = self.users.current()
        util = getUtility(IUserManagerUtil)

        try:
            user = util.password(user, data['userPassword'])
            self.users.set_current(user)
            self.status = 'Password cambiado.'
            self.response.redirect(self.context.absolute_url())

        except PasswordException as e:
            self.context.plone_utils.addPortalMessage(e.message, 'error')

    @button.buttonAndHandler(u"Cancel")
    def handleCancel(self, action):
        '''Boton cancelar'''
        self.response.redirect(self.context.absolute_url())
示例#8
0
class Search(grok.View):
    '''Vista que ejecuta la busqueda'''
    grok.context(IUserManager)
    grok.require('usermanager.view')
    grok.name('search')

    def update(self):
        util = getUtility(IUserManagerUtil)
        users = util.find(self.request.uid_or_ci)
        self.users = SessionUsers(self.context)
        self.users.set_users(users)

    def render(self):
        self.response.redirect(self.context.absolute_url())
        return u''
示例#9
0
class Search(grok.View):
    '''Vista que ejecuta la busqueda'''
    grok.context(IUserManager)
    grok.require('usermanager.view')
    grok.name('search')

    def update(self):
        util = getUtility(IUserManagerUtil)
        users = util.find(self.request.uid_or_ci)
        self.users = SessionUsers(self.context)
        self.users.set_users(users)

    def render(self):
        self.response.redirect(self.context.absolute_url())
        return u''
示例#10
0
    def update(self):
        self.uc_update()
        form.SchemaForm.update(self)

        self.users = SessionUsers(self.context)
        user = self.users.current()
        uid = user.get('uid', '???')
        cn = user.get('cn', '???')
        accClass = user.get('accClass', '???')

        self.label = "Cambiar password para '{0}'".format(uid)
        self.description = '{0}: {1}'.format(cn, accClass)
示例#11
0
    def handleApply(self, action):
        '''Boton OK'''
        if not self.admin.has_permission(self.current_user):
            return

        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        self.users = SessionUsers(self.context)
        user = self.users.current()
        util = getUtility(IUserManagerUtil)

        try:
            user = util.password(user, data['userPassword'])
            self.users.set_current(user)
            self.status = 'Password cambiado.'
            self.response.redirect(self.context.absolute_url())

        except PasswordException as e:
            self.context.plone_utils.addPortalMessage(e.message, 'error')
示例#12
0
    def handleApply(self, action):
        '''Boton OK'''
        if not self.admin.has_permission(self.current_user):
            return

        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        self.users = SessionUsers(self.context)
        user = self.users.current()
        util = getUtility(IUserManagerUtil)

        try:
            user = util.password(user, data['userPassword'])
            self.users.set_current(user)
            self.status = 'Password cambiado.'
            self.response.redirect(self.context.absolute_url())

        except PasswordException as e:
            self.context.plone_utils.addPortalMessage(e.message, 'error')
示例#13
0
 def uc_update(self):
     self.users = SessionUsers(self.context)
     self.current_user = self.users.current()
     self.admin = AdminUtil(self.context)
     self.util = getUtility(IUserManagerUtil)
     self._status = IStatusMessage(self.request)
示例#14
0
class UcBaseView:
    def uc_update(self):
        self.users = SessionUsers(self.context)
        self.current_user = self.users.current()
        self.admin = AdminUtil(self.context)
        self.util = getUtility(IUserManagerUtil)
        self._status = IStatusMessage(self.request)

    def has_permission(self):
        if not self.current_user:
            return True
        return self.admin.has_permission(self.current_user)

        if self.current_user and \
                not self.admin.has_permission(self.current_user):
            self.set_status(
                u'Usted no tiene permisos para actuar sobre este usuario.',
                u'error')
        else:
            self.clear_status()

    def clear_status(self):
        return self._status.show()

    def add_status(self, msg, kind):
        self._status.add(msg, kind)

    def set_status(self, msg, kind=u''):
        self.clear_status()
        self.add_status(msg, kind)

    def entry_from_user(self, dct):
        entry = dict(**dct)
        for k, v in entry.items():
            if 'date' in k:
                entry[k] = self._string_from_date(v)
                continue
            entry[k] = entry[k].encode('ascii') if entry[k] else ''

        # Consolidamos givenName2 y surname2 en givenname y surname
        self._attributes_to_list(entry, 'givenName')
        self._attributes_to_list(entry, 'sn')
        if 'uid' in entry:
            entry['uid'] = entry['uid'].lower()
        return entry

    def _attributes_to_list(self, dct, k):
        '''Convierte {k='a', k2='b'} en {k=['a', 'b']}'''
        k2 = k + '2'
        if not k2 in dct:
            return
        if not dct[k2]:
            del (dct[k2])
            return
        dct[k] = [dct[k], dct[k2]]
        del (dct[k2])

    def _date_or_empty_from_entry(self, entry, key):
        date_string = entry.first(key, '')
        if not date_string:
            return ''
        return self._date_from_string(date_string)

    def user_from_entry(self, entry):
        entry['dateCreation'] = self._date_or_empty_from_entry(
            entry, 'dateCreation')
        entry['dateExpiration'] = self._date_or_empty_from_entry(
            entry, 'dateExpiration')
        self._list_to_attributes(entry, 'givenName')
        self._list_to_attributes(entry, 'sn')
        return entry

    def _list_to_attributes(self, dct, k):
        '''Convierte {k=['a', 'b']} en {k='a', k2='b'}'''
        k2 = k + '2'
        if type(dct[k]) <> list:
            return
        elif len(dct[k]) == 1:
            dct[k2] = ''
            dct[k] = dct[k][0]
        else:
            dct[k2] = dct[k][1]
            dct[k] = dct[k][0]

    def _date_from_string(self, strdate):
        try:
            return datetime.strptime(strdate, '%Y%m%d')
        except ValueError, e:
            raise ValueError('Error in dateformat "{0}"'.format(strdate))
示例#15
0
 def getContent(self):
     entry = SessionUsers(self.context).current()
     user = self.user_from_entry(entry)
     return user
示例#16
0
class UcBaseView:
    def uc_update(self):
        self.users = SessionUsers(self.context)
        self.current_user = self.users.current()
        self.admin = AdminUtil(self.context)
        self.util = getUtility(IUserManagerUtil)
        self._status = IStatusMessage(self.request)

    def has_permission(self):
        if not self.current_user:
            return True
        return self.admin.has_permission(self.current_user)

        if self.current_user and \
                not self.admin.has_permission(self.current_user):
            self.set_status(u'Usted no tiene permisos para actuar sobre este usuario.', u'error')
        else:
            self.clear_status()

    def clear_status(self):
        return self._status.show()

    def add_status(self, msg, kind):
        self._status.add(msg, kind)

    def set_status(self, msg, kind=u''):
        self.clear_status()
        self.add_status(msg, kind)

    def entry_from_user(self, dct):
        entry = dict(**dct)
        for k, v in entry.items():
            if 'date' in k :
                entry[k] = self._string_from_date(v)
                continue
            entry[k] = entry[k].encode('ascii') if entry[k] else ''

        # Consolidamos givenName2 y surname2 en givenname y surname
        self._attributes_to_list(entry, 'givenName')
        self._attributes_to_list(entry, 'sn')
        if 'uid' in entry:
            entry['uid'] = entry['uid'].lower()
        return entry

    def _attributes_to_list(self, dct, k):
        '''Convierte {k='a', k2='b'} en {k=['a', 'b']}'''
        k2 = k + '2'
        if not k2 in dct:
            return
        if not dct[k2]:
            del(dct[k2])
            return
        dct[k] = [dct[k], dct[k2]]
        del(dct[k2])

    def _date_or_empty_from_entry(self, entry, key):
        date_string = entry.first(key, '')
        if not date_string:
            return ''
        return self._date_from_string(date_string)

    def user_from_entry(self, entry):
        entry['dateCreation'] = self._date_or_empty_from_entry(entry, 'dateCreation')
        entry['dateExpiration'] = self._date_or_empty_from_entry(entry, 'dateExpiration')
        self._list_to_attributes(entry, 'givenName')
        self._list_to_attributes(entry, 'sn')
        return entry

    def _list_to_attributes(self, dct, k):
        '''Convierte {k=['a', 'b']} en {k='a', k2='b'}'''
        k2 = k + '2'
        if type(dct[k]) <> list:
            return
        elif len(dct[k]) == 1:
            dct[k2] = ''
            dct[k] = dct[k][0]
        else:
            dct[k2] = dct[k][1]
            dct[k] = dct[k][0]

    def _date_from_string(self, strdate):
        try:
            return datetime.strptime(strdate, '%Y%m%d')
        except ValueError, e:
            raise ValueError('Error in dateformat "{0}"'.format(strdate))
示例#17
0
 def uc_update(self):
     self.users = SessionUsers(self.context)
     self.current_user = self.users.current()
     self.admin = AdminUtil(self.context)
     self.util = getUtility(IUserManagerUtil)
     self._status = IStatusMessage(self.request)
示例#18
0
 def update(self):
     util = getUtility(IUserManagerUtil)
     users = util.find(self.request.uid_or_ci)
     self.users = SessionUsers(self.context)
     self.users.set_users(users)
示例#19
0
 def update(self):
     util = getUtility(IUserManagerUtil)
     users = util.find(self.request.uid_or_ci)
     self.users = SessionUsers(self.context)
     self.users.set_users(users)