Skip to content

Commit d6f4c43

Browse files
feat: Address review comments
- Remove comments - Use django rq - Use update instead of save
1 parent dc7b4b4 commit d6f4c43

File tree

5 files changed

+11
-18
lines changed

5 files changed

+11
-18
lines changed

scanpipe/filters.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -349,9 +349,7 @@ def __init__(self, data=None, *args, **kwargs):
349349

350350
# Default filtering by "Active" projects.
351351
if not data or data.get("is_archived", "") == "":
352-
self.queryset = self.queryset.filter(
353-
is_archived=False, is_marked_for_deletion=False
354-
)
352+
self.queryset = self.queryset.active()
355353

356354
active_count = Project.objects.filter(
357355
is_archived=False, is_marked_for_deletion=False

scanpipe/models.py

+6-7
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,8 @@ def with_counts(self, *fields):
488488
)
489489

490490
return self.annotate(**annotations)
491-
491+
def active(self):
492+
return self.filter(is_archived=False, is_marked_for_deletion=False)
492493

493494
class UUIDTaggedItem(GenericUUIDTaggedItemBase, TaggedItemBase):
494495
class Meta:
@@ -532,10 +533,10 @@ class Project(UUIDPKModel, ExtraDataFieldMixin, UpdateMixin, models.Model):
532533
)
533534
notes = models.TextField(blank=True)
534535
settings = models.JSONField(default=dict, blank=True)
536+
is_marked_for_deletion = models.BooleanField(default=False)
535537
labels = TaggableManager(through=UUIDTaggedItem)
536538

537539
objects = ProjectQuerySet.as_manager()
538-
is_marked_for_deletion = models.BooleanField(default=False)
539540

540541
class Meta:
541542
ordering = ["-created_date"]
@@ -636,15 +637,13 @@ def delete(self, *args, **kwargs):
636637
return super().delete(*args, **kwargs)
637638

638639
def mark_for_deletion(self):
639-
self.is_marked_for_deletion = True
640-
self.save()
640+
self.update(is_marked_for_deletion=True)
641641

642642
def delete_in_background(self):
643643
# Mark the project for deletion and enqueue background deletion task
644644
self.mark_for_deletion()
645-
q = Queue("default", connection=redis.Redis())
646-
job = q.enqueue(tasks.background_delete_task, self)
647-
645+
django_rq.enqueue(tasks.background_delete_task, self)
646+
648647
def reset(self, keep_input=True):
649648
"""
650649
Reset the project by deleting all related database objects and all work

scanpipe/tasks.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,9 @@ def background_delete_task(project):
8686
if not project.is_marked_for_deletion:
8787
return
8888

89-
# Perform the deletion process
9089
try:
9190
project.delete()
9291
except Exception as e:
93-
# Handle errors and update project errors or display a banner
94-
project.is_marked_for_deletion = False
95-
project.save()
92+
info(f"Deletion failed: {str(e)}", project.pk)
93+
project.update(is_marked_for_deletion=True)
9694
project.add_error(description=f"Deletion failed: {str(e)}")

scanpipe/tests/test_views.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -183,9 +183,9 @@ def test_scanpipe_views_project_actions_view(self):
183183
}
184184
response = self.client.post(url, data=data, follow=True)
185185
self.assertRedirects(response, reverse("project_list"))
186-
expected = '<div class="message-body">1 project is being deleted in the background.</div>'
186+
expected = '<div class="message-body">1 projects have been delete.</div>'
187187
self.assertContains(response, expected, html=True)
188-
expected = f"1 project is being deleted in the background."
188+
expected = f"1 projects have been delete."
189189
self.assertContains(response, expected, html=True)
190190

191191
def test_scanpipe_views_project_details_is_archived(self):

scanpipe/views.py

-2
Original file line numberDiff line numberDiff line change
@@ -1089,8 +1089,6 @@ def perform_action(self, action, project_uuid, action_kwargs=None):
10891089
raise Http404
10901090

10911091
def get_success_message(self, action, count):
1092-
if action == "delete":
1093-
return f"{count} project{'s' if count != 1 else ''} {'is' if count == 1 else 'are'} being deleted in the background."
10941092
return f"{count} projects have been {action}."
10951093

10961094

0 commit comments

Comments
 (0)