Skip to content

Commit 174bfb6

Browse files
committed
stop saving/deleting features only if needed
1 parent 0cf655d commit 174bfb6

File tree

1 file changed

+22
-38
lines changed

1 file changed

+22
-38
lines changed

arho_feature_template/core/plan_manager.py

+22-38
Original file line numberDiff line numberDiff line change
@@ -162,14 +162,12 @@ def update_active_plan_regulation_group_library(self):
162162
def create_new_regulation_group(self):
163163
new_group = self._open_regulation_group_form(RegulationGroup())
164164
if new_group:
165-
iface.messageBar().pushSuccess(None, f"Kaavamääräysryhmä {str(new_group)} luotiin onnistuneesti.")
165+
iface.messageBar().pushSuccess(None, f"Kaavamääräysryhmä {new_group!s} luotiin onnistuneesti.")
166166

167167
def edit_regulation_group(self, regulation_group: RegulationGroup):
168168
edited_group = self._open_regulation_group_form(regulation_group)
169169
if edited_group:
170-
iface.messageBar().pushSuccess(
171-
None, f"Kaavamääräysryhmää {str(edited_group)} muokattiin onnistuneesti."
172-
)
170+
iface.messageBar().pushSuccess(None, f"Kaavamääräysryhmää {edited_group!s} muokattiin onnistuneesti.")
173171

174172
def _open_regulation_group_form(self, regulation_group: RegulationGroup):
175173
regulation_group_form = PlanRegulationGroupForm(regulation_group, self.active_plan_regulation_group_library)
@@ -187,7 +185,7 @@ def _open_regulation_group_form(self, regulation_group: RegulationGroup):
187185

188186
def delete_regulation_group(self, group: RegulationGroup):
189187
if delete_regulation_group(group):
190-
iface.messageBar().pushSuccess(None, f"Kaavamääräysryhmä {str(group)} poistettiin onnistuneesti.")
188+
iface.messageBar().pushSuccess(None, f"Kaavamääräysryhmä {group!s} poistettiin onnistuneesti.")
191189
self.update_active_plan_regulation_group_library()
192190

193191
def toggle_identify_plan_features(self, activate: bool): # noqa: FBT001
@@ -338,7 +336,7 @@ def _plan_feature_geom_digitized(self, feature: QgsFeature):
338336
plan_feature, title, self.regulation_group_libraries, self.active_plan_regulation_group_library
339337
)
340338
if attribute_form.exec_() and save_plan_feature(attribute_form.model):
341-
iface.messageBar().pushSuccess("", f"Kaavakohde {str(attribute_form.model)} luotiin onnistuneesti.")
339+
iface.messageBar().pushSuccess("", f"Kaavakohde {attribute_form.model!s} luotiin onnistuneesti.")
342340
self.update_active_plan_regulation_group_library()
343341

344342
def edit_plan_feature(self, feature: QgsFeature, layer_name: str):
@@ -350,9 +348,7 @@ def edit_plan_feature(self, feature: QgsFeature, layer_name: str):
350348
plan_feature, title, self.regulation_group_libraries, self.active_plan_regulation_group_library
351349
)
352350
if attribute_form.exec_() and save_plan_feature(attribute_form.model):
353-
iface.messageBar().pushSuccess(
354-
"", f"Kaavakohdetta {str(attribute_form.model)} muokattiin onnistuneesti."
355-
)
351+
iface.messageBar().pushSuccess("", f"Kaavakohdetta {attribute_form.model!s} muokattiin onnistuneesti.")
356352
self.update_active_plan_regulation_group_library()
357353

358354
def set_active_plan(self, plan_id: str | None):
@@ -561,29 +557,25 @@ def save_plan(plan: Plan) -> QgsFeature | None:
561557
"Kaavamääräysryhmän assosiaation poisto",
562558
):
563559
iface.messageBar().pushCritical("", "Kaavamääräysryhmän assosiaation poistaminen epäonnistui.")
564-
return None
565560

566561
# Check for documents to be deleted
567562
doc_layer = DocumentLayer.get_from_project()
568563
for doc_feature in DocumentLayer.get_documents_to_delete(plan.documents, plan.id_):
569564
if not _delete_feature(doc_feature, doc_layer, "Asiakirjan poisto"):
570565
iface.messageBar().pushCritical("", "Asiakirjan poistaminen epäonnistui.")
571-
return None
572566

573567
# Save general regulations
574568
if plan.general_regulations:
575569
for regulation_group in plan.general_regulations:
576570
regulation_group_feature = save_regulation_group(regulation_group, plan_id)
577571
if regulation_group_feature is None:
578-
return None
579-
if not save_regulation_group_association(regulation_group_feature["id"], PlanLayer.name, plan_id):
580-
return None
572+
continue # Skip association saving if saving regulation group failed
573+
save_regulation_group_association(regulation_group_feature["id"], PlanLayer.name, plan_id)
581574

582575
# Save documents
583576
for document in plan.documents:
584577
document.plan_id = plan_id
585-
if save_document(document) is None:
586-
return None
578+
save_document(document)
587579

588580
# Save lifecycles
589581
for lifecycle in plan.lifecycles:
@@ -627,15 +619,13 @@ def save_plan_feature(plan_model: PlanFeature, plan_id: str | None = None) -> Qg
627619
"Kaavamääräysryhmän assosiaation poisto",
628620
):
629621
iface.messageBar().pushCritical("", "Kaavamääräysryhmän assosiaation poistaminen epäonnistui.")
630-
return None
631622

632623
# Save regulation groups
633624
for group in plan_model.regulation_groups:
634625
regulation_group_feature = save_regulation_group(group)
635626
if regulation_group_feature is None:
636-
return None
637-
if not save_regulation_group_association(regulation_group_feature["id"], layer_name, plan_feature["id"]):
638-
return None
627+
continue # Skip association saving if saving regulation group failed
628+
save_regulation_group_association(regulation_group_feature["id"], layer_name, plan_feature["id"])
639629

640630
return plan_feature
641631

@@ -661,7 +651,6 @@ def save_regulation_group(regulation_group: RegulationGroup, plan_id: str | None
661651
):
662652
if not _delete_feature(reg_feature, regulation_layer, "Kaavamääräyksen poisto"):
663653
iface.messageBar().pushCritical("", "Kaavamääräyksen poistaminen epäonnistui.")
664-
return None
665654

666655
# Check for propositions to be deleted
667656
proposition_layer = PlanPropositionLayer.get_from_project()
@@ -670,21 +659,18 @@ def save_regulation_group(regulation_group: RegulationGroup, plan_id: str | None
670659
):
671660
if not _delete_feature(prop_feature, proposition_layer, "Kaavasuosituksen poisto"):
672661
iface.messageBar().pushCritical("", "Kaavasuosituksen poistaminen epäonnistui.")
673-
return None
674662

675663
# Save regulations
676664
if regulation_group.regulations:
677665
for regulation in regulation_group.regulations:
678666
regulation.regulation_group_id = feature["id"] # Updating regulation group ID
679-
if save_regulation(regulation) is None:
680-
return None
667+
save_regulation(regulation)
681668

682669
# Save propositions
683670
if regulation_group.propositions:
684671
for proposition in regulation_group.propositions:
685672
proposition.regulation_group_id = feature["id"] # Updating regulation group ID
686-
if save_proposition(proposition) is None:
687-
return None
673+
save_proposition(proposition)
688674

689675
return feature
690676

@@ -699,13 +685,11 @@ def delete_regulation_group(regulation_group: RegulationGroup, plan_id: str | No
699685

700686
# Delete regulations
701687
for regulation in regulation_group.regulations:
702-
if not delete_regulation(regulation):
703-
return False
688+
delete_regulation(regulation)
704689

705690
# Delete propositions
706691
for proposition in regulation_group.propositions:
707-
if not delete_proposition(proposition):
708-
return False
692+
delete_proposition(proposition)
709693

710694
if not _delete_feature(feature, layer, "Kaavamääräysryhmän poisto"):
711695
iface.messageBar().pushCritical("", "Kaavamääräysryhmän poistaminen epäonnistui.")
@@ -752,8 +736,7 @@ def save_regulation(regulation: Regulation) -> QgsFeature | None:
752736

753737
for additional_information in regulation.additional_information:
754738
additional_information.plan_regulation_id = regulation_feature["id"]
755-
if save_additional_information(additional_information) is None:
756-
return None
739+
save_additional_information(additional_information)
757740

758741
return regulation_feature
759742

@@ -790,8 +773,7 @@ def delete_regulation(regulation: Regulation) -> bool:
790773
layer = PlanRegulationLayer.get_from_project()
791774

792775
for ai in regulation.additional_information:
793-
if not delete_additional_information(ai):
794-
return False
776+
delete_additional_information(ai)
795777

796778
if not _delete_feature(feature, layer, "Kaavamääräyksen poisto"):
797779
iface.messageBar().pushCritical("", "Kaavamääräyksen poistaminen epäonnistui.")
@@ -843,15 +825,17 @@ def save_document(document: Document) -> QgsFeature | None:
843825
return feature
844826

845827

846-
def save_lifecycle(lifecycle: LifeCycle) -> QgsFeature:
847-
"""Save a LifeCycle object to the layer."""
828+
def save_lifecycle(lifecycle: LifeCycle) -> QgsFeature | None:
848829
feature = LifeCycleLayer.feature_from_model(lifecycle)
849830
layer = LifeCycleLayer.get_from_project()
850831

851-
_save_feature(
832+
if not _save_feature(
852833
feature=feature,
853834
layer=layer,
854835
id_=lifecycle.id_,
855836
edit_text="Elinkaaren lisäys" if lifecycle.id_ is None else "Elinkaaren muokkaus",
856-
)
837+
):
838+
iface.messageBar().pushCritical("", "Elinkaaren tallentaminen epäonnistui.")
839+
return None
840+
857841
return feature

0 commit comments

Comments
 (0)