diff --git a/arho_feature_template/gui/dialogs/plan_feature_form.py b/arho_feature_template/gui/dialogs/plan_feature_form.py index 580d7d3..a6d7358 100644 --- a/arho_feature_template/gui/dialogs/plan_feature_form.py +++ b/arho_feature_template/gui/dialogs/plan_feature_form.py @@ -109,34 +109,42 @@ def _check_regulation_group_short_names(self) -> bool: existing_names = set() duplicate_names = set() + def _is_existing_model_with_unmodified_short_name(model: RegulationGroup, short_name: str) -> bool: + return bool(model.id_ and short_name == model.short_name) + + def _format_names(names, last_item_conjucation: str = "ja") -> str: + names = list(names) + formatted_names = ", ".join(f"'{name}'" for name in names[:-1]) + formatted_names += f" {last_item_conjucation} " if len(names) > 1 else "" + formatted_names += f"'{names[-1]}'" if names else "" + return formatted_names + for reg_group_widget in self.regulation_group_widgets: short_name = reg_group_widget.short_name.text() if not short_name: continue - if short_name in self.existing_group_short_names: + if ( + not _is_existing_model_with_unmodified_short_name(reg_group_widget.regulation_group, short_name) + and short_name in self.existing_group_short_names + ): existing_names.add(short_name) + if short_name in seen_names: duplicate_names.add(short_name) - seen_names.add(short_name) - def format_names(names, last_item_conjucation: str = "ja"): - names = list(names) - formatted_names = ", ".join(f"'{name}'" for name in names[:-1]) - formatted_names += f" {last_item_conjucation} " if len(names) > 1 else "" - formatted_names += f"'{names[-1]}'" if names else "" - return formatted_names + seen_names.add(short_name) if existing_names: if len(existing_names) == 1: - msg = f"Kaavamääräysryhmä lyhyellä nimellä {format_names(existing_names)} on jo olemassa." + msg = f"Kaavamääräysryhmä lyhyellä nimellä {_format_names(existing_names)} on jo olemassa." else: - msg = f"Kaavamääräysryhmät lyhyillä nimillä {format_names(existing_names)} ovat jo olemassa." + msg = f"Kaavamääräysryhmät lyhyillä nimillä {_format_names(existing_names)} ovat jo olemassa." QMessageBox.critical(self, "Virhe", msg) return False if duplicate_names: - msg = f"Lomakkeella on useita kaavamääräysryhmiä, joilla on lyhyt nimi {format_names(duplicate_names, 'tai')}." + msg = f"Lomakkeella on useita kaavamääräysryhmiä, joilla on lyhyt nimi {_format_names(duplicate_names, 'tai')}." QMessageBox.critical(self, "Virhe", msg) return False diff --git a/arho_feature_template/gui/dialogs/plan_regulation_group_form.py b/arho_feature_template/gui/dialogs/plan_regulation_group_form.py index cd234ae..78838ee 100644 --- a/arho_feature_template/gui/dialogs/plan_regulation_group_form.py +++ b/arho_feature_template/gui/dialogs/plan_regulation_group_form.py @@ -146,7 +146,16 @@ def _initalize_regulation_from_config(self, config: RegulationConfig, parent: QT def _check_short_name(self) -> bool: short_name = self.short_name.text() - if short_name and short_name in self.existing_group_short_names: + + def _is_existing_model_with_unmodified_short_name(model: RegulationGroup, short_name: str) -> bool: + return bool(model.id_ and short_name == model.short_name) + + if not short_name: + return True + if ( + not _is_existing_model_with_unmodified_short_name(self.regulation_group, short_name) + and short_name in self.existing_group_short_names + ): msg = f"Kaavamääräysryhmä lyhyellä nimellä '{short_name}' on jo olemassa." QMessageBox.critical(self, "Virhe", msg) return False