/usr/lib/aster/Execution/checksd.py is in code-aster 11.5.0+dfsg2-4.
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 | # coding=utf-8
# person_in_charge: mathieu.courtois at edf.fr
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2011 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.
# ======================================================================
"""
Utilitaires pour tester la sd produite par une commande.
"""
from Noyau.asojb import OJB
# pour utilisation dans eficas
try:
import aster
from Utilitai.Utmess import UTMESS
except:
pass
def get_list_objects():
"""Retourne la liste (set) des objets jeveux présents à un moment donné
"""
return set(aster.jeveux_getobjects(' '))
def check(checker, co, l_before, etape):
"""Vérifie la cohérence de la SD produite :
- type des objets / ceux déclarés dans le catalogue de la SD
- présence d'objets imprévus dans le catalogue
l_before : liste des objets jeveux présents avant la création de la SD.
"""
type_concept = type(co).__name__
sd = co.sdj
if 0: print "AJACOT checksd "+type_concept+" >"+sd.nomj.nomj+'<'
# l_new = objets créés par la commande courante
l_after = get_list_objects()
l_new = l_after - l_before
# on vérifie le contenu de la SD sur la base de son catalogue
checker = sd.check(checker)
# Vérification des "checksum":
if 0:
# A modifier (if 1) si l'on souhaite vérifier que les commandes ne
# modifient pas leurs arguments "in" :
# On vérifie que le "checksum" des objets qui existaient déjà n'a pas changé:
# Remarque : il faut bien le faire sur l_after car c'est checkSumOJB qui
# initialise la valeur pour les objets nouveaux
for nom in l_after :
if nom[0:1] == '&':
# à cause des objets "&&SYS.*" et du cout des objets "&CATA.*"
continue
obj=OJB(nom)
if etape.reuse:
# les commandes réentrantes ont le droit de modifier leur concept "reuse"
if nom[0:8].strip() == sd.nomj.nomj.strip():
checker.checkSumOJB(obj,sd,'maj')
continue
checker.checkSumOJB(obj,sd)
# on imprime les messages d'erreur stockés dans le checker
lerreur=[(obj, msg) for level, obj, msg in checker.msg if level == 0]
lerreur.sort()
if len(lerreur) > 0 :
# pour "ouvrir" le message
nom_concept=sd.nomj.nomj.strip()
nom_commande=etape.definition.nom.strip()
UTMESS("E+", 'SDVERI_30', valk=(nom_concept,nom_commande))
for obj, msg in lerreur :
UTMESS("E+", 'SDVERI_31', valk=(obj, msg))
UTMESS("E", 'VIDE_1')
# on détruit les messages déjà imprimés pour ne pas les réimprimer avec la SD suivante
checker.msg=[]
# on vérifie que la commande n'a pas créé d'objets interdits
l_possible = set(checker.names.keys())
l_interdit = list(l_new - l_possible)
l_interdit.sort()
if len(l_interdit) > 0:
# pour "ouvrir" le message :
UTMESS("E+", 'SDVERI_40',valk=type_concept)
for x in l_interdit:
UTMESS('E+', 'SDVERI_41',valk=x)
UTMESS("E", 'VIDE_1')
return checker
|