summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Schär <jscissr@gmail.com>2021-09-07 22:50:29 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-09-10 06:44:39 +0200
commit06e59d97a3c6e8e600ff11dadf994fae467fc785 (patch)
tree8cf20b034be22fcceefb2bff8505f2e0ccc648b1
parent0a28b42b1510b8093a90718bafd7627ed67fa13b (diff)
Fixed #33096 -- Fixed <form> nesting in technical 500 template.
This also prevents sending <form> tags in emails.
-rw-r--r--django/views/templates/technical_500.html4
-rw-r--r--tests/logging_tests/tests.py16
2 files changed, 18 insertions, 2 deletions
diff --git a/django/views/templates/technical_500.html b/django/views/templates/technical_500.html
index 7683896c56..5ace2a136f 100644
--- a/django/views/templates/technical_500.html
+++ b/django/views/templates/technical_500.html
@@ -276,8 +276,8 @@
{% endfor %}
</ul>
</div>
- <form action="https://dpaste.com/" name="pasteform" id="pasteform" method="post">
{% if not is_email %}
+ <form action="https://dpaste.com/" name="pasteform" id="pasteform" method="post">
<div id="pastebinTraceback" class="pastebin">
<input type="hidden" name="language" value="PythonConsole">
<input type="hidden" name="title"
@@ -327,8 +327,8 @@ Exception Value: {{ exception_value|force_escape }}
<input type="submit" value="Share this traceback on a public website">
</div>
</form>
-</div>
{% endif %}
+</div>
{% endif %}
<div id="requestinfo">
diff --git a/tests/logging_tests/tests.py b/tests/logging_tests/tests.py
index a06cda9efa..666105baff 100644
--- a/tests/logging_tests/tests.py
+++ b/tests/logging_tests/tests.py
@@ -422,6 +422,22 @@ class AdminEmailHandlerTest(SimpleTestCase):
msg = mail.outbox[0]
self.assertEqual(msg.body, 'message\n\ncustom traceback text')
+ @override_settings(ADMINS=[('admin', 'admin@example.com')])
+ def test_emit_no_form_tag(self):
+ """HTML email doesn't contain forms."""
+ handler = AdminEmailHandler(include_html=True)
+ record = self.logger.makeRecord(
+ 'name', logging.ERROR, 'function', 'lno', 'message', None, None,
+ )
+ handler.emit(record)
+ self.assertEqual(len(mail.outbox), 1)
+ msg = mail.outbox[0]
+ self.assertEqual(msg.subject, '[Django] ERROR: message')
+ self.assertEqual(len(msg.alternatives), 1)
+ body_html = str(msg.alternatives[0][0])
+ self.assertIn('<div id="traceback">', body_html)
+ self.assertNotIn('<form', body_html)
+
class SettingsConfigTest(AdminScriptTestCase):
"""