Skip to content

Commit 60e4760

Browse files
committed
Fix broken groups check on parameter recalculate
1 parent b589d5d commit 60e4760

2 files changed

Lines changed: 22 additions & 12 deletions

File tree

activity_browser/actions/parameter/parameter_modify.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
from typing import Any
1+
from logging import getLogger
22

3-
from bw2data.parameters import ParameterBase, parameters
3+
import bw2data as bd
4+
from bw2data.parameters import ParameterBase, parameters, ActivityParameter, Group, GroupDependency
5+
from peewee import DoesNotExist
46

57
from activity_browser.ui.icons import qicons
68
from activity_browser.bwutils import refresh_parameter, Parameter
79
from activity_browser.actions.base import ABAction, exception_dialogs
810

911
from .parameter_rename import ParameterRename
1012

13+
log = getLogger(__name__)
14+
1115

1216
class ParameterModify(ABAction):
1317
"""
@@ -35,4 +39,18 @@ def run(parameter: tuple | Parameter | ParameterBase, field: str, value: any):
3539
param_model.save()
3640

3741
if field in ("amount", "formula"):
42+
ParameterModify.fix_broken_groups()
3843
parameters.recalculate()
44+
45+
@staticmethod
46+
def fix_broken_groups():
47+
groups = Group.select().execute()
48+
for group in groups:
49+
if group.name == "project" or group.name in bd.databases:
50+
continue
51+
try:
52+
ActivityParameter._static_dependencies(group.name)
53+
except DoesNotExist:
54+
log.warning(f"Removing broken parameter group {group.name}")
55+
GroupDependency.get(GroupDependency.group == group.name).delete_instance()
56+
group.delete_instance()

activity_browser/layouts/pages/parameters/parameter_models.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,8 @@ def edit_single_parameter(self, index: QModelIndex) -> None:
8585
param = self.get_parameter(index)
8686
field = self._dataframe.columns[index.column()]
8787

88-
try:
89-
actions.ParameterModify.run(param, field, index.data())
90-
except Exception as e:
91-
QtWidgets.QMessageBox.warning(
92-
application.main_window,
93-
"Could not save changes",
94-
str(e),
95-
QtWidgets.QMessageBox.Ok,
96-
QtWidgets.QMessageBox.Ok,
97-
)
88+
actions.ParameterModify.run(param, field, index.data())
89+
9890

9991
@Slot(QModelIndex, name="startRenameParameter")
10092
def handle_parameter_rename(self, proxy: QModelIndex) -> None:

0 commit comments

Comments
 (0)