Browse Source

bug fixes in label creation and removal

Dimitri Korsch 3 years ago
parent
commit
8b6f46f567

+ 2 - 1
pycs/database/Label.py

@@ -53,7 +53,8 @@ class Label(NamedBaseModel):
     # relationships to other models
     parent = db.relationship("Label",
         backref="children",
-        remote_side=_label_id)
+        remote_side=_label_id,
+    )
 
     results = db.relationship("Result",
         backref="label",

+ 5 - 3
pycs/database/Project.py

@@ -198,12 +198,14 @@ class Project(NamedBaseModel):
         :param hierarchy_level: hierarchy level name
         :return: created or edited label, insert
         """
-
-        label = Label.query.get(project=self, reference=reference)
+        label = None
         is_new = False
 
+        if reference is not None:
+            label = Label.query.filter_by(project_id=self.id, reference=reference).one_or_none()
+
         if label is None:
-            label = Label.new(project=self, reference=reference)
+            label = Label.new(commit=False, project_id=self.id, reference=reference)
             is_new = True
 
         label.set_name(name, commit=False)

+ 1 - 1
pycs/frontend/endpoints/labels/CreateLabel.py

@@ -37,7 +37,7 @@ class CreateLabel(View):
         # insert label
         with db.session.begin_nested():
             label, is_new = project.create_label(name, parent=parent, commit=False)
-            if is_new:
+            if not is_new:
                 abort(400, f"Label already exists: {label}")
 
         # send notification

+ 1 - 1
pycs/frontend/endpoints/labels/RemoveLabel.py

@@ -38,7 +38,7 @@ class RemoveLabel(View):
         with db.session.begin_nested():
 
             # update children's parent entry
-            label.children.update({Label.parent: label.parent},
+            Label.query.filter(Label.parent == self).update({Label.parent: label.parent},
                 synchronize_session=False)
 
             # remove label