21
21
from arho_feature_template .exceptions import FeatureNotFoundError , LayerEditableError , LayerNotFoundError
22
22
from arho_feature_template .project .layers import AbstractLayer
23
23
from arho_feature_template .project .layers .code_layers import PlanRegulationTypeLayer
24
+ from arho_feature_template .utils .misc_utils import LANGUAGE
24
25
25
26
logger = logging .getLogger (__name__ )
26
27
@@ -75,8 +76,8 @@ def feature_from_model(cls, model: Plan) -> QgsFeature:
75
76
message = "Plan must have a geometry to be added to the layer"
76
77
raise ValueError (message )
77
78
78
- feature ["name" ] = {"fin" : model .name }
79
- feature ["description" ] = {"fin" : model .description }
79
+ feature ["name" ] = {LANGUAGE : model .name }
80
+ feature ["description" ] = {LANGUAGE : model .description }
80
81
feature ["permanent_plan_identifier" ] = model .permanent_plan_identifier
81
82
feature ["record_number" ] = model .record_number
82
83
feature ["producers_plan_identifier" ] = model .producers_plan_identifier
@@ -95,8 +96,8 @@ def model_from_feature(cls, feature: QgsFeature) -> Plan:
95
96
]
96
97
return Plan (
97
98
geom = feature .geometry (),
98
- name = feature ["name" ]["fin" ],
99
- description = feature ["description" ]["fin" ],
99
+ name = feature ["name" ][LANGUAGE ],
100
+ description = feature ["description" ][LANGUAGE ],
100
101
permanent_plan_identifier = feature ["permanent_plan_identifier" ],
101
102
record_number = feature ["record_number" ],
102
103
producers_plan_identifier = feature ["producers_plan_identifier" ],
@@ -112,6 +113,11 @@ def model_from_feature(cls, feature: QgsFeature) -> Plan:
112
113
id_ = feature ["id" ],
113
114
)
114
115
116
+ @classmethod
117
+ def get_plan_name (cls , plan_id : str ) -> str :
118
+ attribute_value = cls .get_attribute_value_by_another_attribute_value ("name" , "id" , plan_id )
119
+ return attribute_value [LANGUAGE ] if attribute_value else "Nimetön"
120
+
115
121
116
122
class PlanFeatureLayer (AbstractPlanLayer ):
117
123
@classmethod
@@ -122,9 +128,9 @@ def feature_from_model(cls, model: PlanFeature, plan_id: str | None = None) -> Q
122
128
123
129
feature = cls .initialize_feature_from_model (model )
124
130
feature .setGeometry (model .geom )
125
- feature ["name" ] = {"fin" : model .name if model .name else "" }
131
+ feature ["name" ] = {LANGUAGE : model .name if model .name else "" }
126
132
feature ["type_of_underground_id" ] = model .type_of_underground_id
127
- feature ["description" ] = {"fin" : model .description if model .description else "" }
133
+ feature ["description" ] = {LANGUAGE : model .description if model .description else "" }
128
134
feature ["plan_id" ] = (
129
135
plan_id
130
136
if plan_id
@@ -143,8 +149,8 @@ def model_from_feature(cls, feature: QgsFeature) -> PlanFeature:
143
149
geom = feature .geometry (),
144
150
type_of_underground_id = feature ["type_of_underground_id" ],
145
151
layer_name = cls .get_from_project ().name (),
146
- name = feature ["name" ]["fin" ],
147
- description = feature ["description" ]["fin" ],
152
+ name = feature ["name" ][LANGUAGE ],
153
+ description = feature ["description" ][LANGUAGE ],
148
154
regulation_groups = [
149
155
RegulationGroupLayer .model_from_feature (feat ) for feat in regulation_group_features if feat is not None
150
156
],
@@ -187,7 +193,7 @@ def feature_from_model(cls, model: RegulationGroup, plan_id: str | None = None)
187
193
feature = cls .initialize_feature_from_model (model )
188
194
189
195
feature ["short_name" ] = model .short_name if model .short_name else None
190
- feature ["name" ] = {"fin" : model .name }
196
+ feature ["name" ] = {LANGUAGE : model .name }
191
197
feature ["type_of_plan_regulation_group_id" ] = model .type_code_id
192
198
feature ["plan_id" ] = (
193
199
plan_id
@@ -201,7 +207,7 @@ def feature_from_model(cls, model: RegulationGroup, plan_id: str | None = None)
201
207
def model_from_feature (cls , feature : QgsFeature ) -> RegulationGroup :
202
208
return RegulationGroup (
203
209
type_code_id = feature ["type_of_plan_regulation_group_id" ],
204
- name = feature ["name" ]["fin" ],
210
+ name = feature ["name" ][LANGUAGE ],
205
211
short_name = feature ["short_name" ],
206
212
color_code = None ,
207
213
group_number = None ,
@@ -309,9 +315,9 @@ def feature_from_model(cls, model: Regulation) -> QgsFeature:
309
315
feature ["plan_regulation_group_id" ] = model .regulation_group_id_
310
316
feature ["type_of_plan_regulation_id" ] = model .config .id
311
317
feature ["unit" ] = model .config .unit
312
- feature ["text_value" ] = {"fin" : model .value if isinstance (model .value , str ) else "" }
318
+ feature ["text_value" ] = {LANGUAGE : model .value if isinstance (model .value , str ) else "" }
313
319
feature ["numeric_value" ] = model .value if isinstance (model .value , Number ) else NULL
314
- feature ["name" ] = {"fin" : model .topic_tag if model .topic_tag else "" }
320
+ feature ["name" ] = {LANGUAGE : model .topic_tag if model .topic_tag else "" }
315
321
feature ["id" ] = model .id_ if model .id_ else feature ["id" ]
316
322
# feature["plan_theme_id"]
317
323
# feature["type_of_verbal_plan_regulation_id"]
@@ -331,7 +337,7 @@ def model_from_feature(cls, feature: QgsFeature) -> Regulation:
331
337
return Regulation (
332
338
config = config ,
333
339
# Assuming only either text_value or numeric_value is defined
334
- value = feature ["text_value" ]["fin" ] if feature ["text_value" ]["fin" ] else feature ["numeric_value" ],
340
+ value = feature ["text_value" ][LANGUAGE ] if feature ["text_value" ][LANGUAGE ] else feature ["numeric_value" ],
335
341
additional_information = None ,
336
342
regulation_number = None ,
337
343
files = [],
@@ -365,8 +371,8 @@ class PlanPropositionLayer(AbstractPlanLayer):
365
371
def feature_from_model (cls , model : Proposition ) -> QgsFeature :
366
372
feature = cls .initialize_feature_from_model (model )
367
373
368
- feature ["name" ] = {"fin" : model .name }
369
- feature ["text_value" ] = {"fin" : model .value }
374
+ feature ["name" ] = {LANGUAGE : model .name }
375
+ feature ["text_value" ] = {LANGUAGE : model .value }
370
376
feature ["plan_regulation_group_id" ] = model .regulation_group_id_
371
377
feature ["ordering" ] = model .proposition_number
372
378
feature ["plan_theme_id" ] = model .theme_id
@@ -377,17 +383,17 @@ def feature_from_model(cls, model: Proposition) -> QgsFeature:
377
383
@classmethod
378
384
def model_from_feature (cls , feature : QgsFeature ) -> Proposition :
379
385
return Proposition (
380
- name = feature ["name" ]["fin" ],
381
- value = feature ["text_value" ]["fin" ],
386
+ name = feature ["name" ][LANGUAGE ],
387
+ value = feature ["text_value" ][LANGUAGE ],
382
388
regulation_group_id_ = feature ["plan_regulation_group_id" ],
383
389
proposition_number = feature ["ordering" ],
384
390
theme_id = feature ["plan_theme_id" ],
385
391
id_ = feature ["id" ],
386
392
)
387
393
388
394
@classmethod
389
- def propositions_with_group_id (cls , group_id : str ) -> list [QgsFeature ]:
390
- return [ feat for feat in cls .get_features () if feat [ "plan_regulation_group_id" ] == group_id ]
395
+ def propositions_with_group_id (cls , group_id : str ) -> Generator [QgsFeature ]:
396
+ return cls .get_features_by_attribute_value ( "plan_regulation_group_id" , group_id )
391
397
392
398
393
399
class DocumentLayer (AbstractPlanLayer ):
0 commit comments