Commit 3eba8c7f authored by Karol Sikora's avatar Karol Sikora
Browse files

Fixed #20234 and #20236 -- SingleObjectMixin fixes

Added object on SingleObjectMixin returned context,
some code clanup.
parent 00382961
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -93,6 +93,8 @@ class SingleObjectMixin(ContextMixin):
        Insert the single object into the context dict.
        """
        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
+0 −14
Original line number Diff line number Diff line
@@ -136,20 +136,6 @@ class ModelFormMixin(FormMixin, SingleObjectMixin):
        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):
    """
+13 −0
Original line number Diff line number Diff line
@@ -412,6 +412,19 @@ class GetContextDataTest(unittest.TestCase):
        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()
+4 −1
Original line number Diff line number Diff line
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 @@ class CustomContextView(generic.detail.SingleObjectMixin, generic.View):
    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'