[attributs] Les imprimeurs et les respos des clubs sont générés à la volée
Leur valeur sont un property au lieu d'une valeur fixe.
This commit is contained in:
parent
83198b6bf6
commit
dfed1fceb2
3 changed files with 52 additions and 24 deletions
59
attributs.py
59
attributs.py
|
@ -115,7 +115,7 @@ class Attr(object):
|
||||||
ctxt_check: effectue les validations
|
ctxt_check: effectue les validations
|
||||||
"""
|
"""
|
||||||
self.ctxt_check=ctxt_check
|
self.ctxt_check=ctxt_check
|
||||||
self.value = None
|
#self.value = None
|
||||||
self.conn = conn
|
self.conn = conn
|
||||||
assert isinstance(val, unicode)
|
assert isinstance(val, unicode)
|
||||||
self.parse_value(val, ldif)
|
self.parse_value(val, ldif)
|
||||||
|
@ -719,18 +719,34 @@ class responsable(Attr):
|
||||||
legend = u"Responsable du club"
|
legend = u"Responsable du club"
|
||||||
category = 'perso'
|
category = 'perso'
|
||||||
can_modify = [cableur, nounou]
|
can_modify = [cableur, nounou]
|
||||||
|
|
||||||
|
def nonefunction(self, val):
|
||||||
|
"""
|
||||||
|
Just... do... nothing.
|
||||||
|
L'idée est qu'on initialise self.value à None
|
||||||
|
dans Attr. Simplement ici, self.value est une property,
|
||||||
|
donc il faut une fonction pour l'attribution.
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
def get_respo(self):
|
def get_respo(self):
|
||||||
if self.value == None:
|
if hasattr(self, "_value"):
|
||||||
self.value=self.conn.search('aid=%s' % self.__resp)[0]
|
return self._value
|
||||||
return self.value
|
else:
|
||||||
|
try:
|
||||||
|
res = self.conn.search('aid=%s' % self.__value)[0]
|
||||||
|
except IndexError:
|
||||||
|
raise ValueError("L'adherent %s n'existe pas ou plus" % (self.__value))
|
||||||
|
self._value = res
|
||||||
|
return res
|
||||||
|
|
||||||
def parse_value(self, resp, ldif):
|
def parse_value(self, resp, ldif):
|
||||||
self.__resp=resp
|
self.__value = resp
|
||||||
self.value = property(self.get_respo)
|
|
||||||
|
value = property(get_respo, nonefunction)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.__resp
|
return self.__value
|
||||||
|
|
||||||
class imprimeurClub(Attr):
|
class imprimeurClub(Attr):
|
||||||
optional = True
|
optional = True
|
||||||
|
@ -738,11 +754,30 @@ class imprimeurClub(Attr):
|
||||||
category = "perso"
|
category = "perso"
|
||||||
can_modify = [cableur, nounou]
|
can_modify = [cableur, nounou]
|
||||||
|
|
||||||
|
def nonefunction(self, val):
|
||||||
|
"""
|
||||||
|
Just... do... nothing.
|
||||||
|
L'idée est qu'on initialise self.value à None
|
||||||
|
dans Attr. Simplement ici, self.value est une property,
|
||||||
|
donc il faut une fonction pour l'attribution.
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_imprimeur(self):
|
||||||
|
if hasattr(self, "_value"):
|
||||||
|
return self._value
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
res = self.conn.search('aid=%s' % int(self.__value))[0]
|
||||||
|
except IndexError:
|
||||||
|
raise ValueError("L'adhérent aid=%r n'existe pas ou plus" % self.__value)
|
||||||
|
self._value = res
|
||||||
|
return res
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
res = self.conn.search('aid=%s' % int(val))
|
self.__value = val
|
||||||
if len(res) != 1:
|
|
||||||
raise ValueError("L'adhérent aid=%r n'existe plus." % val)
|
value = property(get_imprimeur, nonefunction)
|
||||||
self.value = res[0]
|
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return unicode(self.value['aid'][0])
|
return unicode(self.value['aid'][0])
|
||||||
|
|
|
@ -160,7 +160,7 @@ def validate_name(value, more_chars=""):
|
||||||
apostrophes, et éventuellement des caractères additionnels"""
|
apostrophes, et éventuellement des caractères additionnels"""
|
||||||
if re.match("^[A-Za-z0-9]([-' %s]?[A-Za-z0-9])*$" % more_chars,
|
if re.match("^[A-Za-z0-9]([-' %s]?[A-Za-z0-9])*$" % more_chars,
|
||||||
normalize('NFKD', value).encode('ASCII', 'ignore')):
|
normalize('NFKD', value).encode('ASCII', 'ignore')):
|
||||||
return value
|
return unicode(value)
|
||||||
else:
|
else:
|
||||||
raise ValueError("Nom invalide ('%s')" % value)
|
raise ValueError("Nom invalide ('%s')" % value)
|
||||||
|
|
||||||
|
|
15
lc_ldap.py
15
lc_ldap.py
|
@ -387,17 +387,10 @@ class lc_ldap_local(lc_ldap):
|
||||||
L'idée est que les machines avec un réplica bossent
|
L'idée est que les machines avec un réplica bossent
|
||||||
avec elles-mêmes pour la lecture, pas avec vert."""
|
avec elles-mêmes pour la lecture, pas avec vert."""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
if os.path.exists('/var/run/slapd/ldapi'):
|
secrets = import_secrets()
|
||||||
ro_uri = 'ldapi://%2fvar%2frun%2fslapd%2fldapi/'
|
ro_uri = 'ldap://127.0.0.1'
|
||||||
auth_dn = auth_pw = ""
|
auth_dn = secrets.ldap_readonly_auth_dn
|
||||||
elif os.path.exists('/var/run/ldapi'):
|
auth_pw = secrets.ldap_readonly_password
|
||||||
ro_uri = 'ldapi://%2fvar%2frun%2fldapi/'
|
|
||||||
auth_dn = auth_pw = ""
|
|
||||||
else:
|
|
||||||
secrets = import_secrets()
|
|
||||||
ro_uri = 'ldap://127.0.0.1'
|
|
||||||
auth_dn = secrets.ldap_readonly_auth_dn
|
|
||||||
auth_pw = secrets.ldap_readonly_password
|
|
||||||
|
|
||||||
super(lc_ldap_local, self).__init__(uri=ro_uri, dn=auth_dn, cred=auth_pw)
|
super(lc_ldap_local, self).__init__(uri=ro_uri, dn=auth_dn, cred=auth_pw)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue