from Noyau.N_Exception import AsException
from Extensions import commentaire,parametre,parametre_eval
import CONNECTOR
+import Validation
+
+class LASSD:
+ pass
class JDC(I_OBJECT.OBJECT):
"""
d=self.get_contexte_avant(etape)
l=[]
for k,v in d.items():
- if type(v) != types.InstanceType : continue
+ if type(v) != types.InstanceType and not isinstance(v,object): continue
# On considère que seul assd indique un type quelconque pas CO
elif self.assd in types_permis :
l.append(k)
def get_sd_avant_du_bon_type_pour_type_de_base(self,etape,type):
"""
Retourne la liste des concepts avant etape d'1 type de base acceptable
- Attention different de la routine précédente : 1 seul type passé en parametre
- Teste sur issubclass et par sur le type permis
+ Attention different de la routine précédente : 1 seul type passé en parametre
+ Teste sur issubclass et par sur le type permis
"""
d=self.get_contexte_avant(etape)
l=[]
d=self.get_contexte_avant(etape)
for k,v in d.items():
if issubclass(v.__class__,LASSD):
- if k == valeur :
- return k
- # Attention pour enlever les . a la fin des pretendus reels
- if k == valeur[0:-1] :
- return v
+ if k == valeur :
+ return k
+ # Attention pour enlever les . a la fin des pretendus reels
+ if k == valeur[0:-1] :
+ return v
return None
def est_permis(self,v,types_permis):
return 1
elif type_ok == 'TXM' and v.__class__.__name__ == 'chaine' :
return 1
- elif type(type_ok) != types.ClassType :
+ elif type(type_ok) != types.ClassType and not isinstance(type_ok,type):
continue
elif v.__class__ == type_ok or issubclass(v.__class__,type_ok):
return 1
objet.nom = "_comm_"+`ind`
if pos == None : pos = 0
self.etapes.insert(pos,objet)
+ self.reset_context()
self.editmode=0
self.active_etapes()
CONNECTOR.Emit(self,"add",objet)
objet = parametre.PARAMETRE(nom=nom_param)
if pos == None : pos = 0
self.etapes.insert(pos,objet)
- self.editmode=0
self.reset_context()
+ self.editmode=0
self.active_etapes()
CONNECTOR.Emit(self,"add",objet)
self.fin_modif()
objet = parametre_eval.PARAMETRE_EVAL(nom=nom_param)
if pos == None : pos = 0
self.etapes.insert(pos,objet)
- self.editmode=0
self.reset_context()
+ self.editmode=0
self.active_etapes()
CONNECTOR.Emit(self,"add",objet)
self.fin_modif()
objet.parent.dict_niveaux[objet.nom_niveau_definition].register(objet)
objet.niveau = objet.parent.dict_niveaux[objet.nom_niveau_definition]
self.etapes.insert(pos,objet)
- # il faut vérifier que les concepts utilisés par objet existent bien
- # à ce niveau d'arborescence
- objet.verif_existence_sd()
+ self.reset_context()
+ # il faut vérifier que les concepts utilisés par objet existent bien
+ # à ce niveau d'arborescence
+ objet.verif_existence_sd()
objet.update_mc_global()
- self.active_etapes()
self.editmode=0
- self.reset_context()
+ self.active_etapes()
CONNECTOR.Emit(self,"add",objet)
self.fin_modif()
return objet
if pos == None : pos = 0
self.etapes.insert(pos,e)
self.reset_current_step()
- self.editmode=0
self.reset_context()
+ self.editmode=0
self.active_etapes()
CONNECTOR.Emit(self,"add",e)
self.fin_modif()
l_mc = []
for etape in self.etapes :
if etape.isactif() :
- if not etape.isvalid() :
- l = etape.get_liste_mc_inconnus()
- if l : l_mc.extend(l)
+ if not etape.isvalid() :
+ l = etape.get_liste_mc_inconnus()
+ if l : l_mc.extend(l)
return l_mc
def get_genealogie(self):
#print "reset_context",self,self.nom
self.current_context={}
self.index_etape_courante=0
+ ind={}
+ for i,etape in enumerate(self.etapes):
+ ind[etape]=i
+ self.index_etapes=ind
+
# for etape in self.etapes:
# etape.reset_context()
def changefichier(self,fichier):
self.fin_modif()
+ def eval_in_context(self,valeur,etape):
+ """ Tente d'evaluer valeur dans le contexte courant de etape
+ Retourne le parametre valeur inchange si l'evaluation est impossible
+ """
+ #contexte initial du jdc
+ context=self.condition_context.copy()
+ #contexte courant des concepts. Il contient les parametres
+ context.update(self.get_contexte_avant(etape))
+ try :
+ objet = eval(valeur,context)
+ return objet
+ except:
+ #traceback.print_exc()
+ pass
+ return valeur
+
+#ATTENTION SURCHARGE : cette methode doit etre gardée en synchronisation avec celle de Noyau
+ def supprime(self):
+ #print "supprime",self
+ Noyau.N_JDC.JDC.supprime(self)
+ self.appli=None
+ self.g_context={}
+ self.const_context={}
+ self.sds=[]
+ self.sds_dict={}
+ self.mc_globaux={}
+ self.current_context={}
+ self.condition_context={}
+ self.etapes_niveaux=[]
+ self.niveau=None
+ self.params=[]
+ self.fonctions=[]
+ self._etape_context=None
+ self.etapes=[]
+
#ATTENTION SURCHARGE : cette methode doit etre gardée en synchronisation avec celle de Noyau
def register(self,etape):
"""
"""
if not self.editmode:
self.etapes.append(etape)
+ self.index_etapes[etape] = len(self.etapes) - 1
else:
pass
return self.g_register(etape)
linecache.cache[file]=0,0,string.split(text,'\n'),file
return file,text
+ def isvalid(self,cr='non'):
+ if hasattr(self,'valid'): old_valid=self.valid
+ else:old_valid=0
+ valid=Validation.V_JDC.JDC.isvalid(self,cr)
+ if valid != old_valid:
+ CONNECTOR.Emit(self,"valid")
+ return valid