summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2021-11-09 09:03:40 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-11-09 09:04:12 +0100
commit45de30dc693fcd63d33816a85fb02abd5f7a10b4 (patch)
tree773d0e21d4b2c771f7c5c883d6801ebfc7ae4049 /django
parentb7b3bbc8356b8365f3ab8ed9c8d863b47c18a3d4 (diff)
[4.0.x] Refs #33263 -- Added warning to BaseDeleteView when delete() method is overridden.
Follow up to 3a45fea0832c5910acee6e0d29f230f347a50462. Backport of 6bc437c0d82675ebe6aa92c8e249892205c316ef from main
Diffstat (limited to 'django')
-rw-r--r--django/views/generic/edit.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/django/views/generic/edit.py b/django/views/generic/edit.py
index d0de788c46..8cbdeb8d13 100644
--- a/django/views/generic/edit.py
+++ b/django/views/generic/edit.py
@@ -1,3 +1,5 @@
+import warnings
+
from django.core.exceptions import ImproperlyConfigured
from django.forms import Form, models as model_forms
from django.http import HttpResponseRedirect
@@ -225,6 +227,11 @@ class DeletionMixin:
"No URL to redirect to. Provide a success_url.")
+# RemovedInDjango50Warning.
+class DeleteViewCustomDeleteWarning(Warning):
+ pass
+
+
class BaseDeleteView(DeletionMixin, FormMixin, BaseDetailView):
"""
Base view for deleting an object.
@@ -233,6 +240,19 @@ class BaseDeleteView(DeletionMixin, FormMixin, BaseDetailView):
"""
form_class = Form
+ def __init__(self, *args, **kwargs):
+ # RemovedInDjango50Warning.
+ if self.__class__.delete is not DeletionMixin.delete:
+ warnings.warn(
+ f'DeleteView uses FormMixin to handle POST requests. As a '
+ f'consequence, any custom deletion logic in '
+ f'{self.__class__.__name__}.delete() handler should be moved '
+ f'to form_valid().',
+ DeleteViewCustomDeleteWarning,
+ stacklevel=2,
+ )
+ super().__init__(*args, **kwargs)
+
def post(self, request, *args, **kwargs):
# Set self.object before the usual form processing flow.
# Inlined because having DeletionMixin as the first base, for