Example #1
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)
 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)
Example #3
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))
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))