Skip to content

Commit

Permalink
Merge pull request #6225 from specify/issue-6224
Browse files Browse the repository at this point in the history
Allow to delete tree root
  • Loading branch information
CarolineDenis authored Feb 12, 2025
2 parents b2b02a4 + 6e6658e commit b8a05ca
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 41 deletions.
19 changes: 10 additions & 9 deletions specifyweb/businessrules/rules/tree_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,16 @@ def post_tree_rank_initiation_handler(sender, obj, created):

@orm_signal_handler('pre_delete')
def cannot_delete_root_treedefitem(sender, obj):
if is_treedefitem(obj): # is it a treedefitem?
if sender.objects.get(id=obj.id).parent is None:
raise TreeBusinessRuleException(
"cannot delete root level tree definition item",
{"tree": obj.__class__.__name__,
"localizationKey": 'deletingTreeRoot',
"node": {
"id": obj.id
}})
pass
# if is_treedefitem(obj): # is it a treedefitem?
# if sender.objects.get(id=obj.id).parent is None:
# raise TreeBusinessRuleException(
# "cannot delete root level tree definition item",
# {"tree": obj.__class__.__name__,
# "localizationKey": 'deletingTreeRoot',
# "node": {
# "id": obj.id
# }})
# pre_tree_rank_deletion(sender, obj)
# verify_rank_parent_chain_integrity(obj, RankOperation.DELETED)

Expand Down
3 changes: 0 additions & 3 deletions specifyweb/businessrules/tests/test_geographytreedefitem.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
from ..exceptions import TreeBusinessRuleException

class GeographyTreeDefItem(ApiTests):
def test_cannot_delete_root(self):
with self.assertRaises(TreeBusinessRuleException):
self.geographytreedef.treedefitems.filter(parent=None).delete()

def test_delete_blocked_by_geography(self):
earth = models.Geography.objects.create(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,6 @@
from ..exceptions import TreeBusinessRuleException

class GeologictimeperiodtreedefitemTests(ApiTests):
def test_cannot_delete_root(self):
root = self.geologictimeperiodtreedef.treedefitems.create(
name="root",
rankid=0)

with self.assertRaises(TreeBusinessRuleException):
root.delete()

def test_delete_blocked_by_geologictimeperiod(self):
root = self.geologictimeperiodtreedef.treedefitems.create(
Expand Down
6 changes: 0 additions & 6 deletions specifyweb/businessrules/tests/test_lithostrattreedefitem.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ def setUp(self):
definition=self.rootlithostrattreedefitem.treedef,
rankid=self.rootlithostrattreedefitem.rankid)

def test_cannot_delete_root(self):
self.rootlithostrat.delete()

with self.assertRaises(TreeBusinessRuleException):
self.rootlithostrattreedefitem.delete()

def test_delete_blocked_by_lithostrat(self):
layer = self.rootlithostrattreedefitem.children.create(
name="Layer",
Expand Down
6 changes: 0 additions & 6 deletions specifyweb/businessrules/tests/test_storagetreedefitem.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ def setUp(self):
definition=self.rootstoragetreedefitem.treedef,
rankid=self.rootstoragetreedefitem.rankid)

def test_cannot_delete_root(self):
self.rootstorage.delete()

with self.assertRaises(TreeBusinessRuleException):
self.rootstoragetreedefitem.delete()

def test_delete_blocked_by_storage(self):
site = self.rootstoragetreedefitem.children.create(
name="Site",
Expand Down
10 changes: 0 additions & 10 deletions specifyweb/businessrules/tests/test_taxontreedefitem.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ def setUp(self):
definition=self.roottaxontreedefitem.treedef,
rankid=self.roottaxontreedefitem.rankid)

def test_cannot_delete_root(self):
self.roottaxon.delete()

with self.assertRaises(TreeBusinessRuleException):
self.roottaxontreedefitem.delete()

def test_delete_blocked_by_taxon(self):
kingdom = self.roottaxontreedefitem.children.create(
name="Kingdom",
Expand All @@ -37,8 +31,4 @@ def test_delete_blocked_by_taxon(self):
definition=kingdom.treedef,
rankid=kingdom.rankid)

with self.assertRaises(ProtectedError):
kingdom.delete()

animals.delete()
kingdom.delete()

0 comments on commit b8a05ca

Please sign in to comment.