Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
sim0nx committed Jul 30, 2013
1 parent e0e8b79 commit f4108d5
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 66 deletions.
79 changes: 17 additions & 62 deletions MeMaTool/mematool/model/ldapModelFactory.py
Expand Up @@ -20,7 +20,6 @@
import logging

from pylons import config
from pylons.i18n.translation import _

#from mematool.lib.base import Session
#from sqlalchemy.orm.exc import NoResultFound
Expand All @@ -34,7 +33,6 @@

from mematool.lib.syn2cat.ldapConnector import LdapConnector
import ldap
import re


class LdapModelFactory(BaseModelFactory):
Expand Down Expand Up @@ -83,17 +81,13 @@ def getUser(self, uid):
continue

# @TODO handle multiple results
v = unicode(str(v[0]), 'utf-8')
v = v[0]

# @todo: why again do we still need this ?
if k == 'sambaSID' and v == '':
v = None
elif k in ['spaceKey', 'npoMember', 'isMinor']:
if v.lower() == 'true':
v = True
else:
v = False

setattr(m, k, v)
m.set_property(k, v)

m.groups = self.getUserGroupList(uid)

Expand Down Expand Up @@ -122,14 +116,14 @@ def getUserList(self):
return users

def getActiveMemberList(self):
users = self.getUserList()
ausers = []
'''Get a list of members not belonging to the locked-members group'''
users = []

for u in users:
for u in self.getUserList():
if not self.isUserInGroup(u, self.cnf.get('mematool.group_lockedmember')):
ausers.append(u)
users.append(u)

return ausers
return users

def getUserGroupList(self, uid):
'''Get a list of groups a user is a member of'''
Expand Down Expand Up @@ -221,27 +215,8 @@ def _updateMember(self, member, is_admin=True):
om = self.getUser(member.uid)

if is_admin:
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'cn'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'sn'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'givenName'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'homePostalAddress'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'homePhone'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'mobile'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'mail'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'gidNumber'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'loginShell'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'homeDirectory'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'arrivalDate'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'leavingDate'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'sshPublicKey'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'pgpKey'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'iButtonUID'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'conventionSigner'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'xmppID'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'spaceKey'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'npoMember'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'nationality'))
mod_attrs.append(self.prepareVolatileAttribute(member, om, 'isMinor'))
for k in member.auto_update_vars:
mod_attrs.append(self.prepareVolatileAttribute(member, om, k))

if member.userPassword and member.userPassword != '':
mod_attrs.append((ldap.MOD_REPLACE, 'userPassword', str(member.userPassword)))
Expand All @@ -268,32 +243,12 @@ def _addMember(self, member):
mod_attrs.append(('objectclass', ['posixAccount', 'organizationalPerson', 'inetOrgPerson', 'shadowAccount', 'top', 'samsePerson', 'sambaSamAccount', 'ldapPublicKey', 'syn2catPerson']))
mod_attrs.append(('ou', ['People']))

mod_attrs.append(self.prepareVolatileAttribute(member, None, 'uid'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'cn'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'sn'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'givenName'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'homePostalAddress'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'homePhone'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'mobile'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'mail'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'gidNumber'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'loginShell'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'homeDirectory'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'arrivalDate'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'leavingDate'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'sshPublicKey'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'pgpKey'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'iButtonUID'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'conventionSigner'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'xmppID'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'spaceKey'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'npoMember'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'nationality'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'userPassword'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'uidNumber'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'sambaSID'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'sambaNTPassword'))
mod_attrs.append(self.prepareVolatileAttribute(member, None, 'isMinor'))
for k in member.auto_update_vars:
mod_attrs.append(self.prepareVolatileAttribute(member, None, k))

for k in member.no_auto_update_vars:
if not k == 'jpegPhoto':
mod_attrs.append(self.prepareVolatileAttribute(member, None, k))

while None in mod_attrs:
mod_attrs.remove(None)
Expand Down Expand Up @@ -778,7 +733,7 @@ def deleteMaildrop(self, alias, uid):
return True

def deleteAlias(self, alias):
'''Completely remove a alias'''
'''Completely remove an alias'''

a = self.getAlias(alias)
dn = a.getDN(self.cnf.get('ldap.basedn')).encode('ascii', 'ignore')
Expand Down
43 changes: 39 additions & 4 deletions MeMaTool/mematool/model/ldapmodel.py
Expand Up @@ -35,16 +35,28 @@ class BaseObject(object):
list_vars = []
bool_vars = []
bin_vars = []
no_auto_update_vars = []

def __init__(self):
self.auto_update_vars = []

for v in self.str_vars:
setattr(self, v, '')
if not v in self.no_auto_update_vars:
self.auto_update_vars.append(v)

for v in self.list_vars:
setattr(self, v, [])

for v in self.bool_vars:
setattr(self, v, False)
if not v in self.no_auto_update_vars:
self.auto_update_vars.append(v)

for v in self.bin_vars:
setattr(self, v, None)
if not v in self.no_auto_update_vars:
self.auto_update_vars.append(v)

self.all_vars = []
self.all_vars.extend(self.str_vars)
Expand All @@ -68,6 +80,20 @@ def __eq__(self, om):
def __ne__(self, om):
return not self == om

def set_property(self, key, value):
if key in self.bool_vars:
if value.lower() == 'true':
setattr(self, key, True)
else:
setattr(self, key, False)
elif key in self.bin_vars:
setattr(self, key, value)
elif not value is None and not isinstance(value, unicode):
value_ = unicode(str(value), 'utf-8')
setattr(self, key, value_)
else:
setattr(self, key, value)


class Member(BaseObject):
# ldap
Expand All @@ -89,18 +115,22 @@ class Member(BaseObject):
'uidNumber',
'gidNumber',
'loginShell',
'hDirectory',
'homeDirectory',
'homePostalAddress',
'arrivalDate',
'leavingDate',
'nationality']
list_vars = ['groups']
bool_vars = ['fullMember',
'lockedMember',
'spaceKey',
bool_vars = ['spaceKey',
'npoMember',
'isMinor']
bin_vars = ['jpegPhoto']
no_auto_update_vars = ['userPassword',
'sambaNTPassword',
'sambaSID',
'uidNumber',
'uid',
'jpegPhoto']

'''
uid = '' # uid
Expand Down Expand Up @@ -131,6 +161,11 @@ class Member(BaseObject):
isMinor = False
'''

def __init__(self):
super(Member, self).__init__()
self.fullMember = False
self.lockedMember = False

def __repr__(self):
return "<Member('uidNumber=%s, uid=%s, validate=%s')>" % (self.uidNumber, self.uid, self.validate)

Expand Down

0 comments on commit f4108d5

Please sign in to comment.