mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-10-24 03:26:11 -05:00
Tweak: improve tag parent validation error handling (#11096)
This commit is contained in:
@@ -132,7 +132,7 @@ class Tag(MatchingModel, TreeNodeModel):
|
|||||||
height = 0 if self.pk is None else self.get_depth()
|
height = 0 if self.pk is None else self.get_depth()
|
||||||
deepest_new_depth = (new_parent_depth + 1) + height
|
deepest_new_depth = (new_parent_depth + 1) + height
|
||||||
if deepest_new_depth > self.MAX_NESTING_DEPTH:
|
if deepest_new_depth > self.MAX_NESTING_DEPTH:
|
||||||
raise ValidationError(_("Maximum nesting depth exceeded."))
|
raise ValidationError({"parent": _("Maximum nesting depth exceeded.")})
|
||||||
|
|
||||||
return super().clean()
|
return super().clean()
|
||||||
|
|
||||||
|
|||||||
@@ -635,7 +635,7 @@ class TagSerializer(MatchingModelSerializer, OwnedObjectSerializer):
|
|||||||
temp.clean()
|
temp.clean()
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
logger.debug("Tag parent validation failed: %s", e)
|
logger.debug("Tag parent validation failed: %s", e)
|
||||||
raise serializers.ValidationError({"parent": _("Invalid parent tag.")})
|
raise e
|
||||||
|
|
||||||
return super().validate(attrs)
|
return super().validate(attrs)
|
||||||
|
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ class TestTagHierarchy(APITestCase):
|
|||||||
)
|
)
|
||||||
assert resp_fail.status_code == 400
|
assert resp_fail.status_code == 400
|
||||||
assert "parent" in resp_fail.data
|
assert "parent" in resp_fail.data
|
||||||
assert "Invalid" in str(resp_fail.data["parent"])
|
assert "Maximum nesting depth exceeded" in str(resp_fail.data["parent"])
|
||||||
|
|
||||||
def test_max_depth_on_move_subtree(self):
|
def test_max_depth_on_move_subtree(self):
|
||||||
a = Tag.objects.create(name="A2")
|
a = Tag.objects.create(name="A2")
|
||||||
@@ -191,7 +191,7 @@ class TestTagHierarchy(APITestCase):
|
|||||||
)
|
)
|
||||||
assert resp_fail.status_code == 400
|
assert resp_fail.status_code == 400
|
||||||
assert "Maximum nesting depth exceeded" in str(
|
assert "Maximum nesting depth exceeded" in str(
|
||||||
resp_fail.data["non_field_errors"],
|
resp_fail.data["parent"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Moving X under C (depth 3) should be allowed (deepest becomes 5)
|
# Moving X under C (depth 3) should be allowed (deepest becomes 5)
|
||||||
|
|||||||
Reference in New Issue
Block a user