/usr/share/pyshared/Noyau/N_ASSD.py is in eficas 2.0.3-1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | #@ MODIF N_ASSD Noyau DATE 14/12/2009 AUTEUR COURTOIS M.COURTOIS
# -*- coding: iso-8859-1 -*-
# RESPONSABLE COURTOIS M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
# (AT YOUR OPTION) ANY LATER VERSION.
#
# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
#
# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
#
#
# ======================================================================
"""
"""
class ASSD(object):
"""
Classe de base pour definir des types de structures de donnees ASTER
equivalent d un concept ASTER
"""
idracine="SD"
def __init__(self,etape=None,sd=None,reg='oui'):
"""
reg est un paramètre qui vaut oui ou non :
- si oui (défaut) : on enregistre la SD auprès du JDC
- si non : on ne l'enregistre pas
"""
self.etape=etape
self.sd=sd
self.nom=None
if etape:
self.parent=etape.parent
else:
self.parent=CONTEXT.get_current_step()
if self.parent :
self.jdc = self.parent.get_jdc_root()
else:
self.jdc = None
if not self.parent:
self.id=None
elif reg == 'oui' :
self.id = self.parent.reg_sd(self)
else :
self.id = self.parent.o_register(self)
# permet de savoir si le concept a été calculé (1) ou non (0)
self.executed = 0
def __getitem__(self,key):
return self.etape[key]
def set_name(self, nom):
"""Positionne le nom de self (et appelle sd_init)
"""
self.nom = nom
# initialise la partie "sd" (pas pour entier, reel, formule)
sup = super(ASSD, self)
if hasattr(sup, 'nomj'): # == AsBase
sup.__init__(nomj=nom)
self.reparent_sd()
def reparent_sd(self):
"""Repositionne le parent des attributs de la SD associée.
"""
sup = super(ASSD, self)
if hasattr(sup, 'nomj'): # == AsBase
sup.reparent(None, None)
def get_name(self):
"""
Retourne le nom de self, éventuellement en le demandant au JDC
"""
if not self.nom :
try:
self.nom=self.parent.get_name(self) or self.id
except:
self.nom=""
if self.nom.find('sansnom') != -1 or self.nom == '':
self.nom = self.id
return self.nom
def supprime(self):
"""
Cassage des boucles de références pour destruction du JDC
"""
self.etape = None
self.sd = None
self.jdc = None
self.parent = None
def accept(self,visitor):
"""
Cette methode permet de parcourir l'arborescence des objets
en utilisant le pattern VISITEUR
"""
visitor.visitASSD(self)
def __getstate__(self):
"""
Cette methode permet de pickler les objets ASSD
Ceci est possible car on coupe les liens avec les objets
parent, etape et jdc qui conduiraient à pickler de nombreux
objets inutiles ou non picklables.
"""
d=self.__dict__.copy()
for key in ('parent','etape','jdc'):
if d.has_key(key):del d[key]
for key in d.keys():
if key[0]=='_':del d[key]
return d
def accessible(self):
"""Dit si on peut acceder aux "valeurs" (jeveux) de l'ASSD.
"""
if CONTEXT.debug: print '| accessible ?', self.nom
is_accessible = CONTEXT.get_current_step().sd_accessible()
if CONTEXT.debug: print ' `- is_accessible =', repr(is_accessible)
return is_accessible
def par_lot(self):
"""Conserver uniquement pour la compatibilite avec le catalogue v9 dans eficas.
"""
#XXX eficas
if not hasattr(self, 'jdc') or self.jdc == None:
val = None
else:
val = self.jdc.par_lot
return val == 'OUI'
class assd(ASSD):
def __convert__(cls,valeur):
return valeur
__convert__=classmethod(__convert__)
|