Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #1116 from elektrrrus/ticket_20234_20236

Ticket 20234 20236
  • Loading branch information...
commit c70ca4879ee33fc4b70ad9a17d74b649f8f75487 2 parents 0a50311 + 3eba8c7
@mjtamlyn mjtamlyn authored
View
10 django/views/generic/detail.py
@@ -93,9 +93,11 @@ def get_context_data(self, **kwargs):
Insert the single object into the context dict.
"""
context = {}
- context_object_name = self.get_context_object_name(self.object)
- if context_object_name:
- context[context_object_name] = self.object
+ if self.object:
+ context['object'] = self.object
+ context_object_name = self.get_context_object_name(self.object)
+ if context_object_name:
+ context[context_object_name] = self.object
context.update(kwargs)
return super(SingleObjectMixin, self).get_context_data(**context)
@@ -122,7 +124,7 @@ def get_template_names(self):
* the value of ``template_name`` on the view (if provided)
* the contents of the ``template_name_field`` field on the
object instance that the view is operating upon (if available)
- * ``<app_label>/<object_name><template_name_suffix>.html``
+ * ``<app_label>/<object_name><template_name_suffix>.html``
"""
try:
names = super(SingleObjectTemplateResponseMixin, self).get_template_names()
View
14 django/views/generic/edit.py
@@ -136,20 +136,6 @@ def form_valid(self, form):
self.object = form.save()
return super(ModelFormMixin, self).form_valid(form)
- def get_context_data(self, **kwargs):
- """
- If an object has been supplied, inject it into the context with the
- supplied context_object_name name.
- """
- context = {}
- if self.object:
- context['object'] = self.object
- context_object_name = self.get_context_object_name(self.object)
- if context_object_name:
- context[context_object_name] = self.object
- context.update(kwargs)
- return super(ModelFormMixin, self).get_context_data(**context)
-
class ProcessFormView(View):
"""
View
13 tests/generic_views/test_base.py
@@ -412,6 +412,19 @@ def test_get_context_data_super(self):
context = test_view.get_context_data(test_name='test_value')
self.assertEqual(context['test_name'], 'test_value')
+ def test_object_at_custom_name_in_context_data(self):
+ # Checks 'pony' key presence in dict returned by get_context_date
+ test_view = views.CustomSingleObjectView()
+ test_view.context_object_name = 'pony'
+ context = test_view.get_context_data()
+ self.assertEqual(context['pony'], test_view.object)
+
+ def test_object_in_get_context_data(self):
+ # Checks 'object' key presence in dict returned by get_context_date #20234
+ test_view = views.CustomSingleObjectView()
+ context = test_view.get_context_data()
+ self.assertEqual(context['object'], test_view.object)
+
class UseMultipleObjectMixinTest(unittest.TestCase):
rf = RequestFactory()
View
5 tests/generic_views/views.py
@@ -1,7 +1,6 @@
from __future__ import absolute_import
from django.contrib.auth.decorators import login_required
-from django.contrib.messages.views import SuccessMessageMixin
from django.core.paginator import Paginator
from django.core.urlresolvers import reverse, reverse_lazy
from django.utils.decorators import method_decorator
@@ -227,6 +226,10 @@ def get_context_data(self, **kwargs):
def get_context_object_name(self, obj):
return "test_name"
+class CustomSingleObjectView(generic.detail.SingleObjectMixin, generic.View):
+ model = Book
+ object = Book(name="dummy")
+
class BookSigningConfig(object):
model = BookSigning
date_field = 'event_date'
Please sign in to comment.
Something went wrong with that request. Please try again.