ressuscite.py: recherche par dates, changement de type
darcs-hash:20081002085756-ddb99-0ab825b7852761742c72b4dc0fbbaa962264c5b3.gz
This commit is contained in:
parent
1ff889beda
commit
c57212cb58
1 changed files with 64 additions and 4 deletions
|
@ -25,6 +25,7 @@ u"""Outil pour ressusciter des machines du cimetière."""
|
|||
import os, sys
|
||||
import cPickle
|
||||
import dialog
|
||||
from time import mktime, strptime
|
||||
|
||||
sys.path.append('/usr/scripts/gestion')
|
||||
from ldap_crans import crans_ldap, MachineFixe, MachineWifi
|
||||
|
@ -45,6 +46,7 @@ def menu_principal():
|
|||
while 1:
|
||||
annul, choix = dlg.menu(u"Que souhaitez vous faire ?",
|
||||
choices=[("A",u"Ressusciter à partir d'un adhérent",u"Rechercher les anciennes machines d'un adhérent"),
|
||||
("D",u"Ressusciter à partir de la date",u"Rechercher à partir de la date de suppression de la machine"),
|
||||
("F",u"Ressusciter à partir d'un fichier",u"Récupérer depuis un fichier du cimetière")],
|
||||
item_help=1,title=u"Ressusciter")
|
||||
if annul: break
|
||||
|
@ -68,6 +70,47 @@ def menu_principal():
|
|||
adh = choixadherent(machine, adh)
|
||||
if not adh: continue
|
||||
ressuscite(adh, machine)
|
||||
|
||||
elif choix == 'D':
|
||||
# Ressusciter à partir de la date
|
||||
while 1:
|
||||
debut = None
|
||||
fin = None
|
||||
annul, result = dlg.inputbox(width=54, height=10,
|
||||
text=u"Entrez la plage de dates de recherche au format\nJJ/MM/AAAA:JJ/MM/AAAA :\n(Une des deux dates peut ne pas être spécifiée.)\n",
|
||||
title=u"Sélection des dates")
|
||||
if annul: break
|
||||
try:
|
||||
[strdebut, strfin] = result.strip().split(':', 1)
|
||||
# On teste la validité des dates
|
||||
# (strptime émet une erreur si le format est mauvais)
|
||||
if len(strdebut) > 0:
|
||||
debut = mktime(strptime(strdebut, '%d/%m/%Y'))
|
||||
if len(strfin) > 0:
|
||||
fin = mktime(strptime(strfin, '%d/%m/%Y')) + 24*60*60
|
||||
break
|
||||
except:
|
||||
dlg.msgbox(text=u"Dates invalides",title=u"Sélection des dates")
|
||||
continue
|
||||
|
||||
# On ne fait la recherche que si on a spécifié une date
|
||||
# (c'est mieux de ne pas instancier en mémoire toutes les machines)
|
||||
if debut != None or fin != None:
|
||||
def condition(machine, date):
|
||||
ok = True
|
||||
unixdate = mktime(strptime(date, '%Y-%m-%d-%H:%M'))
|
||||
if debut != None: ok = (unixdate >= debut)
|
||||
if fin != None: ok = ok and (unixdate <= fin)
|
||||
return ok
|
||||
|
||||
choixmachine = choixrecherche(condition)
|
||||
|
||||
if choixmachine != None:
|
||||
(machine, date) = choixmachine
|
||||
adh = choixadherent(machine, adh)
|
||||
if not adh: continue
|
||||
ressuscite(adh, machine)
|
||||
|
||||
elif choix == 'F':
|
||||
# Ressusciter à partir d'un fichier
|
||||
fichier = None
|
||||
|
@ -102,7 +145,6 @@ def choixrecherche(condition=None):
|
|||
("Tous",u"Rechercher les deux types")],
|
||||
title=u"Recherche de machine")
|
||||
if annul: return None
|
||||
print choix
|
||||
|
||||
# On cherche les machines
|
||||
machines = recherche(choix == 'Fixe' or choix == 'Tous',
|
||||
|
@ -219,13 +261,31 @@ def choixmachine(valid):
|
|||
|
||||
def ressuscite(adh, oldmachine):
|
||||
"""Ressuscite une instance de machine."""
|
||||
# On regarde quel type de machine c'était
|
||||
if str(oldmachine.__class__)[-4:] == 'Fixe':
|
||||
machine = MachineFixe(adh)
|
||||
strmachine = u"Cette machine était une machine Fixe."
|
||||
strdef = 'Fixe'
|
||||
elif str(oldmachine.__class__)[-4:] == 'Wifi':
|
||||
machine = MachineWifi(adh)
|
||||
strmachine = u"Cette machine était une machine Wifi."
|
||||
strdef = 'Wifi'
|
||||
else:
|
||||
# On va quand même créer une machine ...
|
||||
strmachine = u"L'ancien type de cette machine est inconnu ..."
|
||||
strdef = ''
|
||||
|
||||
# Certaines fois, on peut vouloir transformer une machine Fixe en Wifi,
|
||||
# et inversement (erreurs d'ajout ...)
|
||||
annul, choix = dlg.menu(strmachine,
|
||||
choices=[("Fixe",u"Ressusciter en tant que machine Fixe"),
|
||||
("Wifi",u"Ressusciter en tant que machine Wifi")],
|
||||
default_item=strdef,
|
||||
title=u"Nouveau type de machine")
|
||||
|
||||
if annul: return False
|
||||
|
||||
if choix == 'Fixe':
|
||||
machine = MachineFixe(adh)
|
||||
elif choix == 'Wifi':
|
||||
machine = MachineWifi(adh)
|
||||
|
||||
err = ""
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue