From aebe4613e41426d597bf8b7b70d52e7db857c79e Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Fri, 22 Nov 2013 16:51:40 +0100 Subject: [PATCH] [attributs, ...] __getitem__ et __setitem__ pour les attibut dont la valeur est un dictionnaire donc pour blacklist et pour article pour le moment --- attributs.py | 39 +++++++++++++++++++++++++++++++++++++++ printing/templates.py | 1 - services.py | 2 +- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/attributs.py b/attributs.py index a88d5a3..238b867 100644 --- a/attributs.py +++ b/attributs.py @@ -999,6 +999,17 @@ class blacklist(Attr): 'comm' : bl_comm, 'actif' : (bl_debut == '-' or int(bl_debut) < now) and (bl_fin == '-' or int(bl_fin) > now) } + def __getitem__(self, attr): + return self.value.__getitem__(attr) + + def __setitem__(self, attr, values): + if attr in ['debut', 'fin', 'type', 'comm']: + ret=self.value.__setitem__(attr, values) + self.parse_value(unicode(self)) + return ret + else: + raise ValueError("blacklist has no %r" % attr) + def is_actif(self): return self.value['actif'] @@ -1227,8 +1238,36 @@ class recuPaiement(Attr): @crans_attribute class article(Attr): + singlevalue = False + optional = True + legend = u"Articles" + category = 'facture' + can_modify = [cableur, nounou, tresorier] ldap_name = "article" + def parse_value(self, article): + art_code, art_designation, art_nombre, art_pu = article.split('~~') + now = time.time() + self.value = { 'code' : art_code, # code de l'article (SOLDE, FRAIS, ...) + 'designation' : art_designation, + 'nombre' : art_nombre,# nombre d'article + 'pu' : art_pu, # prix à l'unité + } + + def __unicode__(self): + return u'%(code)s~~%(designation)s~~%(nombre)s~~%(pu)s' % self.value + + def __getitem__(self, attr): + return self.value.__getitem__(attr) + + def __setitem__(self, attr, values): + if attr in ['code', 'designation', 'nombre', 'pu']: + ret = self.value.__setitem__(attr, values) + self.parse_value(unicode(self)) + return ret + else: + raise ValueError("article has no %r" % attr) + @crans_attribute class dnsIpv6(boolAttr): ldap_name = "dnsIpv6" diff --git a/printing/templates.py b/printing/templates.py index 6d37b99..0f846e7 100644 --- a/printing/templates.py +++ b/printing/templates.py @@ -17,7 +17,6 @@ def timeformat(t, format): def blacklist(l): bl=[] for b in l: - b=b.value debut=time.strftime("%d/%m/%Y %H:%M", time.localtime(b['debut'])) fin=time.strftime("%d/%m/%Y %H:%M", time.localtime(b['fin'])) couleur='rouge' if b['actif'] else None diff --git a/services.py b/services.py index 26fe6ec..106977e 100644 --- a/services.py +++ b/services.py @@ -109,7 +109,7 @@ def services_to_args_mail_bienvenue(x): def services_to_time_blacklist(x): if isinstance(x, attributs.blacklist): # Un set à au plus deux valeur : la date de début et la date de fin de la blacklist - return set([(0 if x.value['debut'] == '-' else x.value['debut']), (0 if x.value['fin'] == '-' else x.value['fin'])]) + return set([(0 if x['debut'] == '-' else x['debut']), (0 if x['fin'] == '-' else x['fin'])]) else: return [0]