- 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',
|
||||
'rewriteMailHeaders', 'contourneGreylist',
|
||||
'puissance', 'canal', 'prise', 'responsable',
|
||||
'macAddress', 'ipHostNumber', 'host', 'positionBorne']:
|
||||
'macAddress', 'ipHostNumber', 'host', 'positionBorne',
|
||||
'derniereConnexion']:
|
||||
if champ in self.modifs:
|
||||
if champ not in self._init_data.keys():
|
||||
valeur_initiale = 'N/A'
|
||||
|
@ -1077,6 +1078,13 @@ class BaseClasseCrans(CransLdap):
|
|||
|
||||
timestamp = time.localtime()
|
||||
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
|
||||
try:
|
||||
|
@ -1176,7 +1184,10 @@ class BaseClasseCrans(CransLdap):
|
|||
pass
|
||||
|
||||
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 n'utilise pas preattr pour éviter de tout casser... mais
|
||||
# il faudra à l'avenir que _set reçoive toujours en unicode
|
||||
|
@ -1188,7 +1199,10 @@ class BaseClasseCrans(CransLdap):
|
|||
comment = convert(comment)
|
||||
# On fait le changement et on note s'il y a vraiment eu une modif
|
||||
if self._data.get(champ, []) != val:
|
||||
self._data[champ] = val
|
||||
if val:
|
||||
self._data[champ] = val
|
||||
else:
|
||||
self._data.pop(champ)
|
||||
if self.modifs.get(champ) == None or comment == None:
|
||||
self.modifs[champ] = comment
|
||||
else:
|
||||
|
@ -1201,6 +1215,7 @@ class BaseClasseCrans(CransLdap):
|
|||
|
||||
class BaseProprietaire(BaseClasseCrans):
|
||||
""" Méthodes de bases pour les classes Adherent et Club """
|
||||
|
||||
def __init__(self, data=(), mode='', conn=None):
|
||||
"""
|
||||
Si data est fourni initialise l'adhérent avec les valeurs données
|
||||
|
@ -2065,6 +2080,29 @@ class Adherent(BaseProprietaire):
|
|||
|
||||
# renvoie la valeur trouvée dans la base
|
||||
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):
|
||||
""" Classe de définition d'un club """
|
||||
|
@ -2872,14 +2910,14 @@ class BorneWifi(Machine):
|
|||
On utilise des strings plutôt que des floats à cause de la précision.
|
||||
"""
|
||||
if new == False:
|
||||
valeur = self._data.get('positionBorne',[''])[0]
|
||||
valeur = self._data.get('positionBorne', [''])[0]
|
||||
if valeur:
|
||||
return tuple(valeur.split(' '))
|
||||
else:
|
||||
return None
|
||||
|
||||
elif new == None:
|
||||
self._data.pop('positionBorne')
|
||||
self._set('positionBorne', [])
|
||||
return None
|
||||
|
||||
else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue