[ldap_crans.py] l'interface avec des dicos marche! même la copie mde dicos marche!
Ignore-this: 192f099c2b334df59cca5d73c12309d2 darcs-hash:20090929205903-bd074-77224dc37a11f4fe18a0dc2aac3edcefd7ef6c0d.gz
This commit is contained in:
parent
f5bae74159
commit
fd5cca07f2
4 changed files with 122 additions and 64 deletions
|
@ -191,7 +191,7 @@ def set_etudes(adher):
|
||||||
arg += u'"P4" "Université Paris Sorbonne" '
|
arg += u'"P4" "Université Paris Sorbonne" '
|
||||||
arg += u'"P5" "Université René Descartes" '
|
arg += u'"P5" "Université René Descartes" '
|
||||||
arg += u'"P6" "Université Pierre et Marie Curie" '
|
arg += u'"P6" "Université Pierre et Marie Curie" '
|
||||||
arg += u'"P7" "Université Denis Diderot" '
|
arg += u'"P7" "Université Paris Diderot" '
|
||||||
arg += u'"P8" "Université Vincennes Saint Denis" '
|
arg += u'"P8" "Université Vincennes Saint Denis" '
|
||||||
arg += u'"P9" "Université Paris Dauphine" '
|
arg += u'"P9" "Université Paris Dauphine" '
|
||||||
arg += u'"P10" "Université de Nanterre" '
|
arg += u'"P10" "Université de Nanterre" '
|
||||||
|
|
|
@ -228,7 +228,8 @@ def format_mac(mac):
|
||||||
### Définition des classes
|
### Définition des classes
|
||||||
|
|
||||||
class Service:
|
class Service:
|
||||||
u""" Définit un service à redémarrer """
|
u"Définit un service à redémarrer"
|
||||||
|
|
||||||
def __init__(self, nom, args=[], start=[]):
|
def __init__(self, nom, args=[], start=[]):
|
||||||
"""
|
"""
|
||||||
Nom du service
|
Nom du service
|
||||||
|
@ -329,22 +330,31 @@ class CransLdap(dict):
|
||||||
'borneWifi': 2,
|
'borneWifi': 2,
|
||||||
'facture': 2}
|
'facture': 2}
|
||||||
|
|
||||||
def __init__(self, readonly=False, conn=None):
|
def __init__(self, **kw):
|
||||||
|
"""Fonction d'initialisation.
|
||||||
|
Marche en 2 temps: initialise la connexion ldap, puis initialise
|
||||||
|
le dictionnaire."""
|
||||||
|
self.__obj_init__(**kw)
|
||||||
|
self.__dict_init__(**kw)
|
||||||
|
|
||||||
|
def __obj_init__(self, readonly = False, conn = None, **kw):
|
||||||
|
"""Initialisation de la connexion à la base LDAP.
|
||||||
|
Cette connexion sera réutilisée pour tous les objets créés
|
||||||
|
depuis cet objet (notamment grâce à la méthode make)"""
|
||||||
if not self.conn:
|
if not self.conn:
|
||||||
self.conn = conn
|
self.conn = conn
|
||||||
if not self.conn:
|
if not self.conn:
|
||||||
self.connect(readonly)
|
self.connect(readonly)
|
||||||
self['readonly'] = readonly
|
|
||||||
self['witness'] = "I exist"
|
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
|
"Destruction de l'objet, et surtout des locks."
|
||||||
# Destruction des locks résiduels
|
# Destruction des locks résiduels
|
||||||
if hasattr(self, '_locks'):
|
if hasattr(self, '_locks'):
|
||||||
for lock in self._locks:
|
for lock in self._locks:
|
||||||
self.remove_lock(lock)
|
self.remove_lock(lock)
|
||||||
|
|
||||||
def connect(self, readonly=False):
|
def connect(self, readonly=False):
|
||||||
u""" Initialisation la connexion vers le serveur LDAP """
|
u"Initialisation la connexion vers le serveur LDAP"
|
||||||
if readonly:
|
if readonly:
|
||||||
self.conn = ldap.initialize(ro_uri)
|
self.conn = ldap.initialize(ro_uri)
|
||||||
return
|
return
|
||||||
|
@ -364,9 +374,8 @@ class CransLdap(dict):
|
||||||
time.sleep(0.3)
|
time.sleep(0.3)
|
||||||
|
|
||||||
def exist(self, arg):
|
def exist(self, arg):
|
||||||
u"""
|
"""Vérifie l'existence d'une entrée dans la base et que cette entrée
|
||||||
Vérifie l'existence d'une entrée dans la base et que cette
|
n'appartient pas à l'objet en cours.
|
||||||
entrée n'appartient pas à l'objet en cours.
|
|
||||||
|
|
||||||
La méthode prend en compte les locks.
|
La méthode prend en compte les locks.
|
||||||
|
|
||||||
|
@ -598,12 +607,12 @@ class CransLdap(dict):
|
||||||
# On récupère la bonne classe
|
# On récupère la bonne classe
|
||||||
nom_classe = (entry[1].get('objectClass') or ['none'])[0]
|
nom_classe = (entry[1].get('objectClass') or ['none'])[0]
|
||||||
nom_classe = nom_classe[0].upper() + nom_classe[1:]
|
nom_classe = nom_classe[0].upper() + nom_classe[1:]
|
||||||
try:
|
#try:
|
||||||
classe = eval(nom_classe)
|
classe = eval(nom_classe)
|
||||||
# On crée l'objet
|
# On crée l'objet
|
||||||
return classe(entry, mode, self.conn)
|
return classe(data= entry, mode= mode, conn= self.conn)
|
||||||
except:
|
#except:
|
||||||
raise ValueError(u"Impossible de créer l'objet %s" % nom_classe)
|
# raise ValueError(u"Impossible de créer l'objet %s" % nom_classe)
|
||||||
|
|
||||||
|
|
||||||
def search(self, expression, mode=''):
|
def search(self, expression, mode=''):
|
||||||
|
@ -887,10 +896,12 @@ class CransLdap(dict):
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Méthodes pour fournir une interface proche d'un dictionnaire
|
# Méthodes pour fournir une interface proche d'un dictionnaire
|
||||||
|
def __dict_init__(self, dico= {}, **kw):
|
||||||
|
for lbl, value in dico.items(): dict.__setitem__(self, lbl, value)
|
||||||
|
def init_locks(self, locks): self._locks = locks
|
||||||
def copy(self):
|
def copy(self):
|
||||||
new = dict.copy(self)
|
new = self.__class__(conn = self.conn, dico = self)
|
||||||
new._locks = self._locks
|
new._locks = self._locks
|
||||||
new.conn = self.conn
|
|
||||||
return new
|
return new
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
@ -1320,7 +1331,7 @@ class BaseClasseCrans(CransLdap):
|
||||||
class BaseProprietaire(BaseClasseCrans):
|
class BaseProprietaire(BaseClasseCrans):
|
||||||
u""" Méthodes de bases pour les classes Adherent et Club """
|
u""" Méthodes de bases pour les classes Adherent et Club """
|
||||||
|
|
||||||
def __init__(self, data=(), mode='', conn=None):
|
def __obj_init__(self, mode='', conn= None, **kw):
|
||||||
u"""
|
u"""
|
||||||
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
|
||||||
Format de data : tuple comme retourné par une recherche dans la base ldap:
|
Format de data : tuple comme retourné par une recherche dans la base ldap:
|
||||||
|
@ -1332,11 +1343,16 @@ class BaseProprietaire(BaseClasseCrans):
|
||||||
|
|
||||||
conn est une instance de la classe de connexion à la base LDAP
|
conn est une instance de la classe de connexion à la base LDAP
|
||||||
"""
|
"""
|
||||||
BaseClasseCrans.__init__(self, conn = conn)
|
|
||||||
|
# Initialisation de la connexion à zelda
|
||||||
|
BaseClasseCrans.__obj_init__(self, conn = conn)
|
||||||
|
|
||||||
|
data = kw.get('data', ())
|
||||||
if type(data) != tuple:
|
if type(data) != tuple:
|
||||||
raise TypeError
|
raise TypeError
|
||||||
|
|
||||||
self.modifs = {}
|
self.modifs = {}
|
||||||
|
data = kw.get('data', ())
|
||||||
if data:
|
if data:
|
||||||
self.dn = data[0]
|
self.dn = data[0]
|
||||||
if mode == 'w':
|
if mode == 'w':
|
||||||
|
@ -1357,6 +1373,7 @@ class BaseProprietaire(BaseClasseCrans):
|
||||||
self._init_data = {}
|
self._init_data = {}
|
||||||
self._modifiable = 'w'
|
self._modifiable = 'w'
|
||||||
|
|
||||||
|
|
||||||
def chsh(self, new=None):
|
def chsh(self, new=None):
|
||||||
u""" Retourne ou change le shell de l'adhérent """
|
u""" Retourne ou change le shell de l'adhérent """
|
||||||
if new == None:
|
if new == None:
|
||||||
|
@ -1837,12 +1854,16 @@ class BaseProprietaire(BaseClasseCrans):
|
||||||
elif lbl == 'greylist': self.contourneGreylist(value)
|
elif lbl == 'greylist': self.contourneGreylist(value)
|
||||||
else: pass
|
else: pass
|
||||||
|
|
||||||
|
def __dict_init__(self, **kw):
|
||||||
|
dict.__setitem__(self, 'solde', self.solde())
|
||||||
|
dict.__setitem__(self, 'controle', self.controle())
|
||||||
|
|
||||||
def copy(self):
|
def copy(self):
|
||||||
new = CransLdap.copy(self)
|
new = CransLdap.copy(self)
|
||||||
new._init_data = self._init_data
|
new._init_data = self._init_data
|
||||||
new._data = self._data
|
new._data = self._data
|
||||||
new.modifs = self.modifs
|
new.modifs = self.modifs
|
||||||
new.modifiable = self.modifiable
|
new._modifiable = self._modifiable
|
||||||
return new
|
return new
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
@ -2450,15 +2471,15 @@ class Adherent(BaseProprietaire):
|
||||||
elif lbl == 'tel': self.tel(value)
|
elif lbl == 'tel': self.tel(value)
|
||||||
elif lbl == 'chbre': self.chbre(value)
|
elif lbl == 'chbre': self.chbre(value)
|
||||||
elif re.match(r'addr\d+', lbl):
|
elif re.match(r'addr\d+', lbl):
|
||||||
addr = self.addresse()
|
addr = self.adresse()
|
||||||
addr[int(lbl[4]) + 1] = value
|
addr[int(lbl[4]) + 1] = value
|
||||||
self.addresse(addr)
|
self.adresse(addr)
|
||||||
elif lbl == 'mail': self.mail(value)
|
elif lbl == 'mail': self.email(value)
|
||||||
elif lbl == 'chartema': self.charteMA(value)
|
elif lbl == 'chartema': self.charteMA(value)
|
||||||
elif lbl == 'payant': self.adherentPayant(value)
|
elif lbl == 'payant': self.adherentPayant(value)
|
||||||
elif re.match(r'etud\d+', lbl):
|
elif re.match(r'etud\d+', lbl):
|
||||||
etud = self.etudes()
|
etud = [self.etudes(i) for i in range(3)]
|
||||||
etud[int(lbl[4]) + 1] = value
|
etud[int(lbl[4]) - 1] = value
|
||||||
self.etudes(etud)
|
self.etudes(etud)
|
||||||
elif lbl == 'carte':
|
elif lbl == 'carte':
|
||||||
if value == True: self.carteEtudiant(ann_scol)
|
if value == True: self.carteEtudiant(ann_scol)
|
||||||
|
@ -2471,6 +2492,17 @@ class Adherent(BaseProprietaire):
|
||||||
else: raise ValueError(u"les droits_* doivent être True ou False")
|
else: raise ValueError(u"les droits_* doivent être True ou False")
|
||||||
else: pass
|
else: pass
|
||||||
|
|
||||||
|
def __dict_init__(self, **kw):
|
||||||
|
BaseProprietaire.__dict_init__(self, **kw)
|
||||||
|
dict.__setitem__(self, 'nom', self.nom())
|
||||||
|
dict.__setitem__(self, 'prenom', self.prenom())
|
||||||
|
dict.__setitem__(self, 'chbre', self.chbre())
|
||||||
|
dict.__setitem__(self, 'mail', self.email())
|
||||||
|
dict.__setitem__(self, 'payant', self.adherentPayant())
|
||||||
|
for i in range(3): dict.__setitem__(self, 'etud%d'% (i+1), self.etudes(i))
|
||||||
|
dict.__setitem__(self, 'droits', self.droits())
|
||||||
|
dict.__setitem__(self, 'tel', self.tel())
|
||||||
|
|
||||||
class Club(BaseProprietaire):
|
class Club(BaseProprietaire):
|
||||||
u""" Classe de définition d'un club """
|
u""" Classe de définition d'un club """
|
||||||
idn = 'cid'
|
idn = 'cid'
|
||||||
|
@ -2623,15 +2655,25 @@ class Club(BaseProprietaire):
|
||||||
u""" Retourne l'adresse mail du responsable """
|
u""" Retourne l'adresse mail du responsable """
|
||||||
return self.responsable().email()
|
return self.responsable().email()
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# Définition de l'initilisation du dico
|
||||||
|
def __dict_init__(self, **kw):
|
||||||
|
BaseProprietaire.__dict_init__(self, **kw)
|
||||||
|
dict.__setitem__(self, 'nom', self.Nom())
|
||||||
|
dict.__setitem__(self, 'chbre', self.chbre())
|
||||||
|
dict.__setitem__(self, 'email', self.email())
|
||||||
|
if self.compte(): dict.__setitem__(self, 'compte', self.compte())
|
||||||
|
dict.__setitem__(self, 'responsable', self.responsable())
|
||||||
|
|
||||||
class Machine(BaseClasseCrans):
|
class Machine(BaseClasseCrans):
|
||||||
u""" Classe de définition d'une machine """
|
u""" Classe de définition d'une machine """
|
||||||
idn = 'mid'
|
idn = 'mid'
|
||||||
filtre_idn = '(|(objectClass=machineFixe)(objectClass=machineWifi)'
|
filtre_idn = '(|(objectClass=machineFixe)(objectClass=machineWifi)'
|
||||||
filtre_idn += '(objectClass=machineCrans)(objectClass=borneWifi))'
|
filtre_idn += '(objectClass=machineCrans)(objectClass=borneWifi))'
|
||||||
|
|
||||||
def __init__(self, parent_or_tuple, mode='', conn=None):
|
def __obj_init__(self, data =(), mode='', conn=None, **kw):
|
||||||
u"""
|
u"""
|
||||||
parent_or_tuple est :
|
data est :
|
||||||
* soit une instance d'une classe pouvant posséder une machine
|
* soit une instance d'une classe pouvant posséder une machine
|
||||||
(Adherent, Club ou AssociationCrans), la nouvelle machine lui
|
(Adherent, Club ou AssociationCrans), la nouvelle machine lui
|
||||||
sera alors associée.
|
sera alors associée.
|
||||||
|
@ -2646,17 +2688,18 @@ class Machine(BaseClasseCrans):
|
||||||
conn est une instance de la classe de connexion à la base LDAP
|
conn est une instance de la classe de connexion à la base LDAP
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Initialisation de la connexion
|
||||||
|
BaseClasseCrans.__obj_init__(self, conn = conn)
|
||||||
|
|
||||||
# Définition de l'objectClass LDAP à partir du nom de la classe Python
|
# Définition de l'objectClass LDAP à partir du nom de la classe Python
|
||||||
self.objectClass = str(self.__class__).split('.')[-1]
|
self.objectClass = str(self.__class__).split('.')[-1]
|
||||||
self.objectClass = self.objectClass[0].lower() + self.objectClass[1:]
|
self.objectClass = self.objectClass[0].lower() + self.objectClass[1:]
|
||||||
# Initialisation de la connexion
|
|
||||||
BaseClasseCrans.__init__(self, conn = conn)
|
|
||||||
|
|
||||||
self.modifs = {}
|
self.modifs = {}
|
||||||
t = parent_or_tuple.__class__
|
t = data.__class__
|
||||||
if t == tuple:
|
if t == tuple:
|
||||||
# Initialisation avec données fournies
|
# Initialisation avec données fournies
|
||||||
self.dn = parent_or_tuple[0]
|
self.dn = data[0]
|
||||||
if mode == 'w':
|
if mode == 'w':
|
||||||
try:
|
try:
|
||||||
self.lock(self.idn, self.id())
|
self.lock(self.idn, self.id())
|
||||||
|
@ -2666,16 +2709,16 @@ class Machine(BaseClasseCrans):
|
||||||
else:
|
else:
|
||||||
self._modifiable = 0
|
self._modifiable = 0
|
||||||
# Utile pour construire l'instruction LDAP de modif
|
# Utile pour construire l'instruction LDAP de modif
|
||||||
self._init_data = parent_or_tuple[1].copy()
|
self._init_data = data[1].copy()
|
||||||
self._data = parent_or_tuple[1]
|
self._data = data[1]
|
||||||
|
|
||||||
# Propriéraire inconnu mais ce n'est pas grave
|
# Propriéraire inconnu mais ce n'est pas grave
|
||||||
self.__proprietaire = None
|
self.__proprietaire = None
|
||||||
|
|
||||||
elif t in [Adherent, Club, AssociationCrans] and mode != 'w':
|
elif t in [Adherent, Club, AssociationCrans] and mode != 'w':
|
||||||
# Machine vide
|
# Machine vide
|
||||||
self.__proprietaire = parent_or_tuple
|
self.__proprietaire = data
|
||||||
self.dn = parent_or_tuple.dn
|
self.dn = data.dn
|
||||||
self._data = {'objectClass': [self.objectClass]}
|
self._data = {'objectClass': [self.objectClass]}
|
||||||
self._init_data = {}
|
self._init_data = {}
|
||||||
self._modifiable = 'w'
|
self._modifiable = 'w'
|
||||||
|
@ -2982,11 +3025,13 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
||||||
if not self.__proprietaire:
|
if not self.__proprietaire:
|
||||||
res = self.conn.search_s(','.join(self.dn.split(',')[1:]), 0)
|
res = self.conn.search_s(','.join(self.dn.split(',')[1:]), 0)
|
||||||
if 'adherent' in res[0][1]['objectClass']:
|
if 'adherent' in res[0][1]['objectClass']:
|
||||||
self.__proprietaire = Adherent(res[0], self._modifiable, self.conn)
|
self.__proprietaire = \
|
||||||
|
Adherent(data = res[0], mode = self._modifiable, conn = self.conn)
|
||||||
elif 'club' in res[0][1]['objectClass']:
|
elif 'club' in res[0][1]['objectClass']:
|
||||||
self.__proprietaire = Club(res[0], self._modifiable, self.conn)
|
self.__proprietaire = \
|
||||||
|
Club(data = res[0], mode = self._modifiable, conn = self.conn)
|
||||||
else:
|
else:
|
||||||
self.__proprietaire = AssociationCrans(self.conn)
|
self.__proprietaire = AssociationCrans(conn = self.conn)
|
||||||
|
|
||||||
return self.__proprietaire
|
return self.__proprietaire
|
||||||
|
|
||||||
|
@ -3165,19 +3210,28 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3)
|
||||||
# proprio = self.search('(aid=%s)' % value)['adherent'][0]
|
# proprio = self.search('(aid=%s)' % value)['adherent'][0]
|
||||||
# self.proprietaire(proprio)
|
# self.proprietaire(proprio)
|
||||||
|
|
||||||
|
def __dict_init__(self, **kw):
|
||||||
|
BaseClasseCrans.__dict_init__(self, **kw)
|
||||||
|
dict.__setitem__(self, 'mac', self.mac())
|
||||||
|
dict.__setitem__(self, 'host', self.nom())
|
||||||
|
dict.__setitem__(self, 'prise', self.prise())
|
||||||
|
dict.__setitem__(self, 'alias', self.alias())
|
||||||
|
dict.__setitem__(self, 'ip', self.ip())
|
||||||
|
dict.__setitem__(self, 'proprietaire', self.proprietaire())
|
||||||
|
|
||||||
class MachineFixe(Machine):
|
class MachineFixe(Machine):
|
||||||
u""" Classe de définition d'une machine fixe """
|
u""" Classe de définition d'une machine fixe """
|
||||||
|
|
||||||
def __init__(self, parent_or_tuple, typ='fixe', conn=None):
|
def __obj_init__(self, typ='fixe', **kw):
|
||||||
Machine.__init__(self, parent_or_tuple, typ, conn)
|
Machine.__obj_init__(self, typ = typ, **kw)
|
||||||
|
|
||||||
|
|
||||||
class MachineWifi(Machine):
|
class MachineWifi(Machine):
|
||||||
u""" Classe de définition d'une machine wifi """
|
u""" Classe de définition d'une machine wifi """
|
||||||
|
|
||||||
def __init__(self, parent_or_tuple, typ='wifi', conn=None):
|
def __obj_init__(self, typ='wifi', **kw):
|
||||||
Machine.__init__(self, parent_or_tuple, typ, conn)
|
Machine.__obj_init__(self, typ=typ, **kw)
|
||||||
if not isinstance(parent_or_tuple, tuple):
|
if not isinstance(kw.get('data', None), tuple):
|
||||||
# Initialisaton d'une nouvelle machine wifi
|
# Initialisaton d'une nouvelle machine wifi
|
||||||
self.ipsec(True)
|
self.ipsec(True)
|
||||||
|
|
||||||
|
@ -3204,8 +3258,8 @@ class MachineWifi(Machine):
|
||||||
class MachineCrans(Machine):
|
class MachineCrans(Machine):
|
||||||
u""" Classe de définition d'une machine du Crans """
|
u""" Classe de définition d'une machine du Crans """
|
||||||
|
|
||||||
def __init__(self, parent_or_tuple, typ='fixe', conn=None):
|
def __obj_init__(self, typ='fixe', **kw):
|
||||||
Machine.__init__(self, parent_or_tuple, typ, conn)
|
Machine.__obj_init__(self, typ, **kw)
|
||||||
|
|
||||||
def nombrePrises(self, new=None):
|
def nombrePrises(self, new=None):
|
||||||
u""" Nombre de prises, pour les switchs """
|
u""" Nombre de prises, pour les switchs """
|
||||||
|
@ -3228,9 +3282,9 @@ class MachineCrans(Machine):
|
||||||
class BorneWifi(Machine):
|
class BorneWifi(Machine):
|
||||||
u"""Classe de définition d'une borne wifi"""
|
u"""Classe de définition d'une borne wifi"""
|
||||||
|
|
||||||
def __init__(self, parent_or_tuple, typ='borne', conn=None):
|
def __obj_init__(self, typ='borne', **kw):
|
||||||
Machine.__init__(self, parent_or_tuple, typ, conn)
|
Machine.__obj_init__(self, typ=typ, **kw)
|
||||||
if not isinstance(parent_or_tuple, tuple):
|
if not isinstance(kw.get('data', None), tuple):
|
||||||
# Initialisaton d'une nouvelle borne wifi
|
# Initialisaton d'une nouvelle borne wifi
|
||||||
self._data['canal'] = ['2047']
|
self._data['canal'] = ['2047']
|
||||||
self._data['puissance'] = ['60']
|
self._data['puissance'] = ['60']
|
||||||
|
@ -3404,7 +3458,7 @@ class Facture(BaseClasseCrans):
|
||||||
idn = 'fid'
|
idn = 'fid'
|
||||||
filtre_idn = '(objectClass=facture)'
|
filtre_idn = '(objectClass=facture)'
|
||||||
|
|
||||||
def __init__(self, parent_or_tuple, mode='', conn=None):
|
def __obj_init__(self, mode='', **kw):
|
||||||
u"""
|
u"""
|
||||||
parent_or_tuple est :
|
parent_or_tuple est :
|
||||||
* soit une instance d'une classe pouvant posséder une facture
|
* soit une instance d'une classe pouvant posséder une facture
|
||||||
|
@ -3419,11 +3473,11 @@ class Facture(BaseClasseCrans):
|
||||||
|
|
||||||
conn est une instance de la classe de connexion à la base LDAP
|
conn est une instance de la classe de connexion à la base LDAP
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Initialisation de la connexion
|
# Initialisation de la connexion
|
||||||
BaseClasseCrans.__init__(self, conn= conn)
|
BaseClasseCrans.__obj_init__(self, conn= conn, **kw)
|
||||||
|
|
||||||
self.modifs = {}
|
self.modifs = {}
|
||||||
|
parent_or_tuple = kw.get('data', None)
|
||||||
t = parent_or_tuple.__class__
|
t = parent_or_tuple.__class__
|
||||||
if t == tuple:
|
if t == tuple:
|
||||||
# Initialisation avec données fournies
|
# Initialisation avec données fournies
|
||||||
|
@ -3480,9 +3534,11 @@ class Facture(BaseClasseCrans):
|
||||||
if not self.__proprietaire:
|
if not self.__proprietaire:
|
||||||
res = self.conn.search_s(','.join(self.dn.split(',')[1:]), 0)
|
res = self.conn.search_s(','.join(self.dn.split(',')[1:]), 0)
|
||||||
if 'adherent' in res[0][1]['objectClass']:
|
if 'adherent' in res[0][1]['objectClass']:
|
||||||
self.__proprietaire = Adherent(res[0], self._modifiable, self.conn)
|
self.__proprietaire = \
|
||||||
|
Adherent(data = res[0], mode = self._modifiable, conn = self.conn)
|
||||||
elif 'club' in res[0][1]['objectClass']:
|
elif 'club' in res[0][1]['objectClass']:
|
||||||
self.__proprietaire = Club(res[0], self._modifiable, self.conn)
|
self.__proprietaire = \
|
||||||
|
Club(data = res[0], mode = self._modifiable, conn = self.conn)
|
||||||
else:
|
else:
|
||||||
raise ValueError, u'Propriétaire inconnu'
|
raise ValueError, u'Propriétaire inconnu'
|
||||||
|
|
||||||
|
@ -3730,8 +3786,8 @@ class Facture(BaseClasseCrans):
|
||||||
class _FakeProprio(CransLdap):
|
class _FakeProprio(CransLdap):
|
||||||
u"""Définitions de base d'un propriétaire virtuel"""
|
u"""Définitions de base d'un propriétaire virtuel"""
|
||||||
idn = ''
|
idn = ''
|
||||||
def __init__(self, conn=None):
|
def __obj_init__(self, conn=None):
|
||||||
CransLdap.__init__(self, conn = conn)
|
CransLdap.__obj_init__(self, conn = conn)
|
||||||
self.dn = self.base_dn
|
self.dn = self.base_dn
|
||||||
def id(self):
|
def id(self):
|
||||||
return ''
|
return ''
|
||||||
|
@ -3754,8 +3810,8 @@ class _FakeProprio(CransLdap):
|
||||||
|
|
||||||
class AssociationCrans(_FakeProprio):
|
class AssociationCrans(_FakeProprio):
|
||||||
u""" Classe définissant l'assoce (pour affichage de ses machines) """
|
u""" Classe définissant l'assoce (pour affichage de ses machines) """
|
||||||
def __init__(self, conn=None):
|
def __obj_init__(self, conn=None):
|
||||||
_FakeProprio.__init__(self, conn)
|
_FakeProprio.__obj_init__(self, conn)
|
||||||
def Nom(self):
|
def Nom(self):
|
||||||
return u"Crans"
|
return u"Crans"
|
||||||
def chbre(self):
|
def chbre(self):
|
||||||
|
|
|
@ -14,7 +14,7 @@ def really_quit(dico):
|
||||||
raise EndScenario("game over!", data = dico)
|
raise EndScenario("game over!", data = dico)
|
||||||
|
|
||||||
def error_handler(exc):
|
def error_handler(exc):
|
||||||
dialog.Dialog().msgbox(str(exc), width=0, height =0, title = 'Erreur :')
|
dialog.Dialog().msgbox(str(exc), widht=0, height =0, title = 'Erreur :')
|
||||||
raise TryAgain()
|
raise TryAgain()
|
||||||
|
|
||||||
class DialogStepGenerator:
|
class DialogStepGenerator:
|
||||||
|
|
|
@ -118,7 +118,9 @@ class Running:
|
||||||
if self.steps[0] == 'CASE' :
|
if self.steps[0] == 'CASE' :
|
||||||
switch, cases, fallback = self.steps[1]
|
switch, cases, fallback = self.steps[1]
|
||||||
self.steps = self.steps[2]
|
self.steps = self.steps[2]
|
||||||
plan_steps = cases.get(switch(self.env), fallback).steps
|
scenar = cases.get(switch(self.env), fallback)
|
||||||
|
if scenar: plan_steps = scenar.steps
|
||||||
|
else: plan_steps = None
|
||||||
while plan_steps:
|
while plan_steps:
|
||||||
self.steps = plan_steps[0], plan_steps[1], self.steps
|
self.steps = plan_steps[0], plan_steps[1], self.steps
|
||||||
plan_steps = plan_steps[2]
|
plan_steps = plan_steps[2]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue