0001-mdel-order-xml-elements-35145.patch
passerelle/contrib/mdel/mdel.py | ||
---|---|---|
14 | 14 |
# You should have received a copy of the GNU Affero General Public License |
15 | 15 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 |
import collections |
|
17 | 18 |
import os |
18 | 19 |
import base64 |
19 | 20 |
import datetime |
... | ... | |
256 | 257 |
if self.mapping.get(key, None): |
257 | 258 |
elements[self.mapping[key]] = value |
258 | 259 | |
259 |
root = ElementFactory(self.root_element) |
|
260 |
root = ElementFactory(self.root_element, **self.root_attributes)
|
|
260 | 261 | |
261 |
for key, value in elements.items(): |
|
262 |
path = key.split('_') |
|
263 |
root.append(json_to_xml(path, value, root), allow_new=False) |
|
262 |
for key in self.mapping.values(): |
|
263 |
if key in elements: |
|
264 |
value = elements[key] |
|
265 |
path = key.split('_') |
|
266 |
root.append(json_to_xml(path, value, root), allow_new=False) |
|
264 | 267 | |
265 | 268 |
return root |
266 | 269 | |
267 | 270 | |
268 | 271 |
class ILEData(Data): |
269 | 272 | |
270 |
mapping = { |
|
271 |
'nom_famille': 'Inscription_Electeur_Noms_NomFamille', |
|
272 |
'nom_usage': 'Inscription_Electeur_Noms_NomUsage', |
|
273 |
'prenoms': 'Inscription_Electeur_Prenoms_Prenom', |
|
274 |
'date_naissance': 'Inscription_Electeur_DateDeNaissance', |
|
275 |
'lieunaiss_localite': 'Inscription_Electeur_LieuDeNaissance_Localite', |
|
276 |
'lieunaiss_division_territoriale': 'Inscription_Electeur_LieuDeNaissance_DivisionTerritoriale', |
|
277 |
'lieunaiss_code_postal': 'Inscription_Electeur_LieuDeNaissance_CodePostal', |
|
278 |
'lieunaiss_pays_raw': 'Inscription_Electeur_LieuDeNaissance_Pays', |
|
279 |
'sexe_raw': 'Inscription_Electeur_Sexe', |
|
280 |
'nationalite_raw': 'Inscription_Electeur_Nationalite', |
|
281 |
'adresse_num_voie': 'Inscription_Electeur_AdresseDeLElecteur_NumeroVoie', |
|
282 |
'adresse_type_voie': 'Inscription_Electeur_AdresseDeLElecteur_TypeVoie', |
|
283 |
'adresse_nom_voie': 'Inscription_Electeur_AdresseDeLElecteur_NomVoie', |
|
284 |
'adresse_complement': 'Inscription_Electeur_AdresseDeLElecteur_Complement', |
|
285 |
'adresse_code_postal': 'Inscription_Electeur_AdresseDeLElecteur_CodePostal', |
|
286 |
'adresse_localite': 'Inscription_Electeur_AdresseDeLElecteur_Localite', |
|
287 |
'adresse_division_territoriale': 'Inscription_Electeur_AdresseDeLElecteur_DivisionTerritoriale', |
|
288 |
'contact_uri': 'Inscription_Electeur_MethodeDeContact_URI', |
|
289 |
'contact_code': 'Inscription_Electeur_MethodeDeContact_CanalCode', |
|
290 |
'inscription_liste_type_raw': 'Inscription_TypeDeListe', |
|
291 |
'inscription_localite': 'CommuneDInscription_Localite', |
|
292 |
'inscription_division_territoriale': 'CommuneDInscription_DivisionTeritoriale', |
|
293 |
'insription_code_insee': 'CommuneDInscription_CodeInsee', |
|
294 |
'inscription_date': 'DateDInscription', |
|
295 |
'inscription_type': 'TypeDInscription', |
|
296 |
'anterieur_situation_raw': 'SituationElectoraleAnterieure_SituationDeLElecteur', |
|
297 |
'anterieur_consulat': 'SituationElectoraleAnterieure_ConsulatDePrecedenteInscription_AmbassadeOuPosteConsulaire', |
|
298 |
'anterieur_consulat_pays_raw': 'SituationElectoraleAnterieure_ConsulatDePrecedenteInscription_Pays', |
|
299 |
'anterieur_localite': 'SituationElectoraleAnterieure_CommuneDePrecedenteInscription_Localite', |
|
300 |
'anterieur_division_territoriale': 'SituationElectoraleAnterieure_CommuneDePrecedenteInscription_DivisionTerritoriale', |
|
301 |
'anterieur_ue_localite': 'SituationElectoraleAnterieure_PaysUeDerniereInscription_Localite', |
|
302 |
'anterieur_ue_division_territoriale': 'SituationElectoraleAnterieure_PaysUeDerniereInscription_DivisionTerritoriale', |
|
303 |
'anterieur_ue_localite_pays_raw': 'SituationElectoraleAnterieure_PaysUeDerniereInscription_Pays' |
|
304 |
} |
|
273 |
mapping = collections.OrderedDict([ |
|
274 |
('nom_famille', 'Inscription_Electeur_Noms_NomFamille'), |
|
275 |
('nom_usage', 'Inscription_Electeur_Noms_NomUsage'), |
|
276 |
('prenoms', 'Inscription_Electeur_Prenoms_Prenom'), |
|
277 |
('date_naissance', 'Inscription_Electeur_DateDeNaissance'), |
|
278 |
('lieunaiss_localite', 'Inscription_Electeur_LieuDeNaissance_Localite'), |
|
279 |
( |
|
280 |
'lieunaiss_division_territoriale', |
|
281 |
'Inscription_Electeur_LieuDeNaissance_DivisionTerritoriale' |
|
282 |
), |
|
283 |
('lieunaiss_code_postal', 'Inscription_Electeur_LieuDeNaissance_CodePostal'), |
|
284 |
('lieunaiss_pays_raw', 'Inscription_Electeur_LieuDeNaissance_Pays'), |
|
285 |
('sexe_raw', 'Inscription_Electeur_Sexe'), |
|
286 |
('nationalite_raw', 'Inscription_Electeur_Nationalite'), |
|
287 |
('adresse_complement', 'Inscription_Electeur_AdresseDeLElecteur_Complement'), |
|
288 |
('adresse_num_voie', 'Inscription_Electeur_AdresseDeLElecteur_NumeroVoie'), |
|
289 |
('adresse_type_voie', 'Inscription_Electeur_AdresseDeLElecteur_TypeVoie'), |
|
290 |
('adresse_nom_voie', 'Inscription_Electeur_AdresseDeLElecteur_NomVoie'), |
|
291 |
('adresse_code_postal', 'Inscription_Electeur_AdresseDeLElecteur_CodePostal'), |
|
292 |
('adresse_localite', 'Inscription_Electeur_AdresseDeLElecteur_Localite'), |
|
293 |
( |
|
294 |
'adresse_division_territoriale', |
|
295 |
'Inscription_Electeur_AdresseDeLElecteur_DivisionTerritoriale' |
|
296 |
), |
|
297 |
('contact_code', 'Inscription_Electeur_MethodeDeContact_CanalCode'), |
|
298 |
('contact_uri', 'Inscription_Electeur_MethodeDeContact_URI'), |
|
299 |
('inscription_liste_type_raw', 'Inscription_TypeDeListe'), |
|
300 |
('inscription_localite', 'Inscription_CommuneDInscription_Localite'), |
|
301 |
( |
|
302 |
'inscription_division_territoriale', |
|
303 |
'Inscription_CommuneDInscription_DivisionTerritoriale'), |
|
304 |
('inscription_code_insee', 'Inscription_CommuneDInscription_CodeInsee'), |
|
305 |
('inscription_date', 'DateDInscription'), |
|
306 |
('inscription_type', 'TypeDInscription'), |
|
307 |
('anterieur_situation_raw', 'SituationElectoraleAnterieure_SituationDeLElecteur'), |
|
308 |
( |
|
309 |
'anterieur_consulat', |
|
310 |
'SituationElectoraleAnterieure_ConsulatDePrecedenteInscription' |
|
311 |
'_AmbassadeOuPosteConsulaire' |
|
312 |
), |
|
313 |
( |
|
314 |
'anterieur_consulat_pays_raw', |
|
315 |
'SituationElectoraleAnterieure_ConsulatDePrecedenteInscription_Pays' |
|
316 |
), |
|
317 |
( |
|
318 |
'anterieur_localite', |
|
319 |
'SituationElectoraleAnterieure_CommuneDePrecedenteInscription_Localite' |
|
320 |
), |
|
321 |
( |
|
322 |
'anterieur_ue_localite', |
|
323 |
'SituationElectoraleAnterieure_PaysUeDerniereInscription_Localite' |
|
324 |
), |
|
325 |
( |
|
326 |
'anterieur_division_territoriale', |
|
327 |
'SituationElectoraleAnterieure_CommuneDePrecedenteInscription_DivisionTerritoriale' |
|
328 |
), |
|
329 |
( |
|
330 |
'anterieur_ue_division_territoriale', |
|
331 |
'SituationElectoraleAnterieure_PaysUeDerniereInscription_DivisionTerritoriale' |
|
332 |
), |
|
333 |
( |
|
334 |
'anterieur_ue_localite_pays_raw', |
|
335 |
'SituationElectoraleAnterieure_PaysUeDerniereInscription_Pays' |
|
336 |
) |
|
337 |
]) |
|
305 | 338 | |
306 | 339 |
required = [ |
307 | 340 |
'nom_famille', |
... | ... | |
323 | 356 | |
324 | 357 |
def __init__(self, demand_id, data): |
325 | 358 |
self.root_element = 'AvisDInscription' |
326 | ||
359 |
self.root_attributes = {} |
|
327 | 360 |
# only possible value : vol as 'Inscription Volontaire' |
328 | 361 |
data['inscription_type'] = 'vol' |
329 | 362 | |
... | ... | |
332 | 365 | |
333 | 366 |
class AECData(Data): |
334 | 367 | |
335 |
mapping = {
|
|
336 |
'aec_nature': 'DemandeActe_NatureActe_Libelle',
|
|
337 |
'aec_nature_raw': 'DemandeActe_NatureActe_Code',
|
|
338 |
'aec_type': 'DemandeActe_TypeActe_Libelle',
|
|
339 |
'aec_type_raw': 'DemandeActe_TypeActe_Code',
|
|
340 |
'code_insee': 'DemandeActe_LieuActe_CodeINSEE',
|
|
341 |
'code_postal': 'DemandeActe_LieuActe_CodePostal',
|
|
342 |
'demandeur_adresse_adresse': 'DemandeActe_Demandeur_AdresseEtrangere_Adresse',
|
|
343 |
'demandeur_adresse_batiment': 'DemandeActe_Demandeur_AdresseFrancaise_Batiment',
|
|
344 |
'demandeur_adresse_boite_postal': 'DemandeActe_Demandeur_AdresseFrancaise_BoitePostale',
|
|
345 |
'demandeur_adresse_code_postal': 'DemandeActe_Demandeur_AdresseFrancaise_CodePostal',
|
|
346 |
'demandeur_adresse_etage': 'DemandeActe_Demandeur_AdresseFrancaise_Etage',
|
|
347 |
'demandeur_adresse_ville': 'DemandeActe_Demandeur_AdresseFrancaise_Ville',
|
|
348 |
'demandeur_adresse_etrangere': 'DemandeActe_Demandeur_AdresseEtrangere_Adresse',
|
|
349 |
'demandeur_adresse_etrangere_pays_raw': 'DemandeActe_Demandeur_AdresseEtrangere_Pays',
|
|
350 |
'demandeur_adresse_voie': 'DemandeActe_Demandeur_AdresseFrancaise_Voie',
|
|
351 |
'demandeur_civilite': 'DemandeActe_Demandeur_Civilite',
|
|
352 |
'demandeur_email': 'DemandeActe_Demandeur_Courriel',
|
|
353 |
'demandeur_nom': 'DemandeActe_Demandeur_Nom',
|
|
354 |
'demandeur_prenom': 'DemandeActe_Demandeur_Prenom',
|
|
355 |
'demandeur_telephone': 'DemandeActe_Demandeur_Telephone',
|
|
356 |
'nombre_exemplaires': 'DemandeActe_NombreExemplaires',
|
|
357 |
'motif_demande': 'DemandeActe_MotifDemande_Libelle',
|
|
358 |
'motif_demande_raw': 'DemandeActe_MotifDemande_Commentaire',
|
|
359 |
'qualite_demandeur': 'DemandeActe_Demandeur_QualiteDemandeur_Libelle',
|
|
360 |
'qualite_demandeur_raw': 'DemandeActe_Demandeur_QualiteDemandeur_Code',
|
|
361 |
'date_acte': 'DemandeActe_DateActe',
|
|
362 |
'titulaire_civilite': 'DemandeActe_Titulaire_Civilite',
|
|
363 |
'titulaire_mere_nom': 'DemandeActe_Titulaire_Filiation_Mere_Nom',
|
|
364 |
'titulaire_mere_prenoms': 'DemandeActe_Titulaire_Filiation_Mere_Prenoms',
|
|
365 |
'titulaire_naiss_date': 'DemandeActe_Titulaire_DateDeNaissance',
|
|
366 |
'titulaire_naiss_departement_raw': 'DemandeActe_Titulaire_DepartementDeNaissance',
|
|
367 |
'titulaire_nationalite_raw': 'DemandeActe_Titulaire_Nationalite',
|
|
368 |
'titulaire_naiss_pays_raw': 'DemandeActe_Titulaire_PaysDeNaissance',
|
|
369 |
'titulaire_naiss_ville': 'DemandeActe_Titulaire_LieuDeNaissance',
|
|
370 |
'titulaire_nom': 'DemandeActe_Titulaire_NomNaissance',
|
|
371 |
'titulaire_pere_nom': 'DemandeActe_Titulaire_Filiation_Pere_Nom',
|
|
372 |
'titulaire_pere_prenoms': 'DemandeActe_Titulaire_Filiation_Pere_Prenoms',
|
|
373 |
'titulaire_prenoms': 'DemandeActe_Titulaire_Prenoms',
|
|
374 |
'titulaire2_civilite': 'DemandeActe_Titulaire2_Civilite',
|
|
375 |
'titulaire2_mere_nom': 'DemandeActe_Titulaire2_Filiation_Mere_Nom',
|
|
376 |
'titulaire2_mere_prenoms': 'DemandeActe_Titulaire2_Filiation_Mere_Prenoms',
|
|
377 |
'titulaire2_naiss_date': 'DemandeActe_Titulaire2_DateDeNaissance',
|
|
378 |
'titulaire2_naiss_departement_raw': 'DemandeActe_Titulaire2_DepartementDeNaissance',
|
|
379 |
'titulaire2_nationalite_raw': 'DemandeActe_Titulaire2_Nationalite',
|
|
380 |
'titulaire2_naiss_pays_raw': 'DemandeActe_Titulaire2_PaysDeNaissance',
|
|
381 |
'titulaire2_naiss_ville': 'DemandeActe_Titulaire2_LieuDeNaissance',
|
|
382 |
'titulaire2_nom': 'DemandeActe_Titulaire2_NomNaissance',
|
|
383 |
'titulaire2_pere_nom': 'DemandeActe_Titulaire2_Filiation_Pere_Nom',
|
|
384 |
'titulaire2_pere_prenoms': 'DemandeActe_Titulaire2_Filiation_Pere_Prenoms',
|
|
385 |
'titulaire2_prenoms': 'DemandeActe_Titulaire2_Prenoms',
|
|
386 |
'ville': 'DemandeActe_LieuActe_Ville'
|
|
387 |
}
|
|
368 |
mapping = collections.OrderedDict([
|
|
369 |
('aec_type_raw', 'DemandeActe_TypeActe_Code'),
|
|
370 |
('aec_type', 'DemandeActe_TypeActe_Libelle'),
|
|
371 |
('aec_nature_raw', 'DemandeActe_NatureActe_Code'),
|
|
372 |
('aec_nature', 'DemandeActe_NatureActe_Libelle'),
|
|
373 |
('date_acte', 'DemandeActe_DateActe'),
|
|
374 |
('code_postal', 'DemandeActe_LieuActe_CodePostal'),
|
|
375 |
('ville', 'DemandeActe_LieuActe_Ville'),
|
|
376 |
('code_insee', 'DemandeActe_LieuActe_CodeINSEE'),
|
|
377 |
('nombre_exemplaires', 'DemandeActe_NombreExemplaires'),
|
|
378 |
('motif_demande', 'DemandeActe_MotifDemande_Libelle'),
|
|
379 |
('motif_demande_raw', 'DemandeActe_MotifDemande_Commentaire'),
|
|
380 |
('qualite_demandeur_raw', 'DemandeActe_Demandeur_QualiteDemandeur_Code'),
|
|
381 |
('qualite_demandeur', 'DemandeActe_Demandeur_QualiteDemandeur_Libelle'),
|
|
382 |
('demandeur_civilite', 'DemandeActe_Demandeur_Civilite'),
|
|
383 |
('demandeur_nom', 'DemandeActe_Demandeur_Nom'),
|
|
384 |
('demandeur_prenom', 'DemandeActe_Demandeur_Prenom'),
|
|
385 |
('demandeur_adresse_etage', 'DemandeActe_Demandeur_AdresseFrancaise_Etage'),
|
|
386 |
('demandeur_adresse_batiment', 'DemandeActe_Demandeur_AdresseFrancaise_Batiment'),
|
|
387 |
('demandeur_adresse_voie', 'DemandeActe_Demandeur_AdresseFrancaise_Voie'),
|
|
388 |
('demandeur_adresse_boite_postal', 'DemandeActe_Demandeur_AdresseFrancaise_BoitePostale'),
|
|
389 |
('demandeur_adresse_code_postal', 'DemandeActe_Demandeur_AdresseFrancaise_CodePostal'),
|
|
390 |
('demandeur_adresse_ville', 'DemandeActe_Demandeur_AdresseFrancaise_Ville'),
|
|
391 |
('demandeur_adresse_adresse', 'DemandeActe_Demandeur_AdresseEtrangere_Adresse'),
|
|
392 |
('demandeur_adresse_etrangere', 'DemandeActe_Demandeur_AdresseEtrangere_Adresse'),
|
|
393 |
('demandeur_adresse_etrangere_pays_raw', 'DemandeActe_Demandeur_AdresseEtrangere_Pays'),
|
|
394 |
('demandeur_email', 'DemandeActe_Demandeur_Courriel'),
|
|
395 |
('demandeur_telephone', 'DemandeActe_Demandeur_Telephone'),
|
|
396 |
('titulaire_civilite', 'DemandeActe_Titulaire_Civilite'),
|
|
397 |
('titulaire_nom', 'DemandeActe_Titulaire_NomNaissance'),
|
|
398 |
('titulaire_prenoms', 'DemandeActe_Titulaire_Prenoms'),
|
|
399 |
('titulaire_pere_nom', 'DemandeActe_Titulaire_Filiation_Pere_Nom'),
|
|
400 |
('titulaire_pere_prenoms', 'DemandeActe_Titulaire_Filiation_Pere_Prenoms'),
|
|
401 |
('titulaire_mere_nom', 'DemandeActe_Titulaire_Filiation_Mere_Nom'),
|
|
402 |
('titulaire_mere_prenoms', 'DemandeActe_Titulaire_Filiation_Mere_Prenoms'),
|
|
403 |
('titulaire_naiss_date', 'DemandeActe_Titulaire_DateDeNaissance'),
|
|
404 |
('titulaire_naiss_ville', 'DemandeActe_Titulaire_LieuDeNaissance'),
|
|
405 |
('titulaire_naiss_departement_raw', 'DemandeActe_Titulaire_DepartementDeNaissance'),
|
|
406 |
('titulaire_naiss_pays_raw', 'DemandeActe_Titulaire_PaysDeNaissance'),
|
|
407 |
('titulaire_nationalite_raw', 'DemandeActe_Titulaire_Nationalite'),
|
|
408 |
('titulaire2_civilite', 'DemandeActe_Titulaire2_Civilite'),
|
|
409 |
('titulaire2_nom', 'DemandeActe_Titulaire2_NomNaissance'),
|
|
410 |
('titulaire2_prenoms', 'DemandeActe_Titulaire2_Prenoms'),
|
|
411 |
('titulaire2_pere_nom', 'DemandeActe_Titulaire2_Filiation_Pere_Nom'),
|
|
412 |
('titulaire2_pere_prenoms', 'DemandeActe_Titulaire2_Filiation_Pere_Prenoms'),
|
|
413 |
('titulaire2_mere_nom', 'DemandeActe_Titulaire2_Filiation_Mere_Nom'),
|
|
414 |
('titulaire2_mere_prenoms', 'DemandeActe_Titulaire2_Filiation_Mere_Prenoms'),
|
|
415 |
('titulaire2_naiss_date', 'DemandeActe_Titulaire2_DateDeNaissance'),
|
|
416 |
('titulaire2_naiss_ville', 'DemandeActe_Titulaire2_LieuDeNaissance'),
|
|
417 |
('titulaire2_naiss_departement_raw', 'DemandeActe_Titulaire2_DepartementDeNaissance'),
|
|
418 |
('titulaire2_naiss_pays_raw', 'DemandeActe_Titulaire2_PaysDeNaissance'),
|
|
419 |
('titulaire2_nationalite_raw', 'DemandeActe_Titulaire2_Nationalite'),
|
|
420 |
])
|
|
388 | 421 | |
389 | 422 |
required = [ |
390 | 423 |
'aec_nature', |
... | ... | |
413 | 446 | |
414 | 447 |
def __init__(self, demand_id, data): |
415 | 448 |
self.root_element = 'EnveloppeMetierType' |
449 |
self.root_attributes = {'canal_utilise': '0'} |
|
416 | 450 | |
417 | 451 |
super(AECData, self).__init__(demand_id, data) |
418 | 452 |
tests/data/mdel/ActeEtatCivil-V1.A.xsd | ||
---|---|---|
1 |
<?xml version="1.0" encoding="UTF-8"?> |
|
2 |
<!-- Date de création : 18/03/13 |
|
3 |
Nom de l'organisme : Bull Echirolles |
|
4 |
Nom de l'auteur : Reynaud Angélique |
|
5 |
Numéro de version : 0.1 |
|
6 |
Historique des modifications (pour chaque modification :) |
|
7 |
- Date de mise à jour :26/03/2013 |
|
8 |
- Nom de l'organisme : Bull Echirolles |
|
9 |
- Nom de l'auteur : Angélique Reynaud |
|
10 |
- Numéro de version : 1.0 |
|
11 |
- Description : Mis à jour du document suite à l'atelier et aux échanges de mails |
|
12 |
Ajout des balises : LieuActe , DateActe , AdresseEtrangere dans DemandeurType, Civilite dans DemandeurType et IndividuType , Titulaire2 |
|
13 |
Suppression de LieuActe et DateActe dans IndividuType |
|
14 |
Declaration des type complexe : LieuActeType, CiviliteType, AdresseEtrangereType |
|
15 |
|
|
16 |
- Date de mise à jour :15/04/2013 |
|
17 |
- Nom de l'organisme : Bull Echirolles |
|
18 |
- Nom de l'auteur : Maxime PASQUIER |
|
19 |
- Numéro de version : 1.A |
|
20 |
- Description : Mise en conformité du schema avec la norme XSD pour SmartGuide Designer |
|
21 |
|
|
22 |
- Date de mise à jour :16/04/2013 |
|
23 |
- Nom de l'organisme : Bull Echirolles |
|
24 |
- Nom de l'auteur : Maxime PASQUIER |
|
25 |
- Numéro de version : 1.B |
|
26 |
- Description : Suite au mail du 15/04/13, |
|
27 |
Ajout des champs ; Date de naissance ; Lieu de naissance ; Département de naissance ; Pays de naissance ; Nationalité |
|
28 |
pour une demande d'acte de mariage ou de décès pour les personnes concernées. |
|
29 |
Pas d'éclatement de l'adresse française. |
|
30 |
|
|
31 |
- Date de mise à jour :28/05/2013 |
|
32 |
- Nom de l'organisme : Bull Echirolles |
|
33 |
- Nom de l'auteur : Maxime PASQUIER |
|
34 |
- Numéro de version : 1.C |
|
35 |
- Description : Suite aux mantis 7560 et 7635 |
|
36 |
Correction du nom de la balise <Nationnalite> en <Nationalite> |
|
37 |
Ajout des listes de valeur pour les balises <NatureActe>, <MotifDemande> et <QualiteDemandeur> |
|
38 |
Ajout de l'information minOccurs=0 sur les balises <Telephone>, <Pere>, <Mere>, <LieuDeNaissance>, <DepartementDeNaissance>, <PaysDeNaissance> et <Nationalite> |
|
39 |
--> |
|
40 |
|
|
41 |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
|
42 |
<xsd:element name="EnveloppeMetierType"> |
|
43 |
<xsd:annotation> |
|
44 |
<xsd:documentation> |
|
45 |
Le type des enveloppes metier possible |
|
46 |
</xsd:documentation> |
|
47 |
</xsd:annotation> |
|
48 |
<xsd:complexType> |
|
49 |
<xsd:sequence> |
|
50 |
<xsd:choice> |
|
51 |
<xsd:element name="DemandeActe" type="DemandeActeType"> |
|
52 |
<xsd:annotation> |
|
53 |
<xsd:documentation> |
|
54 |
Ceci concerne la demande d'acte d'etat civil global (naissance, |
|
55 |
mariage, deces) |
|
56 |
</xsd:documentation> |
|
57 |
</xsd:annotation> |
|
58 |
</xsd:element> |
|
59 |
</xsd:choice> |
|
60 |
</xsd:sequence> |
|
61 |
<xsd:attribute name="canal_utilise" type="xsd:string" use="required" /> |
|
62 |
</xsd:complexType> |
|
63 |
</xsd:element> |
|
64 |
|
|
65 |
<xsd:complexType name="DemandeActeType"> |
|
66 |
<xsd:annotation> |
|
67 |
<xsd:documentation> |
|
68 |
Informations decrivant une demande d'acte |
|
69 |
</xsd:documentation> |
|
70 |
</xsd:annotation> |
|
71 |
<xsd:sequence> |
|
72 |
<xsd:element name="TypeActe" type="TypeActeType"> |
|
73 |
<xsd:annotation> |
|
74 |
<xsd:documentation> |
|
75 |
Type d'acte: NAISSANCE, MARIAGE, DECES |
|
76 |
</xsd:documentation> |
|
77 |
</xsd:annotation> |
|
78 |
</xsd:element> |
|
79 |
<xsd:element name="NatureActe" type="NatureActeType"> |
|
80 |
<xsd:annotation> |
|
81 |
<xsd:documentation> |
|
82 |
Nautre de l'acte: COPIE-INTEGRALE, EXTRAIT-AVEC-FILIATION, EXTRAIT-SANS-FILIATION, EXTRAIT-PLURILINGUE |
|
83 |
</xsd:documentation> |
|
84 |
</xsd:annotation> |
|
85 |
</xsd:element> |
|
86 |
<xsd:element name="DateActe" type="xsd:date" > |
|
87 |
<xsd:annotation> |
|
88 |
<xsd:documentation> |
|
89 |
Date de l'acte : date de naissance ou date du mariage ou date du décès |
|
90 |
</xsd:documentation> |
|
91 |
</xsd:annotation> |
|
92 |
</xsd:element> |
|
93 |
<xsd:element name="LieuActe" type="LieuActeType"> |
|
94 |
<xsd:annotation> |
|
95 |
<xsd:documentation> |
|
96 |
Lieu de l'acte : lieu de naissance ou lieu de la cérémonie du mariage ou lieu du décès |
|
97 |
</xsd:documentation> |
|
98 |
</xsd:annotation> |
|
99 |
</xsd:element> |
|
100 |
<xsd:element name="NombreExemplaires"> |
|
101 |
<xsd:simpleType> |
|
102 |
<xsd:restriction base="xsd:integer"> |
|
103 |
<xsd:minInclusive value="1" /> |
|
104 |
</xsd:restriction> |
|
105 |
</xsd:simpleType> |
|
106 |
</xsd:element> |
|
107 |
<xsd:element name="MotifDemande" type="MotifDemandeType"> |
|
108 |
<xsd:annotation> |
|
109 |
<xsd:documentation> |
|
110 |
Motif de la demande : CarteNationaleIdentite, Passeport, CertificatDeNationaliteFrancaise, Mariage, Pension, ProcedureJudiciaire, PacteCivilDeSolidarite, ActeDeNotaire, Autre |
|
111 |
</xsd:documentation> |
|
112 |
</xsd:annotation> |
|
113 |
</xsd:element> |
|
114 |
<xsd:element name="Demandeur" type="DemandeurType" /> |
|
115 |
<xsd:element name="Titulaire" type="IndividuType"/> |
|
116 |
<xsd:element name="Titulaire2" type="IndividuType" minOccurs="0" /> |
|
117 |
</xsd:sequence> |
|
118 |
</xsd:complexType> |
|
119 |
|
|
120 |
|
|
121 |
<xsd:simpleType name="NomType"> |
|
122 |
<xsd:annotation> |
|
123 |
<xsd:documentation> |
|
124 |
Type des elements de nom Etat Civil |
|
125 |
</xsd:documentation> |
|
126 |
</xsd:annotation> |
|
127 |
<xsd:restriction base="xsd:string" /> |
|
128 |
</xsd:simpleType> |
|
129 |
|
|
130 |
<xsd:complexType name="ParentType"> |
|
131 |
<xsd:annotation> |
|
132 |
<xsd:documentation> |
|
133 |
Information concernant un parent d'un individu |
|
134 |
</xsd:documentation> |
|
135 |
</xsd:annotation> |
|
136 |
<xsd:sequence> |
|
137 |
<xsd:element name="Nom" type="NomType" minOccurs="0" /> |
|
138 |
<xsd:element name="Prenoms" type="NomType" minOccurs="0" /> |
|
139 |
</xsd:sequence> |
|
140 |
</xsd:complexType> |
|
141 |
<xsd:complexType name="FiliationType"> |
|
142 |
<xsd:sequence> |
|
143 |
<xsd:element name="Pere" type="ParentType" minOccurs="0" /> |
|
144 |
<xsd:element name="Mere" type="ParentType" minOccurs="0" /> |
|
145 |
</xsd:sequence> |
|
146 |
</xsd:complexType> |
|
147 |
|
|
148 |
<xsd:complexType name="AdressePostaleFrancaiseType" mixed="true"> |
|
149 |
<xsd:annotation> |
|
150 |
<xsd:documentation>L'adresse</xsd:documentation> |
|
151 |
</xsd:annotation> |
|
152 |
<xsd:sequence> |
|
153 |
<xsd:element name="Etage" type="xsd:string" minOccurs="0"/> |
|
154 |
<xsd:element name="Batiment" type="xsd:string" minOccurs="0"/> |
|
155 |
<xsd:element name="Voie" type="xsd:string" /> |
|
156 |
<xsd:element name="BoitePostale" type="xsd:string" minOccurs="0"/> |
|
157 |
<xsd:element name="CodePostal" type="xsd:string" /> |
|
158 |
<xsd:element name="Ville" type="xsd:string" /> |
|
159 |
</xsd:sequence> |
|
160 |
</xsd:complexType> |
|
161 |
|
|
162 |
<xsd:complexType name="QualiteDemandeurType"> |
|
163 |
<xsd:sequence> |
|
164 |
<xsd:element name="Code" type="xsd:string" /> |
|
165 |
<xsd:element name="Libelle" type="xsd:string" /> |
|
166 |
</xsd:sequence> |
|
167 |
</xsd:complexType> |
|
168 |
<xsd:complexType name="MotifDemandeType"> |
|
169 |
<xsd:sequence> |
|
170 |
<xsd:element name="Libelle" type="xsd:string" /> |
|
171 |
<xsd:element name="Commentaire" type="xsd:string" /> |
|
172 |
</xsd:sequence> |
|
173 |
</xsd:complexType> |
|
174 |
<xsd:complexType name="TypeActeType"> |
|
175 |
<xsd:sequence> |
|
176 |
<xsd:element name="Code"> |
|
177 |
<xsd:simpleType> |
|
178 |
<xsd:restriction base="xsd:string"> |
|
179 |
<xsd:enumeration value="NAISSANCE" /> |
|
180 |
<xsd:enumeration value="MARIAGE" /> |
|
181 |
<xsd:enumeration value="DECES" /> |
|
182 |
</xsd:restriction> |
|
183 |
</xsd:simpleType> |
|
184 |
</xsd:element> |
|
185 |
<xsd:element name="Libelle" type="xsd:string" /> |
|
186 |
</xsd:sequence> |
|
187 |
</xsd:complexType> |
|
188 |
<xsd:complexType name="NatureActeType"> |
|
189 |
<xsd:sequence> |
|
190 |
<xsd:element name="Code"> |
|
191 |
<xsd:simpleType> |
|
192 |
<xsd:restriction base="xsd:string"> |
|
193 |
<xsd:enumeration value="COPIE-INTEGRALE" /> |
|
194 |
<xsd:enumeration value="EXTRAIT-AVEC-FILIATION" /> |
|
195 |
<xsd:enumeration value="EXTRAIT-SANS-FILIATION" /> |
|
196 |
<xsd:enumeration value="EXTRAIT-PLURILINGUE" /> |
|
197 |
</xsd:restriction> |
|
198 |
</xsd:simpleType> |
|
199 |
</xsd:element> |
|
200 |
<xsd:element name="Libelle" type="xsd:string" /> |
|
201 |
</xsd:sequence> |
|
202 |
</xsd:complexType> |
|
203 |
|
|
204 |
<xsd:complexType name="IndividuType"> |
|
205 |
<xsd:annotation> |
|
206 |
<xsd:documentation> |
|
207 |
Informations caracterisant un individu |
|
208 |
</xsd:documentation> |
|
209 |
</xsd:annotation> |
|
210 |
<xsd:sequence> |
|
211 |
<xsd:element name="Civilite" type="CiviliteType" /> |
|
212 |
<xsd:element name="NomNaissance" type="NomType" /> |
|
213 |
<xsd:element name="Prenoms" type="NomType" /> |
|
214 |
<xsd:element name="Filiation" type="FiliationType" minOccurs="0" /> |
|
215 |
<xsd:element name="DateDeNaissance" type="xsd:date" /> |
|
216 |
<xsd:element name="LieuDeNaissance" type="xsd:string" minOccurs="0" /> |
|
217 |
<xsd:element name="DepartementDeNaissance" type="xsd:string" minOccurs="0" /> |
|
218 |
<xsd:element name="PaysDeNaissance" type="xsd:string" minOccurs="0" /> |
|
219 |
<xsd:element name="Nationalite" type="xsd:string" minOccurs="0" /> |
|
220 |
</xsd:sequence> |
|
221 |
</xsd:complexType> |
|
222 |
|
|
223 |
<xsd:complexType name="DemandeurType"> |
|
224 |
<xsd:annotation> |
|
225 |
<xsd:documentation> |
|
226 |
Informations caracterisant le demandeur de l'acte |
|
227 |
</xsd:documentation> |
|
228 |
</xsd:annotation> |
|
229 |
<xsd:sequence> |
|
230 |
<xsd:element name="QualiteDemandeur" type="QualiteDemandeurType" minOccurs="0"> |
|
231 |
<xsd:annotation> |
|
232 |
<xsd:documentation> |
|
233 |
Motif de la demande : PersonneConcernee, PereMere, Conjoint, Fils, GrandPere, PetitFils, Representant, Heriter, Autre |
|
234 |
</xsd:documentation> |
|
235 |
</xsd:annotation> |
|
236 |
</xsd:element> |
|
237 |
<xsd:element name="Civilite" type="CiviliteType" /> |
|
238 |
<xsd:element name="Nom" type="NomType" /> |
|
239 |
<xsd:element name="Prenom" type="NomType" /> |
|
240 |
<xsd:choice> |
|
241 |
<xsd:element name="AdresseFrancaise" type="AdressePostaleFrancaiseType" /> |
|
242 |
<xsd:element name="AdresseEtrangere" type="AdresseEtrangereType" /> |
|
243 |
</xsd:choice> |
|
244 |
<xsd:element name="Courriel" type="xsd:string" /> |
|
245 |
<xsd:element name="Telephone" type="xsd:string" minOccurs="0" /> |
|
246 |
</xsd:sequence> |
|
247 |
</xsd:complexType> |
|
248 |
<xsd:complexType name="LieuActeType"> |
|
249 |
<xsd:annotation> |
|
250 |
<xsd:documentation> |
|
251 |
Informations sur le lieu de l'acte |
|
252 |
</xsd:documentation> |
|
253 |
</xsd:annotation> |
|
254 |
<xsd:sequence> |
|
255 |
<xsd:element name="BoitePostale-LieuDit" type="xsd:string" minOccurs="0"/> |
|
256 |
<xsd:element name="CodePostal" type="xsd:string" /> |
|
257 |
<xsd:element name="Ville" type="xsd:string" /> |
|
258 |
<xsd:element name="CodeINSEE" type="xsd:string" /> |
|
259 |
</xsd:sequence> |
|
260 |
</xsd:complexType> |
|
261 |
<xsd:simpleType name="CiviliteType"> |
|
262 |
<xsd:restriction base="xsd:string"> |
|
263 |
<xsd:enumeration value="MONSIEUR"/> |
|
264 |
<xsd:enumeration value="MADAME"/> |
|
265 |
</xsd:restriction> |
|
266 |
</xsd:simpleType> |
|
267 |
<xsd:complexType name="AdresseEtrangereType"> |
|
268 |
<xsd:sequence> |
|
269 |
<xsd:element name="Adresse" type="xsd:string" /> |
|
270 |
<xsd:element name="Pays" type="xsd:string" /> |
|
271 |
</xsd:sequence> |
|
272 |
</xsd:complexType> |
|
273 |
|
|
274 |
</xsd:schema> |
tests/data/mdel/ILE_v1.1.xsd | ||
---|---|---|
1 |
<?xml version="1.0" encoding="UTF-8"?> |
|
2 |
<!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by Jean.dupont (EMBRACE) --> |
|
3 |
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> |
|
4 |
<xs:element name="AvisDInscription"> |
|
5 |
<xs:complexType> |
|
6 |
<xs:sequence> |
|
7 |
<xs:element name="Inscription" minOccurs="1"> |
|
8 |
<xs:complexType> |
|
9 |
<xs:sequence> |
|
10 |
<xs:element name="Electeur" minOccurs="1"> |
|
11 |
<xs:complexType> |
|
12 |
<xs:sequence> |
|
13 |
<xs:element name="Noms" minOccurs="1"> |
|
14 |
<xs:complexType> |
|
15 |
<xs:sequence> |
|
16 |
<xs:element name="NomFamille"> |
|
17 |
<xs:simpleType> |
|
18 |
<xs:restriction base="xs:string"> |
|
19 |
<xs:minLength value="1"/> |
|
20 |
</xs:restriction> |
|
21 |
</xs:simpleType> |
|
22 |
</xs:element> |
|
23 |
<xs:element name="NomUsage" type="xs:string" minOccurs="0"/> |
|
24 |
</xs:sequence> |
|
25 |
</xs:complexType> |
|
26 |
</xs:element> |
|
27 |
<xs:element name="Prenoms" minOccurs="0"> |
|
28 |
<xs:complexType> |
|
29 |
<xs:sequence> |
|
30 |
<xs:element name="Prenom" type="xs:string" maxOccurs="unbounded"/> |
|
31 |
</xs:sequence> |
|
32 |
</xs:complexType> |
|
33 |
</xs:element> |
|
34 |
<xs:element name="DateDeNaissance"> |
|
35 |
<xs:simpleType> |
|
36 |
<xs:restriction base="xs:string"> |
|
37 |
<xs:minLength value="1"/> |
|
38 |
</xs:restriction> |
|
39 |
</xs:simpleType> |
|
40 |
</xs:element> |
|
41 |
<xs:element name="LieuDeNaissance" minOccurs="1"> |
|
42 |
<xs:complexType> |
|
43 |
<xs:sequence> |
|
44 |
<xs:element name="Localite"> |
|
45 |
<xs:simpleType> |
|
46 |
<xs:restriction base="xs:string"> |
|
47 |
<xs:minLength value="1"/> |
|
48 |
</xs:restriction> |
|
49 |
</xs:simpleType> |
|
50 |
</xs:element> |
|
51 |
<xs:element name="DivisionTerritoriale" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> |
|
52 |
<xs:element name="CodePostal" type="xs:string" minOccurs="0"/> |
|
53 |
<xs:element name="Subdivision" type="xs:string" minOccurs="0"/> |
|
54 |
<xs:element name="Pays"> |
|
55 |
<xs:simpleType> |
|
56 |
<xs:restriction base="xs:string"> |
|
57 |
<xs:minLength value="1"/> |
|
58 |
</xs:restriction> |
|
59 |
</xs:simpleType> |
|
60 |
</xs:element> |
|
61 |
</xs:sequence> |
|
62 |
</xs:complexType> |
|
63 |
</xs:element> |
|
64 |
<xs:element name="Sexe"> |
|
65 |
<xs:simpleType> |
|
66 |
<xs:restriction base="xs:string"> |
|
67 |
<xs:minLength value="1"/> |
|
68 |
</xs:restriction> |
|
69 |
</xs:simpleType> |
|
70 |
</xs:element> |
|
71 |
<xs:element name="Nationalite"> |
|
72 |
<xs:simpleType> |
|
73 |
<xs:restriction base="xs:string"> |
|
74 |
<xs:minLength value="1"/> |
|
75 |
</xs:restriction> |
|
76 |
</xs:simpleType> |
|
77 |
</xs:element> |
|
78 |
<xs:element name="AdresseDeLElecteur" minOccurs="0"> |
|
79 |
<xs:complexType> |
|
80 |
<xs:sequence> |
|
81 |
<xs:element name="PointDeRemise" type="xs:string" minOccurs="0"/> |
|
82 |
<xs:element name="Complement" type="xs:string" minOccurs="0"/> |
|
83 |
<xs:element name="NumeroVoie" type="xs:string" minOccurs="0"/> |
|
84 |
<xs:element name="Extension" type="xs:string" minOccurs="0"/> |
|
85 |
<xs:element name="TypeVoie"> |
|
86 |
<xs:simpleType> |
|
87 |
<xs:restriction base="xs:string"> |
|
88 |
<xs:minLength value="1"/> |
|
89 |
</xs:restriction> |
|
90 |
</xs:simpleType> |
|
91 |
</xs:element> |
|
92 |
<xs:element name="NomVoie"> |
|
93 |
<xs:simpleType> |
|
94 |
<xs:restriction base="xs:string"> |
|
95 |
<xs:minLength value="1"/> |
|
96 |
</xs:restriction> |
|
97 |
</xs:simpleType> |
|
98 |
</xs:element> |
|
99 |
<xs:element name="LieuDit" type="xs:string" minOccurs="0"/> |
|
100 |
<xs:element name="CodePostal"> |
|
101 |
<xs:simpleType> |
|
102 |
<xs:restriction base="xs:string"> |
|
103 |
<xs:length value="5"/> |
|
104 |
</xs:restriction> |
|
105 |
</xs:simpleType> |
|
106 |
</xs:element> |
|
107 |
<xs:element name="Localite"> |
|
108 |
<xs:simpleType> |
|
109 |
<xs:restriction base="xs:string"> |
|
110 |
<xs:minLength value="1"/> |
|
111 |
</xs:restriction> |
|
112 |
</xs:simpleType> |
|
113 |
</xs:element> |
|
114 |
<xs:element name="DivisionTerritoriale" type="xs:string" minOccurs="0"/> |
|
115 |
</xs:sequence> |
|
116 |
</xs:complexType> |
|
117 |
</xs:element> |
|
118 |
<xs:element name="MethodeDeContact" minOccurs="0" maxOccurs="unbounded"> |
|
119 |
<xs:complexType> |
|
120 |
<xs:sequence> |
|
121 |
<xs:element name="CanalCode" type="xs:string" minOccurs="0"/> |
|
122 |
<xs:element name="URI" type="xs:string" minOccurs="0"/> |
|
123 |
</xs:sequence> |
|
124 |
</xs:complexType> |
|
125 |
</xs:element> |
|
126 |
</xs:sequence> |
|
127 |
</xs:complexType> |
|
128 |
</xs:element> |
|
129 |
<xs:element name="TypeDeListe" type="xs:string" minOccurs="0"/> |
|
130 |
<xs:element name="CommuneDInscription" minOccurs="1"> |
|
131 |
<xs:complexType> |
|
132 |
<xs:sequence> |
|
133 |
<xs:element name="Localite"> |
|
134 |
<xs:simpleType> |
|
135 |
<xs:restriction base="xs:string"> |
|
136 |
<xs:minLength value="1"/> |
|
137 |
</xs:restriction> |
|
138 |
</xs:simpleType> |
|
139 |
</xs:element> |
|
140 |
<xs:element name="DivisionTerritoriale"> |
|
141 |
<xs:simpleType> |
|
142 |
<xs:restriction base="xs:string"> |
|
143 |
<xs:minLength value="1"/> |
|
144 |
</xs:restriction> |
|
145 |
</xs:simpleType> |
|
146 |
</xs:element> |
|
147 |
<xs:element name="CodeInsee"> |
|
148 |
<xs:simpleType> |
|
149 |
<xs:restriction base="xs:string"> |
|
150 |
<xs:length value="5"/> |
|
151 |
</xs:restriction> |
|
152 |
</xs:simpleType> |
|
153 |
</xs:element> |
|
154 |
</xs:sequence> |
|
155 |
</xs:complexType> |
|
156 |
</xs:element> |
|
157 |
</xs:sequence> |
|
158 |
</xs:complexType> |
|
159 |
</xs:element> |
|
160 |
<xs:element name="DateDInscription" type="xs:string" minOccurs="0"> |
|
161 |
<xs:annotation> |
|
162 |
<xs:documentation>Date de réception de la demande en mairie</xs:documentation> |
|
163 |
</xs:annotation> |
|
164 |
</xs:element> |
|
165 |
<xs:element name="TypeDInscription" type="xs:string" minOccurs="0"> |
|
166 |
<xs:annotation> |
|
167 |
<xs:documentation>Décrit le type d'inscription de l'électeur. Ex: vol pour volontaire …</xs:documentation> |
|
168 |
</xs:annotation> |
|
169 |
</xs:element> |
|
170 |
<xs:element name="SituationElectoraleAnterieure" minOccurs="0"> |
|
171 |
<xs:annotation> |
|
172 |
<xs:documentation>Décrit la situation antérieure de l'électeur (prem: première inscription, cci: réinscription ...)</xs:documentation> |
|
173 |
</xs:annotation> |
|
174 |
<xs:complexType> |
|
175 |
<xs:sequence> |
|
176 |
<xs:element name="SituationDeLElecteur"> |
|
177 |
<xs:annotation> |
|
178 |
<xs:documentation>1ère inscription dans une commune française=prem, changement de commune d'inscription=cci. |
|
179 |
Les déménagements à l'intérieur d'une même commune ou d'un même arrondissement pour Paris, Lyon et Marseille ne doivent pas être transmis à l'Insee</xs:documentation> |
|
180 |
</xs:annotation> |
|
181 |
<xs:simpleType> |
|
182 |
<xs:restriction base="xs:string"> |
|
183 |
<xs:minLength value="1"/> |
|
184 |
</xs:restriction> |
|
185 |
</xs:simpleType> |
|
186 |
</xs:element> |
|
187 |
<xs:element name="ConsulatDePrecedenteInscription" minOccurs="0"> |
|
188 |
<xs:complexType> |
|
189 |
<xs:sequence> |
|
190 |
<xs:element name="AmbassadeOuPosteConsulaire" type="xs:string" minOccurs="0"/> |
|
191 |
<xs:element name="Pays" type="xs:string" minOccurs="0"/> |
|
192 |
</xs:sequence> |
|
193 |
</xs:complexType> |
|
194 |
</xs:element> |
|
195 |
<xs:element name="CommuneDePrecedenteInscription" minOccurs="0"> |
|
196 |
<xs:complexType> |
|
197 |
<xs:sequence> |
|
198 |
<xs:element name="Localite" type="xs:string" minOccurs="0"/> |
|
199 |
<xs:element name="DivisionTerritoriale" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> |
|
200 |
</xs:sequence> |
|
201 |
</xs:complexType> |
|
202 |
</xs:element> |
|
203 |
<xs:element name="PaysUeDerniereInscription" minOccurs="0"> |
|
204 |
<xs:complexType> |
|
205 |
<xs:sequence> |
|
206 |
<xs:element name="Localite" type="xs:string" minOccurs="0"/> |
|
207 |
<xs:element name="DivisionTerritoriale" type="xs:string" minOccurs="0"/> |
|
208 |
<xs:element name="Pays" type="xs:string" minOccurs="0"/> |
|
209 |
</xs:sequence> |
|
210 |
</xs:complexType> |
|
211 |
</xs:element> |
|
212 |
</xs:sequence> |
|
213 |
</xs:complexType> |
|
214 |
</xs:element> |
|
215 |
</xs:sequence> |
|
216 |
</xs:complexType> |
|
217 |
</xs:element> |
|
218 |
</xs:schema> |
tests/data/mdel/formdata.json | ||
---|---|---|
109 | 109 |
"Habitation_raw": "Oui", |
110 | 110 |
"Inscription": "Oui", |
111 | 111 |
"Inscription_raw": "Oui", |
112 |
"adresse_code_postal": "54 000",
|
|
113 |
"adresse_code_postal_raw": "54 000",
|
|
112 |
"adresse_code_postal": "54000", |
|
113 |
"adresse_code_postal_raw": "54000", |
|
114 | 114 |
"adresse_complement1": "Apt 4112", |
115 | 115 |
"adresse_complement2": "Batiment B", |
116 | 116 |
"adresse_localite": "Nancy", |
... | ... | |
138 | 138 |
"etranger_raw": "Non", |
139 | 139 |
"inscription_liste_type": "Liste Principale., Inscription pour les \u00e9lections municipales.", |
140 | 140 |
"inscription_liste_type_raw": "cm", |
141 |
"inscription_localite": "Paris", |
|
142 |
"inscription_code_insee": "75111", |
|
143 |
"inscription_division_territoriale": "ile de france", |
|
141 | 144 |
"justificatif_domicile_hebergeur": { |
142 | 145 |
"content": "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L0FzY2VudCA4MzIKICAgL0Rlc2NlbnQgLTMwMAogICAvQ2FwSGVpZ2h0IDgzMgogICAvU3RlbVYgODAKICAgL1N0ZW1IIDgwCiAgIC9Gb250RmlsZTIgMTMgMCBSCj4+CmVuZG9iago2IDAgb2JqCjw8IC9UeXBlIC9Gb250CiAgIC9TdWJ0eXBlIC9UcnVlVHlwZQogICAvQmFzZUZvbnQgL1VTU1FYTCtMaWJlcmF0aW9uTW9ubwogICAvRmlyc3RDaGFyIDMyCiAgIC9MYXN0Q2hhciAxMTYKICAgL0ZvbnREZXNjcmlwdG9yIDE3IDAgUgogICAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwogICAvV2lkdGhzIFsgNjAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2MDAgMCAwIDYwMCA2MDAgMCAwIDYwMCA2MDAgMCAwIDYwMCAwIDAgNjAwIDYwMCBdCiAgICAvVG9Vbmljb2RlIDE1IDAgUgo+PgplbmRvYmoKMSAwIG9iago8PCAvVHlwZSAvUGFnZXMKICAgL0tpZHMgWyA3IDAgUiBdCiAgIC9Db3VudCAxCj4+CmVuZG9iagoxOCAwIG9iago8PCAvQ3JlYXRvciAoY2Fpcm8gMS4xNC42IChodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcpKQogICAvUHJvZHVjZXIgKGNhaXJvIDEuMTQuNiAoaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnKSkKPj4KZW5kb2JqCjE5IDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9nCiAgIC9QYWdlcyAxIDAgUgo+PgplbmRvYmoKeHJlZgowIDIwCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAxNTgxMCAwMDAwMCBuIAowMDAwMDAwMzQ4IDAwMDAwIG4gCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDMyNiAwMDAwMCBuIAowMDAwMDA5OTkxIDAwMDAwIG4gCjAwMDAwMTU0MDQgMDAwMDAgbiAKMDAwMDAwMDQ3NiAwMDAwMCBuIAowMDAwMDAwNzA0IDAwMDAwIG4gCjAwMDAwMDkyMzYgMDAwMDAgbiAKMDAwMDAwOTI1OSAwMDAwMCBuIAowMDAwMDA5NjkyIDAwMDAwIG4gCjAwMDAwMDk3MTUgMDAwMDAgbiAKMDAwMDAxMDQ0MyAwMDAwMCBuIAowMDAwMDE0NzM2IDAwMDAwIG4gCjAwMDAwMTQ3NjAgMDAwMDAgbiAKMDAwMDAxNTEwNiAwMDAwMCBuIAowMDAwMDE1MTI5IDAwMDAwIG4gCjAwMDAwMTU4NzUgMDAwMDAgbiAKMDAwMDAxNjAwMyAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDIwCiAgIC9Sb290IDE5IDAgUgogICAvSW5mbyAxOCAwIFIKPj4Kc3RhcnR4cmVmCjE2MDU2CiUlRU9GCg==", |
143 | 146 |
"content_type": "application/pdf", |
tests/data/mdel/formdata_aec_deces.json | ||
---|---|---|
29 | 29 |
"demandeur_adresse_pays_raw": "FRA", |
30 | 30 |
"demandeur_adresse_ville": "Nancy", |
31 | 31 |
"demandeur_adresse_voie": "Rue de l'Aigle Blanc", |
32 |
"demandeur_adresse_etrangere": "37, Rue de l'Aigle Blanc, 54000 Nancy", |
|
33 | 32 |
"demandeur_civilite": "Madame", |
34 | 33 |
"demandeur_civilite_raw": "Madame", |
35 | 34 |
"demandeur_email": "chelsea@whatever.com", |
tests/data/mdel/formdata_aec_mariage.json | ||
---|---|---|
25 | 25 |
"aec_nature": "Extrait avec filiation", |
26 | 26 |
"aec_nature_raw": "EXTRAIT-AVEC-FILIATION", |
27 | 27 |
"date_acte": "2008-08-18", |
28 |
"demandeur_adresse_code_postal": "BC V5Y 1V4", |
|
29 |
"demandeur_adresse_num": "274", |
|
30 |
"demandeur_adresse_pays": "CANADA", |
|
31 |
"demandeur_adresse_pays_raw": "CAN", |
|
32 |
"demandeur_adresse_ville": "Vancouver", |
|
33 |
"demandeur_adresse_voie": "West 12th Avenue", |
|
28 |
"demandeur_adresse_code_postal": "94270", |
|
29 |
"demandeur_adresse_num": "22", |
|
30 |
"demandeur_adresse_pays": "FRANCE", |
|
31 |
"demandeur_adresse_pays_raw": "FRA", |
|
32 |
"demandeur_adresse_ville": "Kremlin Bicetre", |
|
33 |
"demandeur_adresse_code_postal": "94270", |
|
34 |
"demandeur_adresse_voie": "rue Danton", |
|
34 | 35 |
"demandeur_civilite": "Madame", |
35 | 36 |
"demandeur_civilite_raw": "Madame", |
36 | 37 |
"demandeur_email": "chelsea@whatever.com", |
tests/test_mdel.py | ||
---|---|---|
21 | 21 |
import json |
22 | 22 |
import base64 |
23 | 23 |
import copy |
24 | ||
24 | 25 |
from xml.etree import ElementTree as etree |
26 |
from lxml import etree as letree |
|
25 | 27 | |
26 | 28 |
import pytest |
27 | 29 | |
... | ... | |
31 | 33 | |
32 | 34 |
import utils |
33 | 35 | |
36 |
AEC_XSD = 'ActeEtatCivil-V1.A.xsd' |
|
37 |
ILE_XSD = 'ILE_v1.1.xsd' |
|
38 | ||
34 | 39 | |
35 | 40 |
def get_mdel_base_dir(): |
36 | 41 |
return os.path.join(os.path.dirname(__file__), 'data', 'mdel') |
... | ... | |
42 | 47 |
return fd.read() |
43 | 48 | |
44 | 49 | |
50 |
def validate_schema(doc, xsd): |
|
51 |
xsd_path = os.path.join(get_mdel_base_dir(), xsd) |
|
52 |
xsd = letree.parse(xsd_path).getroot() |
|
53 |
schema = letree.XMLSchema(xsd) |
|
54 |
parser = letree.XMLParser(schema=schema) |
|
55 |
letree.parse(doc, parser=parser) # Will raise an exception if schema not respected |
|
56 | ||
57 | ||
58 | ||
45 | 59 |
@pytest.fixture |
46 | 60 |
def setup(db): |
47 | 61 |
return utils.setup_access_rights(MDEL.objects.create(slug='test')) |
... | ... | |
123 | 137 |
assert resp.json['data']['demand_id'] == '15-4-AEC-LA' |
124 | 138 | |
125 | 139 |
doc = os.path.join(get_resource_base_dir(), 'test', 'inputs', '15-4-AEC-LA--0', '15-4-AEC-LA-doc-.xml') |
140 |
validate_schema(doc, AEC_XSD) |
|
141 | ||
126 | 142 |
root = etree.parse(doc).getroot() |
127 | 143 | |
128 | 144 |
assert root.tag == 'EnveloppeMetierType' |
... | ... | |
169 | 185 |
assert resp.json['data']['demand_id'] == '16-1-AEC-LA' |
170 | 186 | |
171 | 187 |
doc = os.path.join(get_resource_base_dir(), 'test', 'inputs', '16-1-AEC-LA--0', '16-1-AEC-LA-doc-.xml') |
188 |
validate_schema(doc, AEC_XSD) |
|
189 | ||
172 | 190 |
root = etree.parse(doc).getroot() |
173 | 191 | |
174 | 192 |
assert root.tag == 'EnveloppeMetierType' |
... | ... | |
191 | 209 |
assert root.find('DemandeActe/Demandeur/Telephone').text == '0122334455' |
192 | 210 |
assert root.find('DemandeActe/Demandeur/QualiteDemandeur/Code').text == 'Autre' |
193 | 211 |
assert root.find('DemandeActe/Demandeur/QualiteDemandeur/Libelle').text == 'Sa soeur' |
194 |
assert root.find('DemandeActe/Demandeur/AdresseEtrangere/Adresse').text == '274 West 12th Avenue, Vancouver, BC V5Y 1V4' |
|
195 |
assert root.find('DemandeActe/Demandeur/AdresseEtrangere/Pays').text == 'CAN' |
|
212 |
assert root.find('DemandeActe/Demandeur/AdresseFrancaise/Voie').text == '22 rue Danton' |
|
213 |
assert root.find('DemandeActe/Demandeur/AdresseFrancaise/CodePostal').text == '94270' |
|
214 |
assert root.find('DemandeActe/Demandeur/AdresseFrancaise/Ville').text == 'Kremlin Bicetre' |
|
196 | 215 | |
197 | 216 |
# Concerned |
198 | 217 |
assert root.find('DemandeActe/Titulaire/Civilite').text == 'MONSIEUR' |
... | ... | |
220 | 239 |
assert resp.json['data']['demand_id'] == '17-1-AEC-LA' |
221 | 240 | |
222 | 241 |
doc = os.path.join(get_resource_base_dir(), 'test', 'inputs', '17-1-AEC-LA--0', '17-1-AEC-LA-doc-.xml') |
242 |
validate_schema(doc, AEC_XSD) |
|
243 | ||
223 | 244 |
root = etree.parse(doc).getroot() |
224 | 245 | |
225 | 246 |
assert root.tag == 'EnveloppeMetierType' |
... | ... | |
273 | 294 | |
274 | 295 |
base_doc = os.path.join(get_resource_base_dir(), 'test', 'inputs', '1-14-ILE-LA--0') |
275 | 296 |
doc = os.path.join(base_doc, '1-14-ILE-LA-doc-.xml') |
297 | ||
298 |
validate_schema(doc, ILE_XSD) |
|
299 | ||
276 | 300 |
root = etree.parse(doc).getroot() |
277 | 301 | |
278 | 302 |
assert root.tag == 'AvisDInscription' |
279 | 303 | |
280 | 304 |
assert root.find('Inscription/Electeur/AdresseDeLElecteur/Localite').text == 'Nancy' |
281 |
assert root.find('Inscription/Electeur/AdresseDeLElecteur/CodePostal').text == '54 000'
|
|
305 |
assert root.find('Inscription/Electeur/AdresseDeLElecteur/CodePostal').text == '54000' |
|
282 | 306 |
assert root.find('Inscription/Electeur/AdresseDeLElecteur/TypeVoie').text == 'RUE' |
283 | 307 |
assert root.find('Inscription/Electeur/AdresseDeLElecteur/NomVoie').text == 'RUE DU CHEVAL BLANC' |
284 | 308 |
assert root.find('Inscription/Electeur/AdresseDeLElecteur/NumeroVoie').text == '37' |
285 |
- |