Skip to content

Commit 9b688a1

Browse files
committed
[IMP] l10n_it_account: update Schema, add Schema for "Fattura Semplificata"
1 parent 4e09219 commit 9b688a1

3 files changed

Lines changed: 594 additions & 19 deletions

File tree

.pre-commit-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ exclude: |
1818
(l10n_it_account/tools/xsd)|
1919
# external stylesheets
2020
(l10n_it_fatturapa/data/Foglio_di_stile_fatturaordinaria_v1.2.2.xsl)|
21+
(l10n_it_fatturapa/data/fatturasemplificata_v1.0.xsl)|
2122
(l10n_it_fatturapa/data/FoglioStileAssoSoftware.xsl)|
2223
# XML tests should not be reformatted
2324
^l10n_it_fatturapa_out/tests/data|

l10n_it_account/tools/account_tools.py

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ def encode_for_export(string_to_encode, max_chars, encoding="latin"):
4949
"Schema_del_file_xml_FatturaPA_v1.2.2.xsd",
5050
)
5151

52+
_fpa_simple_schema_file = get_module_resource(
53+
"l10n_it_account",
54+
"tools",
55+
"xsd",
56+
"Schema_VFSM10.xsd",
57+
)
58+
5259
fpa_schema = xmlschema.XMLSchema(
5360
_fpa_schema_file,
5461
locations={"http://www.w3.org/2000/09/xmldsig#": _old_xsd_specs},
@@ -57,31 +64,45 @@ def encode_for_export(string_to_encode, max_chars, encoding="latin"):
5764
loglevel=20,
5865
)
5966

67+
fpa_simple_schema = xmlschema.XMLSchema(
68+
_fpa_simple_schema_file,
69+
locations={"http://www.w3.org/2000/09/xmldsig#": _old_xsd_specs},
70+
validation="lax",
71+
allow="local",
72+
loglevel=20,
73+
)
74+
75+
76+
# fix <xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
77+
# schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" /> # noqa: B950
78+
class _VeryOldXSDSpecResolverTYVMSdI(etree.Resolver):
79+
def resolve(self, system_url, public_id, context):
80+
if (
81+
system_url
82+
== "http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" # noqa: B950
83+
):
84+
_logger.info(
85+
"mapping URL for %r to local file %r",
86+
system_url,
87+
_old_xsd_specs,
88+
)
89+
return self.resolve_filename(self._old_xsd_specs, context)
90+
else:
91+
return super().resolve(system_url, public_id, context)
6092

61-
def fpa_schema_etree():
62-
# fix <xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
63-
# schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" /> # noqa: B950
64-
65-
class VeryOldXSDSpecResolverTYVMSdI(etree.Resolver):
66-
def resolve(self, system_url, public_id, context):
67-
if (
68-
system_url
69-
== "http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" # noqa: B950
70-
):
71-
_logger.info(
72-
"mapping URL for %r to local file %r",
73-
system_url,
74-
_old_xsd_specs,
75-
)
76-
return self.resolve_filename(self._old_xsd_specs, context)
77-
else:
78-
return super().resolve(system_url, public_id, context)
7993

94+
def fpa_schema_etree():
8095
parser = etree.XMLParser()
81-
parser.resolvers.add(VeryOldXSDSpecResolverTYVMSdI())
96+
parser.resolvers.add(_VeryOldXSDSpecResolverTYVMSdI())
8297
return etree.parse(_fpa_schema_file, parser)
8398

8499

100+
def fpa_simple_schema_etree():
101+
parser = etree.XMLParser()
102+
parser.resolvers.add(_VeryOldXSDSpecResolverTYVMSdI())
103+
return etree.parse(_fpa_simple_schema_file, parser)
104+
105+
85106
# Funzione per leggere i possibili valori dei tipi enumeration
86107
def fpa_schema_get_enum(type_name):
87108
enum = fpa_schema.types[type_name].get_facet(xmlschema.names.XSD_ENUMERATION)

0 commit comments

Comments
 (0)