12
12
from arho_feature_template .exceptions import ConfigSyntaxError
13
13
from arho_feature_template .project .layers .code_layers import AdditionalInformationTypeLayer , UndergroundTypeLayer
14
14
from arho_feature_template .qgis_plugin_tools .tools .resources import resources_path
15
- from arho_feature_template .utils .misc_utils import LANGUAGE , get_layer_by_name , iface
15
+ from arho_feature_template .utils .misc_utils import deserialize_localized_text , get_layer_by_name , iface
16
16
17
17
if TYPE_CHECKING :
18
18
from datetime import datetime
19
19
20
20
from qgis .core import QgsFeature , QgsGeometry
21
+ from qgis .PyQt .QtCore import QDate
21
22
22
23
23
24
logger = logging .getLogger (__name__ )
@@ -96,6 +97,7 @@ def from_config_file(
96
97
for group_name in feature_data .get ("regulation_groups" , [])
97
98
if (group := cls .find_matching_group_config (group_name , regulation_group_libraries ))
98
99
],
100
+ lifecycles = [],
99
101
plan_id = None ,
100
102
id_ = None ,
101
103
)
@@ -144,6 +146,15 @@ def from_config_file(cls, config_fp: Path) -> RegulationGroupLibrary:
144
146
],
145
147
)
146
148
149
+ def get_short_names (self ) -> set [str ]:
150
+ """Returns set of non-empty short names (letter codes) of regulation groups part of the library."""
151
+ return {
152
+ regulation_group .short_name
153
+ for category in self .regulation_group_categories
154
+ for regulation_group in category .regulation_groups
155
+ if regulation_group .short_name
156
+ }
157
+
147
158
148
159
@dataclass
149
160
class RegulationLibrary :
@@ -246,8 +257,8 @@ class RegulationConfig:
246
257
247
258
id : str
248
259
regulation_code : str
249
- name : str
250
- description : str
260
+ name : str | None
261
+ description : str | None
251
262
status : str
252
263
level : int
253
264
parent_id : str | None
@@ -268,8 +279,8 @@ def from_feature(cls, feature: QgsFeature) -> RegulationConfig:
268
279
return cls (
269
280
id = feature ["id" ],
270
281
regulation_code = feature ["value" ],
271
- name = feature [ "name" ]. get ( LANGUAGE ) if feature ["name" ] else None ,
272
- description = feature [ "description" ]. get ( LANGUAGE ) if feature ["description" ] else None ,
282
+ name = deserialize_localized_text ( feature ["name" ]) ,
283
+ description = deserialize_localized_text ( feature ["description" ]) ,
273
284
status = feature ["status" ],
274
285
level = feature ["level" ],
275
286
parent_id = feature ["parent_id" ],
@@ -287,8 +298,8 @@ class AdditionalInformationConfig:
287
298
# From layer
288
299
id : str
289
300
additional_information_type : str
290
- name : str
291
- description : str
301
+ name : str | None
302
+ description : str | None
292
303
status : str
293
304
level : int
294
305
parent_id : str | None
@@ -344,8 +355,8 @@ def initialize(cls, config_fp: Path = ADDITIONAL_INFORMATION_CONFIG_PATH) -> Add
344
355
ai_config = AdditionalInformationConfig (
345
356
id = feature ["id" ],
346
357
additional_information_type = ai_code ,
347
- name = feature [ "name" ]. get ( LANGUAGE ) if feature ["name" ] else None ,
348
- description = feature [ "description" ]. get ( LANGUAGE ) if feature ["description" ] else None ,
358
+ name = deserialize_localized_text ( feature ["name" ]) ,
359
+ description = deserialize_localized_text ( feature ["description" ]) ,
349
360
status = feature ["status" ],
350
361
level = feature ["level" ],
351
362
parent_id = feature ["parent_id" ],
@@ -513,6 +524,26 @@ def from_config_data(cls, data: dict) -> RegulationGroup:
513
524
id_ = None ,
514
525
)
515
526
527
+ def __str__ (self ):
528
+ return " - " .join (part for part in (self .short_name , self .name ) if part )
529
+
530
+
531
+ @dataclass
532
+ class LifeCycle :
533
+ status_id : str | None = None
534
+ id_ : str | None = None
535
+ plan_id : str | None = None
536
+ plan_regulation_id : str | None = None
537
+ plan_proposition_id : str | None = None
538
+ starting_at : QDate | None = None
539
+ ending_at : QDate | None = None
540
+ # might not need the following
541
+ land_use_are_id : str | None = None
542
+ other_area_id : str | None = None
543
+ line_id : str | None = None
544
+ land_use_point_id : str | None = None
545
+ other_point_id : str | None = None
546
+
516
547
517
548
@dataclass
518
549
class PlanFeature :
@@ -522,6 +553,7 @@ class PlanFeature:
522
553
name : str | None = None
523
554
description : str | None = None
524
555
regulation_groups : list [RegulationGroup ] = field (default_factory = list )
556
+ lifecycles : list [LifeCycle ] = field (default_factory = list )
525
557
plan_id : int | None = None
526
558
id_ : str | None = None
527
559
@@ -537,6 +569,7 @@ class Plan:
537
569
description : str | None = None
538
570
plan_type_id : str | None = None
539
571
lifecycle_status_id : str | None = None
572
+ lifecycles : list [LifeCycle ] = field (default_factory = list )
540
573
record_number : str | None = None
541
574
matter_management_identifier : str | None = None
542
575
permanent_plan_identifier : str | None = None
0 commit comments