[attributs, ...] __getitem__ et __setitem__ pour les attibut dont la valeur est un dictionnaire

donc pour blacklist et pour article pour le moment
This commit is contained in:
Valentin Samir 2013-11-22 16:51:40 +01:00
parent 49709b663a
commit aebe4613e4
3 changed files with 40 additions and 2 deletions

View file

@ -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"