File tree Expand file tree Collapse file tree
rodan-main/code/rodan/models Expand file tree Collapse file tree Original file line number Diff line number Diff line change 66from django .urls import reverse
77from rodan .constants import task_status
88from rodan .models .resourcelabel import ResourceLabel
9+ from rodan .models .output import Output
910from rodan .models .user import User
11+ from django .db .models .signals import post_delete
12+ from django .dispatch import receiver
1013
1114import logging
1215
@@ -298,3 +301,12 @@ def get_viewer(self):
298301 def viewer_relurl (self ):
299302 if self .get_viewer () is not None :
300303 return reverse ("resource-viewer-acquire" , args = (self .uuid ,))
304+
305+ @receiver (post_delete , sender = Output )
306+ def post_output_delete (sender , instance , ** kwargs ):
307+ """
308+ Deletes resource when associated output is deleted. Cascade delete does not work due to on_delete=PROTECT in Output model.
309+ In newer Django versions, we can use on_delete=models.RESTRICT in Output model to allow cascade delete to work.
310+ """
311+ if instance .resource :
312+ instance .resource .delete ()
You can’t perform that action at this time.
0 commit comments