From a06b40b4e054ac39f027db6d4a3b9aea81d310a4 Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Sun, 4 Nov 2012 03:29:29 +0100 Subject: [PATCH] =?UTF-8?q?[lc=5Fldap]=20Ajout=20d'une=20m=C3=A9thode=20ca?= =?UTF-8?q?rte=5Fok=20pour=20carte=20=C3=A9tudiant=20et=20blackliste=20vir?= =?UTF-8?q?tuelles=20pour=20carte=20=C3=A9tudiant=20et=20chambre=20invalid?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lc_ldap.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lc_ldap.py b/lc_ldap.py index 579c13e..90b3990 100644 --- a/lc_ldap.py +++ b/lc_ldap.py @@ -453,8 +453,18 @@ class CransLdapObject(object): - Proposer de filtrer les blacklistes avec un arg supplémentaire ? - Vérifier les blacklistes des machines pour les adhérents ? """ + blacklist_liste=[] + # blacklistes virtuelle si on est un adhérent pour carte étudiant et chambre invalides + if self.__class__.__name__ == "adherent" and self.paiement_ok(): + if not config.periode_transitoire and config.bl_carte_et_actif and not self.carte_ok(): + bl = blacklist(u'%s$%s$%s$%s' % ('-', '-', 'carte_etudiant', ''), {}, self.conn, False) + blacklist_liste.append(bl) + if self['chbre'][0].value == '????': + bl = blacklist(u'%s$%s$%s$%s' % ('-', '-', 'chambre_invalide', ''), {}, self.conn, False) + blacklist_liste.append(bl) attrs = (self.attrs if self.mode not in ["w", "rw"] else self._modifs) - return filter((lambda bl: bl.is_actif()), attrs.get("blacklist",[])) + blacklist_liste.extend(filter((lambda bl: bl.is_actif()), attrs.get("blacklist",[]))) + return blacklist_liste def blacklist(self, sanction, commentaire, debut="now", fin = '-'): u""" @@ -506,6 +516,20 @@ class proprio(CransLdapObject): pass return bool_carte and bool_paiement return bool_paiement + + def carte_ok(self): + u"""Renvoie si le propriétaire a donné sa carte pour l'année en cours""" + if not self.dn == base_dn and config.bl_carte_et_actif and not 'club' in map(lambda x:x.value,self["objectClass"]): + bool_carte = False + try: + for carte in self['carteEtudiant']: + if carte.value == config.ann_scol: + bool_carte = True + except KeyError: + pass + return bool_carte + return True +