Skip to content

Commit efe3eeb

Browse files
committed
Ajout vérification version grammaire
1 parent 9acf96b commit efe3eeb

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

crue10/base/__init__.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import xml.etree.ElementTree as ET
77

88
from crue10.utils import add_default_missing_metadata, ExceptionCrue10, JINJA_ENV, \
9-
get_xml_root_from_file, logger, PREFIX, XML_ENCODING, XSD_FOLDER
9+
get_xml_root_from_file, logger, PREFIX, XML_ENCODING, XSD_FOLDER, XSI_SCHEMA_LOCATION
1010

1111

1212
# ABC below is compatible with Python 2 and 3
@@ -87,6 +87,12 @@ def _get_xml_root_and_set_comment(self, xml):
8787
except ET.ParseError as e:
8888
raise ExceptionCrue10("Erreur syntaxe XML dans `%s`:\n%s" % (self.files[xml], e))
8989

90+
# Check version grammaire
91+
version_grammaire = root.get(XSI_SCHEMA_LOCATION)[-7:-4]
92+
if version_grammaire != '1.2':
93+
raise ExceptionCrue10("La grammaire %s n'est pas supportée avec cette version de Crue10_tools !"
94+
% version_grammaire)
95+
9096
# Sets comment if the tag is found
9197
comment_elt = root.find(PREFIX + 'Commentaire')
9298
if comment_elt is not None:

crue10/etude.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from crue10.run import Run
1414
from crue10.scenario import Scenario
1515
from crue10.sous_modele import SousModele
16-
from crue10.utils import check_isinstance, ExceptionCrue10, JINJA_ENV, logger, PREFIX
16+
from crue10.utils import check_isinstance, ExceptionCrue10, JINJA_ENV, logger, PREFIX, XSI_SCHEMA_LOCATION
1717
from crue10.utils.settings import XML_ENCODING
1818

1919

@@ -117,7 +117,15 @@ def get_liste_run_names(self):
117117

118118
def _read_etu(self):
119119
"""Ecrire le fichier etu.xml"""
120-
root = ET.parse(self.etu_path).getroot()
120+
try:
121+
root = ET.parse(self.etu_path).getroot()
122+
except ET.ParseError as e:
123+
raise ExceptionCrue10("Erreur syntaxe XML dans `%s`:\n%s" % (self.etu_path, e))
124+
# Check version grammaire
125+
version_grammaire = root.get(XSI_SCHEMA_LOCATION)[-7:-4]
126+
if version_grammaire != '1.2':
127+
raise ExceptionCrue10("La grammaire %s n'est pas supportée avec cette version de Crue10_tools !"
128+
% version_grammaire)
121129
folder = os.path.dirname(self.etu_path)
122130

123131
# Etude metadata

crue10/utils/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
XSD_FOLDER = os.path.join(DATA_FOLDER_ABSPATH, 'xsd')
2424

25+
XSI_SCHEMA_LOCATION = '{http://www.w3.org/2001/XMLSchema-instance}schemaLocation'
26+
2527
try:
2628
USERNAME = os.getlogin()
2729
except:

0 commit comments

Comments
 (0)