The 'delete' admin view for this model.
(self, request, object_id, extra_context)
| 2485 | return self._delete_view(request, object_id, extra_context) |
| 2486 | |
| 2487 | def _delete_view(self, request, object_id, extra_context): |
| 2488 | "The 'delete' admin view for this model." |
| 2489 | app_label = self.opts.app_label |
| 2490 | |
| 2491 | to_field = request.POST.get(TO_FIELD_VAR, request.GET.get(TO_FIELD_VAR)) |
| 2492 | if to_field and not self.to_field_allowed(request, to_field): |
| 2493 | raise DisallowedModelAdminToField( |
| 2494 | "The field %s cannot be referenced." % to_field |
| 2495 | ) |
| 2496 | |
| 2497 | obj = self.get_object(request, unquote(object_id), to_field) |
| 2498 | |
| 2499 | if not self.has_delete_permission(request, obj): |
| 2500 | raise PermissionDenied |
| 2501 | |
| 2502 | if obj is None: |
| 2503 | return self._get_obj_does_not_exist_redirect(request, self.opts, object_id) |
| 2504 | |
| 2505 | # Populate deleted_objects, a data structure of all related objects |
| 2506 | # that will also be deleted. |
| 2507 | ( |
| 2508 | deleted_objects, |
| 2509 | model_count, |
| 2510 | perms_needed, |
| 2511 | protected, |
| 2512 | ) = self.get_deleted_objects([obj], request) |
| 2513 | |
| 2514 | if request.POST and not protected: # The user has confirmed the deletion. |
| 2515 | if perms_needed: |
| 2516 | raise PermissionDenied |
| 2517 | obj_display = str(obj) |
| 2518 | attr = str(to_field) if to_field else self.opts.pk.attname |
| 2519 | obj_id = obj.serializable_value(attr) |
| 2520 | self.log_deletions(request, [obj]) |
| 2521 | self.delete_model(request, obj) |
| 2522 | |
| 2523 | return self.response_delete(request, obj_display, obj_id) |
| 2524 | |
| 2525 | object_name = str(self.opts.verbose_name) |
| 2526 | |
| 2527 | if perms_needed or protected: |
| 2528 | title = _("Cannot delete %(name)s") % {"name": object_name} |
| 2529 | else: |
| 2530 | title = _("Delete") |
| 2531 | |
| 2532 | context = { |
| 2533 | **self.admin_site.each_context(request), |
| 2534 | "title": title, |
| 2535 | "subtitle": None, |
| 2536 | "object_name": object_name, |
| 2537 | "object": obj, |
| 2538 | "escaped_object": display_for_value(str(obj), EMPTY_VALUE_STRING), |
| 2539 | "deleted_objects": deleted_objects, |
| 2540 | "delete_confirmation_max_display": self.delete_confirmation_max_display, |
| 2541 | "model_count": dict(model_count).items(), |
| 2542 | "perms_lacking": perms_needed, |
| 2543 | "protected": protected, |
| 2544 | "opts": self.opts, |
no test coverage detected