From dfed1fceb28fd185af7f79ec71e435bdc56ac85b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Elliott=20B=C3=A9cue?= Date: Tue, 5 Mar 2013 16:55:21 +0100 Subject: [PATCH] =?UTF-8?q?[attributs]=20Les=20imprimeurs=20et=20les=20res?= =?UTF-8?q?pos=20des=20clubs=20sont=20g=C3=A9n=C3=A9r=C3=A9s=20=C3=A0=20la?= =?UTF-8?q?=20vol=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Leur valeur sont un property au lieu d'une valeur fixe. --- attributs.py | 59 ++++++++++++++++++++++++++++++++++++++++---------- crans_utils.py | 2 +- lc_ldap.py | 15 ++++--------- 3 files changed, 52 insertions(+), 24 deletions(-) diff --git a/attributs.py b/attributs.py index d50f516..350d5a1 100644 --- a/attributs.py +++ b/attributs.py @@ -115,7 +115,7 @@ class Attr(object): ctxt_check: effectue les validations """ self.ctxt_check=ctxt_check - self.value = None + #self.value = None self.conn = conn assert isinstance(val, unicode) self.parse_value(val, ldif) @@ -719,18 +719,34 @@ class responsable(Attr): legend = u"Responsable du club" category = 'perso' 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): - if self.value == None: - self.value=self.conn.search('aid=%s' % self.__resp)[0] - return self.value + if hasattr(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): - self.__resp=resp - self.value = property(self.get_respo) + self.__value = resp + + value = property(get_respo, nonefunction) def __unicode__(self): - return self.__resp + return self.__value class imprimeurClub(Attr): optional = True @@ -738,11 +754,30 @@ class imprimeurClub(Attr): category = "perso" 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): - res = self.conn.search('aid=%s' % int(val)) - if len(res) != 1: - raise ValueError("L'adhérent aid=%r n'existe plus." % val) - self.value = res[0] + self.__value = val + + value = property(get_imprimeur, nonefunction) def __unicode__(self): return unicode(self.value['aid'][0]) diff --git a/crans_utils.py b/crans_utils.py index 5737ce1..bad7078 100644 --- a/crans_utils.py +++ b/crans_utils.py @@ -160,7 +160,7 @@ def validate_name(value, more_chars=""): apostrophes, et éventuellement des caractères additionnels""" if re.match("^[A-Za-z0-9]([-' %s]?[A-Za-z0-9])*$" % more_chars, normalize('NFKD', value).encode('ASCII', 'ignore')): - return value + return unicode(value) else: raise ValueError("Nom invalide ('%s')" % value) diff --git a/lc_ldap.py b/lc_ldap.py index 0b990ef..3860271 100644 --- a/lc_ldap.py +++ b/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 avec elles-mêmes pour la lecture, pas avec vert.""" def __init__(self): - if os.path.exists('/var/run/slapd/ldapi'): - ro_uri = 'ldapi://%2fvar%2frun%2fslapd%2fldapi/' - auth_dn = auth_pw = "" - elif os.path.exists('/var/run/ldapi'): - 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 + 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)