| @@ 175-192 (lines=18) @@ | ||
| 172 | class DeleteMaterialMixin(OwnerMixin): |
|
| 173 | """A common DeleteMixin for Material classes (Sample/Animal)""" |
|
| 174 | ||
| 175 | def dispatch(self, request, *args, **kwargs): |
|
| 176 | handler = super(DeleteMaterialMixin, self).dispatch( |
|
| 177 | request, *args, **kwargs) |
|
| 178 | ||
| 179 | # here I've done get_queryset. Check for submission status |
|
| 180 | if hasattr(self, "object") and not self.object.can_edit(): |
|
| 181 | message = "Cannot delete %s: submission status is: %s" % ( |
|
| 182 | self.object, self.object.submission.get_status_display()) |
|
| 183 | ||
| 184 | logger.warning(message) |
|
| 185 | messages.warning( |
|
| 186 | request=self.request, |
|
| 187 | message=message, |
|
| 188 | extra_tags="alert alert-dismissible alert-warning") |
|
| 189 | ||
| 190 | return redirect(self.object.get_absolute_url()) |
|
| 191 | ||
| 192 | return handler |
|
| 193 | ||
| 194 | def get_success_url(self): |
|
| 195 | return reverse( |
|
| @@ 107-124 (lines=18) @@ | ||
| 104 | # override this attribute with a real validation class |
|
| 105 | validationresult_class = None |
|
| 106 | ||
| 107 | def dispatch(self, request, *args, **kwargs): |
|
| 108 | handler = super(UpdateMaterialMixin, self).dispatch( |
|
| 109 | request, *args, **kwargs) |
|
| 110 | ||
| 111 | # here I've done get_queryset. Check for submission status |
|
| 112 | if hasattr(self, "object") and not self.object.can_edit(): |
|
| 113 | message = "Cannot edit %s: submission status is: %s" % ( |
|
| 114 | self.object, self.object.submission.get_status_display()) |
|
| 115 | ||
| 116 | logger.warning(message) |
|
| 117 | messages.warning( |
|
| 118 | request=self.request, |
|
| 119 | message=message, |
|
| 120 | extra_tags="alert alert-dismissible alert-warning") |
|
| 121 | ||
| 122 | return redirect(self.object.get_absolute_url()) |
|
| 123 | ||
| 124 | return handler |
|
| 125 | ||
| 126 | # add the request to the kwargs |
|
| 127 | # https://chriskief.com/2012/12/18/django-modelform-formview-and-the-request-object/ |
|
| @@ 472-489 (lines=18) @@ | ||
| 469 | template_name = "submissions/submission_confirm_delete.html" |
|
| 470 | success_url = reverse_lazy('image_app:dashboard') |
|
| 471 | ||
| 472 | def dispatch(self, request, *args, **kwargs): |
|
| 473 | handler = super(DeleteSubmissionView, self).dispatch( |
|
| 474 | request, *args, **kwargs) |
|
| 475 | ||
| 476 | # here I've done get_queryset. Check for submission status |
|
| 477 | if hasattr(self, "object") and not self.object.can_edit(): |
|
| 478 | message = "Cannot delete %s: submission status is: %s" % ( |
|
| 479 | self.object, self.object.get_status_display()) |
|
| 480 | ||
| 481 | logger.warning(message) |
|
| 482 | messages.warning( |
|
| 483 | request=self.request, |
|
| 484 | message=message, |
|
| 485 | extra_tags="alert alert-dismissible alert-warning") |
|
| 486 | ||
| 487 | return redirect(self.object.get_absolute_url()) |
|
| 488 | ||
| 489 | return handler |
|
| 490 | ||
| 491 | # https://stackoverflow.com/a/39533619/4385116 |
|
| 492 | def get_context_data(self, **kwargs): |
|
| @@ 307-324 (lines=18) @@ | ||
| 304 | Q(animal__isnull=False) | Q(sample__isnull=False)) |
|
| 305 | ).order_by('id') |
|
| 306 | ||
| 307 | def dispatch(self, request, *args, **kwargs): |
|
| 308 | handler = super(EditSubmissionView, self).dispatch( |
|
| 309 | request, *args, **kwargs) |
|
| 310 | ||
| 311 | # here I've done get_queryset. Check for submission status |
|
| 312 | if hasattr(self, "submission") and not self.submission.can_edit(): |
|
| 313 | message = "Cannot edit submission: current status is: %s" % ( |
|
| 314 | self.submission.get_status_display()) |
|
| 315 | ||
| 316 | logger.warning(message) |
|
| 317 | messages.warning( |
|
| 318 | request=self.request, |
|
| 319 | message=message, |
|
| 320 | extra_tags="alert alert-dismissible alert-warning") |
|
| 321 | ||
| 322 | return redirect(self.submission.get_absolute_url()) |
|
| 323 | ||
| 324 | return handler |
|
| 325 | ||
| 326 | def get_context_data(self, **kwargs): |
|
| 327 | # Call the base implementation first to get a context |
|