@@ -52,7 +52,9 @@ def test_translated_db_objects_gpkg(self):
5252 importer .configuration = iliimporter_config (importer .tool )
5353 importer .configuration .ilimodels = "PlansDAffectation_V1_2"
5454 importer .configuration .dbfile = os .path .join (
55- self .basetestpath , "tmp_translated_gpkg.gpkg"
55+ self .basetestpath , "tmp_translated_{:%Y%m%d%H%M%S%f}.gpkg" .format (
56+ datetime .datetime .now ()
57+ ),
5658 )
5759 importer .configuration .inheritance = "smart2"
5860 importer .configuration .create_basket_col = True
@@ -231,13 +233,15 @@ def test_translated_db_objects_pg(self):
231233 == "Geometrie_Document_(Geometrie)_AffectationPrimaire_SurfaceDeZones_(t_id)"
232234 )
233235
234- def test_available_langs_gpkg (self ):
236+ def test_translated_available_langs_gpkg (self ):
235237 importer = iliimporter .Importer ()
236238 importer .tool = DbIliMode .ili2gpkg
237239 importer .configuration = iliimporter_config (importer .tool )
238240 importer .configuration .ilimodels = "PlansDAffectation_V1_2"
239241 importer .configuration .dbfile = os .path .join (
240- self .basetestpath , "tmp_translated_gpkg.gpkg"
242+ self .basetestpath , "tmp_translated_{:%Y%m%d%H%M%S%f}.gpkg" .format (
243+ datetime .datetime .now ()
244+ ),
241245 )
242246 importer .configuration .inheritance = "smart2"
243247 importer .configuration .create_basket_col = True
@@ -269,7 +273,7 @@ def test_available_langs_gpkg(self):
269273 # ... as well as ignoring the translated models and alowing it again and the english one
270274 assert {'de' ,'en' } == set (db_connector .get_available_languages (["PlansDAffectation_V1_2" ]))
271275
272- def test_translated_db_objects_pg (self ):
276+ def test_translated_available_langs_pg (self ):
273277 importer = iliimporter .Importer ()
274278 importer .tool = DbIliMode .ili2pg
275279 importer .configuration = iliimporter_config (importer .tool )
@@ -306,7 +310,200 @@ def test_translated_db_objects_pg(self):
306310
307311 # ... as well as ignoring the translated models and alowing it again and the english one
308312 assert {'de' ,'en' } == set (db_connector .get_available_languages (["PlansDAffectation_V1_2" ]))
309-
313+
314+ def test_translated_namelang_gpkg (self ):
315+ # same as translated_db_objects but this time is the schema in French (namelang) and the preferred language German.
316+ importer = iliimporter .Importer ()
317+ importer .tool = DbIliMode .ili2gpkg
318+ importer .configuration = iliimporter_config (importer .tool )
319+ importer .configuration .ilimodels = "PlansDAffectation_V1_2"
320+ importer .configuration .dbfile = os .path .join (
321+ self .basetestpath , "tmp_translated_{:%Y%m%d%H%M%S%f}.gpkg" .format (
322+ datetime .datetime .now ()
323+ )
324+ )
325+ importer .configuration .inheritance = "smart2"
326+ importer .configuration .create_basket_col = True
327+ importer .configuration .name_lang = 'fr'
328+ importer .stdout .connect (self .print_info )
329+ importer .stderr .connect (self .print_error )
330+ assert importer .run () == iliimporter .Importer .SUCCESS
331+
332+ config_manager = GpkgCommandConfigManager (importer .configuration )
333+ uri = config_manager .get_uri ()
334+
335+ generator = Generator (
336+ DbIliMode .ili2gpkg ,
337+ uri ,
338+ importer .configuration .inheritance ,
339+ consider_basket_handling = True ,
340+ preferred_language = "de" ,
341+ )
342+
343+ available_layers = generator .layers ()
344+ relations , _ = generator .relations (available_layers )
345+ legend = generator .legend (available_layers )
346+
347+ project = Project ()
348+ project .layers = available_layers
349+ project .relations = relations
350+ project .legend = legend
351+ project .post_generate ()
352+
353+ qgis_project = QgsProject .instance ()
354+ project .create (None , qgis_project )
355+
356+ count = 0
357+ fr_layer = None
358+ for layer in available_layers :
359+ if layer .name == "affectationprimaire_surfacedezones" :
360+ assert layer .alias == "Grundnutzung_Zonenflaeche"
361+ de_layer = layer .layer
362+ count += 1
363+ fields = de_layer .fields ()
364+ field_idx = fields .lookupField ("publiedepuis" )
365+ assert field_idx != - 1
366+ field = fields .field (field_idx )
367+ assert field .name () == "publiedepuis"
368+ assert field .alias () == "publiziertAb"
369+
370+ edit_form_config = de_layer .editFormConfig ()
371+ tabs = edit_form_config .tabs ()
372+ tab_list = [tab .name () for tab in tabs ]
373+ expected_tab_list = [
374+ "General" ,
375+ "Dokument" ,
376+ "Objektbezogene_Festlegung" ,
377+ "Ueberlagernde_Festlegung" ,
378+ "Linienbezogene_Festlegung" ,
379+ ]
380+ assert len (tab_list ) == len (expected_tab_list )
381+ assert set (tab_list ) == set (expected_tab_list )
382+
383+ # check domain table and translated domains
384+ if layer .name == "statutjuridique" :
385+ count += 1
386+ assert layer .alias == "RechtsStatus"
387+ assert layer .layer .displayExpression () == "\n " .join (
388+ [
389+ "CASE" ,
390+ "WHEN iliCode = 'AenderungOhneVorwirkung' THEN 'AenderungOhneVorwirkung'" ,
391+ "WHEN iliCode = 'inKraft' THEN 'inKraft'" ,
392+ "WHEN iliCode = 'AenderungMitVorwirkung' THEN 'AenderungMitVorwirkung'" ,
393+ "END" ,
394+ ]
395+ )
396+
397+ # check if the layers have been considered
398+ assert count == 2
399+ assert de_layer
400+
401+ # Check translated relation
402+ rels = qgis_project .relationManager ().referencedRelations (de_layer )
403+ assert len (rels ) == 1
404+ assert (
405+ rels [0 ].id ()
406+ == "geometrie_document_geometrie_affectationprimaire_surfacedezones_affectationprimaire_surfacedezones_T_Id"
407+ )
408+ assert (
409+ rels [0 ].name ()
410+ == "Geometrie_Dokument_(Geometrie)_Grundnutzung_Zonenflaeche_(T_Id)"
411+ )
412+
413+ def test_translated_namelang_pg (self ):
414+ # same as translated_db_objects but this time is the schema in French (namelang) and the preferred language German.
415+ importer = iliimporter .Importer ()
416+ importer .tool = DbIliMode .ili2pg
417+ importer .configuration = iliimporter_config (importer .tool )
418+ importer .configuration .ilimodels = "PlansDAffectation_V1_2"
419+ importer .configuration .dbschema = "tid_{:%Y%m%d%H%M%S%f}" .format (
420+ datetime .datetime .now ()
421+ )
422+ importer .configuration .inheritance = "smart2"
423+ importer .configuration .create_basket_col = True
424+ importer .configuration .name_lang = 'fr'
425+ importer .stdout .connect (self .print_info )
426+ importer .stderr .connect (self .print_error )
427+ assert importer .run () == iliimporter .Importer .SUCCESS
428+
429+ generator = Generator (
430+ DbIliMode .ili2pg ,
431+ get_pg_connection_string (),
432+ importer .configuration .inheritance ,
433+ importer .configuration .dbschema ,
434+ consider_basket_handling = True ,
435+ preferred_language = "de" ,
436+ )
437+ available_layers = generator .layers ()
438+ relations , _ = generator .relations (available_layers )
439+ legend = generator .legend (available_layers )
440+
441+ project = Project ()
442+ project .layers = available_layers
443+ project .relations = relations
444+ project .legend = legend
445+ project .post_generate ()
446+
447+ qgis_project = QgsProject .instance ()
448+ project .create (None , qgis_project )
449+
450+ count = 0
451+ fr_layer = None
452+ for layer in available_layers :
453+ if layer .name == "affectationprimaire_surfacedezones" :
454+ assert layer .alias == "Grundnutzung_Zonenflaeche"
455+ de_layer = layer .layer
456+ count += 1
457+ fields = de_layer .fields ()
458+ field_idx = fields .lookupField ("publiedepuis" )
459+ assert field_idx != - 1
460+ field = fields .field (field_idx )
461+ assert field .name () == "publiedepuis"
462+ assert field .alias () == "publiziertAb"
463+
464+ edit_form_config = de_layer .editFormConfig ()
465+ tabs = edit_form_config .tabs ()
466+ tab_list = [tab .name () for tab in tabs ]
467+ expected_tab_list = [
468+ "General" ,
469+ "Dokument" ,
470+ "Objektbezogene_Festlegung" ,
471+ "Ueberlagernde_Festlegung" ,
472+ "Linienbezogene_Festlegung" ,
473+ ]
474+ assert len (tab_list ) == len (expected_tab_list )
475+ assert set (tab_list ) == set (expected_tab_list )
476+
477+ # check domain table and translated domains
478+ if layer .name == "statutjuridique" :
479+ count += 1
480+ assert layer .alias == "RechtsStatus"
481+ assert layer .layer .displayExpression () == "\n " .join (
482+ [
483+ "CASE" ,
484+ "WHEN iliCode = 'AenderungMitVorwirkung' THEN 'AenderungMitVorwirkung'" ,
485+ "WHEN iliCode = 'AenderungOhneVorwirkung' THEN 'AenderungOhneVorwirkung'" ,
486+ "WHEN iliCode = 'inKraft' THEN 'inKraft'" ,
487+ "END" ,
488+ ]
489+ )
490+
491+ # check if the layers have been considered
492+ assert count == 2
493+ assert de_layer
494+
495+ # Check translated relation
496+ rels = qgis_project .relationManager ().referencedRelations (de_layer )
497+ assert len (rels ) == 1
498+ assert (
499+ rels [0 ].id ()
500+ == "geometrie_document_geomtr_ffcttnrmr_srfcdznes_fkey"
501+ )
502+ assert (
503+ rels [0 ].name ()
504+ == "Geometrie_Dokument_(Geometrie)_Grundnutzung_Zonenflaeche_(t_id)"
505+ )
506+
310507 def print_info (self , text ):
311508 logging .info (text )
312509
0 commit comments