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 os, sys
|
||||||
import cPickle
|
import cPickle
|
||||||
import dialog
|
import dialog
|
||||||
|
from time import mktime, strptime
|
||||||
|
|
||||||
sys.path.append('/usr/scripts/gestion')
|
sys.path.append('/usr/scripts/gestion')
|
||||||
from ldap_crans import crans_ldap, MachineFixe, MachineWifi
|
from ldap_crans import crans_ldap, MachineFixe, MachineWifi
|
||||||
|
@ -45,6 +46,7 @@ def menu_principal():
|
||||||
while 1:
|
while 1:
|
||||||
annul, choix = dlg.menu(u"Que souhaitez vous faire ?",
|
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"),
|
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")],
|
("F",u"Ressusciter à partir d'un fichier",u"Récupérer depuis un fichier du cimetière")],
|
||||||
item_help=1,title=u"Ressusciter")
|
item_help=1,title=u"Ressusciter")
|
||||||
if annul: break
|
if annul: break
|
||||||
|
@ -68,6 +70,47 @@ def menu_principal():
|
||||||
adh = choixadherent(machine, adh)
|
adh = choixadherent(machine, adh)
|
||||||
if not adh: continue
|
if not adh: continue
|
||||||
ressuscite(adh, machine)
|
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':
|
elif choix == 'F':
|
||||||
# Ressusciter à partir d'un fichier
|
# Ressusciter à partir d'un fichier
|
||||||
fichier = None
|
fichier = None
|
||||||
|
@ -102,7 +145,6 @@ def choixrecherche(condition=None):
|
||||||
("Tous",u"Rechercher les deux types")],
|
("Tous",u"Rechercher les deux types")],
|
||||||
title=u"Recherche de machine")
|
title=u"Recherche de machine")
|
||||||
if annul: return None
|
if annul: return None
|
||||||
print choix
|
|
||||||
|
|
||||||
# On cherche les machines
|
# On cherche les machines
|
||||||
machines = recherche(choix == 'Fixe' or choix == 'Tous',
|
machines = recherche(choix == 'Fixe' or choix == 'Tous',
|
||||||
|
@ -219,13 +261,31 @@ def choixmachine(valid):
|
||||||
|
|
||||||
def ressuscite(adh, oldmachine):
|
def ressuscite(adh, oldmachine):
|
||||||
"""Ressuscite une instance de machine."""
|
"""Ressuscite une instance de machine."""
|
||||||
|
# On regarde quel type de machine c'était
|
||||||
if str(oldmachine.__class__)[-4:] == 'Fixe':
|
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':
|
elif str(oldmachine.__class__)[-4:] == 'Wifi':
|
||||||
machine = MachineWifi(adh)
|
strmachine = u"Cette machine était une machine Wifi."
|
||||||
|
strdef = 'Wifi'
|
||||||
else:
|
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)
|
machine = MachineFixe(adh)
|
||||||
|
elif choix == 'Wifi':
|
||||||
|
machine = MachineWifi(adh)
|
||||||
|
|
||||||
err = ""
|
err = ""
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue