- Nouvelle methode derniereConnexion pour Adherent.
- On verifie que la nouvelle valeur n'est pas nulle dans la methode _set de BaseClasseCrans. darcs-hash:20060520153737-68412-dd0a67b580cd1e23440667a6f8fae697905c7de3.gz
This commit is contained in:
parent
63f650cd86
commit
5499472a9c
2 changed files with 61 additions and 16 deletions
|
@ -1031,7 +1031,8 @@ class BaseClasseCrans(CransLdap):
|
||||||
for champ in ['chbre', 'nom', 'prenom', 'mail', 'tel',
|
for champ in ['chbre', 'nom', 'prenom', 'mail', 'tel',
|
||||||
'rewriteMailHeaders', 'contourneGreylist',
|
'rewriteMailHeaders', 'contourneGreylist',
|
||||||
'puissance', 'canal', 'prise', 'responsable',
|
'puissance', 'canal', 'prise', 'responsable',
|
||||||
'macAddress', 'ipHostNumber', 'host', 'positionBorne']:
|
'macAddress', 'ipHostNumber', 'host', 'positionBorne',
|
||||||
|
'derniereConnexion']:
|
||||||
if champ in self.modifs:
|
if champ in self.modifs:
|
||||||
if champ not in self._init_data.keys():
|
if champ not in self._init_data.keys():
|
||||||
valeur_initiale = 'N/A'
|
valeur_initiale = 'N/A'
|
||||||
|
@ -1078,6 +1079,13 @@ class BaseClasseCrans(CransLdap):
|
||||||
timestamp = time.localtime()
|
timestamp = time.localtime()
|
||||||
hist = "%s, %s" % ( time.strftime(date_format, timestamp), script_utilisateur )
|
hist = "%s, %s" % ( time.strftime(date_format, timestamp), script_utilisateur )
|
||||||
|
|
||||||
|
if self.modifs.has_key('derniereConnexion'):
|
||||||
|
# On nettoie l'historique pour ne garder que la dernière modification
|
||||||
|
# (celle en cours)
|
||||||
|
self._data['historique'] = [x
|
||||||
|
for x in self._data['historique']
|
||||||
|
if 'derniereConnexion' not in x]
|
||||||
|
|
||||||
# On loggue
|
# On loggue
|
||||||
try:
|
try:
|
||||||
fd = file('%s/%s_%s_%s' % ("%s/logs" % config.cimetiere, str(self.__class__).split('.')[-1],
|
fd = file('%s/%s_%s_%s' % ("%s/logs" % config.cimetiere, str(self.__class__).split('.')[-1],
|
||||||
|
@ -1176,7 +1184,10 @@ class BaseClasseCrans(CransLdap):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def _set(self, champ, val, comment=None):
|
def _set(self, champ, val, comment=None):
|
||||||
""" Met à jour les données de data et modifie modifs si besoin """
|
"""
|
||||||
|
Met à jour les données de _data et modifie modifs si besoin.
|
||||||
|
Si val=[] ou None, supprime le champ.
|
||||||
|
"""
|
||||||
# On convertit éventuellement en utf-8 avant
|
# On convertit éventuellement en utf-8 avant
|
||||||
# On n'utilise pas preattr pour éviter de tout casser... mais
|
# On n'utilise pas preattr pour éviter de tout casser... mais
|
||||||
# il faudra à l'avenir que _set reçoive toujours en unicode
|
# il faudra à l'avenir que _set reçoive toujours en unicode
|
||||||
|
@ -1188,7 +1199,10 @@ class BaseClasseCrans(CransLdap):
|
||||||
comment = convert(comment)
|
comment = convert(comment)
|
||||||
# On fait le changement et on note s'il y a vraiment eu une modif
|
# On fait le changement et on note s'il y a vraiment eu une modif
|
||||||
if self._data.get(champ, []) != val:
|
if self._data.get(champ, []) != val:
|
||||||
|
if val:
|
||||||
self._data[champ] = val
|
self._data[champ] = val
|
||||||
|
else:
|
||||||
|
self._data.pop(champ)
|
||||||
if self.modifs.get(champ) == None or comment == None:
|
if self.modifs.get(champ) == None or comment == None:
|
||||||
self.modifs[champ] = comment
|
self.modifs[champ] = comment
|
||||||
else:
|
else:
|
||||||
|
@ -1201,6 +1215,7 @@ class BaseClasseCrans(CransLdap):
|
||||||
|
|
||||||
class BaseProprietaire(BaseClasseCrans):
|
class BaseProprietaire(BaseClasseCrans):
|
||||||
""" Méthodes de bases pour les classes Adherent et Club """
|
""" Méthodes de bases pour les classes Adherent et Club """
|
||||||
|
|
||||||
def __init__(self, data=(), mode='', conn=None):
|
def __init__(self, data=(), mode='', conn=None):
|
||||||
"""
|
"""
|
||||||
Si data est fourni initialise l'adhérent avec les valeurs données
|
Si data est fourni initialise l'adhérent avec les valeurs données
|
||||||
|
@ -2066,6 +2081,29 @@ class Adherent(BaseProprietaire):
|
||||||
# renvoie la valeur trouvée dans la base
|
# renvoie la valeur trouvée dans la base
|
||||||
return bool(self._data.get('rewriteMailHeaders', []))
|
return bool(self._data.get('rewriteMailHeaders', []))
|
||||||
|
|
||||||
|
def derniereConnexion(self, new=False):
|
||||||
|
"""
|
||||||
|
Date de dernière connexion. Le format est le nombre de secondes
|
||||||
|
écoulées depuis Epoch. Si new est donné, met à jour la valeur si
|
||||||
|
elle est plus récente.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# si l'adhérent n'a pas de compte, on lève une exception
|
||||||
|
if not self.compte():
|
||||||
|
raise NotImplementedError, u"L'adhérent n'a pas de compte"
|
||||||
|
|
||||||
|
current = int(self._data.get('derniereConnexion', ['0'])[0])
|
||||||
|
|
||||||
|
if new:
|
||||||
|
# lève une exception si l'argument n'est pas valide
|
||||||
|
new = int(new)
|
||||||
|
if new > current:
|
||||||
|
self._set('derniereConnexion', [str(new)])
|
||||||
|
current = new
|
||||||
|
|
||||||
|
return current
|
||||||
|
|
||||||
|
|
||||||
class Club(BaseProprietaire):
|
class Club(BaseProprietaire):
|
||||||
""" Classe de définition d'un club """
|
""" Classe de définition d'un club """
|
||||||
idn = 'cid'
|
idn = 'cid'
|
||||||
|
@ -2879,7 +2917,7 @@ class BorneWifi(Machine):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
elif new == None:
|
elif new == None:
|
||||||
self._data.pop('positionBorne')
|
self._set('positionBorne', [])
|
||||||
return None
|
return None
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -48,7 +48,7 @@ except:
|
||||||
|
|
||||||
base = None
|
base = None
|
||||||
|
|
||||||
from time import strftime, localtime
|
from time import strftime, localtime, time
|
||||||
from ldap_crans import is_actif, crans_ldap, ann_scol, AssociationCrans, hostname
|
from ldap_crans import is_actif, crans_ldap, ann_scol, AssociationCrans, hostname
|
||||||
from ldap_crans import MachineWifi, BorneWifi
|
from ldap_crans import MachineWifi, BorneWifi
|
||||||
from affich_tools import *
|
from affich_tools import *
|
||||||
|
@ -114,7 +114,7 @@ def adhers_brief(adhers) :
|
||||||
adhers.sort(lambda x, y: cmp((x.nom(), x.prenom()), (y.nom(), y.prenom())))
|
adhers.sort(lambda x, y: cmp((x.nom(), x.prenom()), (y.nom(), y.prenom())))
|
||||||
|
|
||||||
for a in adhers:
|
for a in adhers:
|
||||||
## Etat administratif
|
## État administratif
|
||||||
ok = u'\x1b[1;32mo\x1b[1;0m'
|
ok = u'\x1b[1;32mo\x1b[1;0m'
|
||||||
ook = u'\x1b[1;32mO\x1b[1;0m'
|
ook = u'\x1b[1;32mO\x1b[1;0m'
|
||||||
nok = u'\x1b[1;31mn\x1b[1;0m'
|
nok = u'\x1b[1;31mn\x1b[1;0m'
|
||||||
|
@ -205,7 +205,7 @@ def clubs_brief(clubs) :
|
||||||
clubs.sort(lambda x, y: cmp(x.Nom(), y.Nom()))
|
clubs.sort(lambda x, y: cmp(x.Nom(), y.Nom()))
|
||||||
|
|
||||||
for c in clubs :
|
for c in clubs :
|
||||||
## Etat administratif
|
## État administratif
|
||||||
ok = u'\x1b[1;32mo\x1b[1;0m'
|
ok = u'\x1b[1;32mo\x1b[1;0m'
|
||||||
ook = u'\x1b[1;32mO\x1b[1;0m'
|
ook = u'\x1b[1;32mO\x1b[1;0m'
|
||||||
nok = u'\x1b[1;31mn\x1b[1;0m'
|
nok = u'\x1b[1;31mn\x1b[1;0m'
|
||||||
|
@ -360,10 +360,17 @@ def adher_details(adher) :
|
||||||
except IOError, e:
|
except IOError, e:
|
||||||
# Pas de .forward, ou .forward privé... on laisse tomber
|
# Pas de .forward, ou .forward privé... on laisse tomber
|
||||||
pass
|
pass
|
||||||
|
f += coul(u'Dernière connexion : ', 'gras')
|
||||||
|
timestamp = adher.derniereConnexion()
|
||||||
|
if timestamp == 0:
|
||||||
|
f += coul(u'Jamais', 'rouge')
|
||||||
|
else:
|
||||||
|
f += coul(strftime('%d/%m/%Y %H:%M', localtime(timestamp)),
|
||||||
|
time()-timestamp > 32*24*3600 and 'rouge' or '')
|
||||||
|
f += u'\n'
|
||||||
|
|
||||||
|
# État administratif
|
||||||
# Etat administratif
|
f += coul(u'État administratif : ','gras')
|
||||||
f += coul(u'Etat administratif : ','gras')
|
|
||||||
jour=1
|
jour=1
|
||||||
if ann_scol not in adher.carteEtudiant() :
|
if ann_scol not in adher.carteEtudiant() :
|
||||||
f += coul(u"manque carte d'étudiant",'violet')
|
f += coul(u"manque carte d'étudiant",'violet')
|
||||||
|
@ -406,12 +413,12 @@ def adher_details(adher) :
|
||||||
f += u'(%s)' % prise_etat(adher.chbre())
|
f += u'(%s)' % prise_etat(adher.chbre())
|
||||||
f += u'\n'
|
f += u'\n'
|
||||||
|
|
||||||
# Etudes
|
# Études
|
||||||
if adher.etudes(1).isdigit() :
|
if adher.etudes(1).isdigit() :
|
||||||
f += coul(u'Etudes : ','gras')+ "%s %s%s\n" % \
|
f += coul(u'Études : ','gras')+ "%s %s%s\n" % \
|
||||||
( adher.etudes(0), adher.etudes(1), adher.etudes(2) )
|
( adher.etudes(0), adher.etudes(1), adher.etudes(2) )
|
||||||
elif adher.etudes(0) :
|
elif adher.etudes(0) :
|
||||||
f += coul(u'Etudes : ','gras')+ "%s %s %s\n" % \
|
f += coul(u'Études : ','gras')+ "%s %s %s\n" % \
|
||||||
( adher.etudes(0), adher.etudes(1), adher.etudes(2) )
|
( adher.etudes(0), adher.etudes(1), adher.etudes(2) )
|
||||||
|
|
||||||
# Solde
|
# Solde
|
||||||
|
@ -627,8 +634,8 @@ def club_details(club) :
|
||||||
# responsale
|
# responsale
|
||||||
f += coul(u'Responsable : ','gras') + "%s\n" % club.responsable().Nom()
|
f += coul(u'Responsable : ','gras') + "%s\n" % club.responsable().Nom()
|
||||||
|
|
||||||
# Etat administratif
|
# État administratif
|
||||||
f += coul(u'Etat administratif : ','gras')
|
f += coul(u'État administratif : ','gras')
|
||||||
jour=1
|
jour=1
|
||||||
if ann_scol not in club.paiement() :
|
if ann_scol not in club.paiement() :
|
||||||
if not jour : f += ' et '
|
if not jour : f += ' et '
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue