فهرست منبع

Merge pull request #115 from imdario/master

Remove mock request object from jet.utils.get_model_queryset
Denis K 8 سال پیش
والد
کامیت
de786b894c
4فایلهای تغییر یافته به همراه18 افزوده شده و 12 حذف شده
  1. 0 0
      CONTRIBUTING.rst
  2. 2 1
      jet/templatetags/jet_tags.py
  3. 15 7
      jet/tests/test_tags.py
  4. 1 4
      jet/utils.py

+ 0 - 0
CONTRIBUTION.rst → CONTRIBUTING.rst


+ 2 - 1
jet/templatetags/jet_tags.py

@@ -220,7 +220,8 @@ def jet_sibling_object_url(context, next):
     preserved_filters_plain = context.get('preserved_filters', '')
     preserved_filters = dict(parse_qsl(preserved_filters_plain))
     admin_site = get_admin_site(context)
-    queryset = get_model_queryset(admin_site, model, preserved_filters=preserved_filters)
+    request = context.get('request')
+    queryset = get_model_queryset(admin_site, model, request, preserved_filters=preserved_filters)
 
     sibling_object = None
     object_pks = list(queryset.values_list('pk', flat=True))

+ 15 - 7
jet/tests/test_tags.py

@@ -3,7 +3,7 @@ from django.core.urlresolvers import reverse
 from django.test import TestCase
 from jet.templatetags.jet_tags import jet_select2_lookups, jet_next_object_url, jet_previous_object_url
 from jet.tests.models import TestModel, SearchableTestModel
-
+from django.test.client import RequestFactory
 
 class TagsTestCase(TestCase):
     def setUp(self):
@@ -61,16 +61,18 @@ class TagsTestCase(TestCase):
         ordering_field = 1  # field1 in list_display
         preserved_filters = '_changelist_filters=o%%3D%d' % ordering_field
 
+        expected_url = reverse('admin:%s_%s_change' % (
+            TestModel._meta.app_label,
+            TestModel._meta.model_name
+        ), args=(self.models[1].pk,)) + '?' + preserved_filters
+
         context = {
             'original': instance,
-            'preserved_filters': preserved_filters
+            'preserved_filters': preserved_filters,
+            'request': RequestFactory().get(expected_url),
         }
 
         actual_url = jet_next_object_url(context)
-        expected_url = reverse('admin:%s_%s_change' % (
-            TestModel._meta.app_label,
-            TestModel._meta.model_name
-        ), args=(self.models[1].pk,)) + '?' + preserved_filters
 
         self.assertEqual(actual_url, expected_url)
 
@@ -79,9 +81,15 @@ class TagsTestCase(TestCase):
         ordering_field = 1  # field1 in list_display
         preserved_filters = '_changelist_filters=o%%3D%d' % ordering_field
 
+        changelist_url = reverse('admin:%s_%s_change' % (
+            TestModel._meta.app_label,
+            TestModel._meta.model_name
+        ), args=(self.models[1].pk,)) + '?' + preserved_filters
+
         context = {
             'original': instance,
-            'preserved_filters': preserved_filters
+            'preserved_filters': preserved_filters,
+            'request': RequestFactory().get(changelist_url),
         }
 
         actual_url = jet_previous_object_url(context)

+ 1 - 4
jet/utils.py

@@ -21,7 +21,6 @@ from django.utils.functional import Promise
 from django.contrib.admin.options import IncorrectLookupParameters
 from django.core import urlresolvers
 from django.contrib import admin
-from django.test.client import RequestFactory
 
 
 class JsonResponse(HttpResponse):
@@ -164,7 +163,7 @@ class SuccessMessageMixin(object):
         return self.success_message % cleaned_data
 
 
-def get_model_queryset(admin_site, model, preserved_filters=None):
+def get_model_queryset(admin_site, model, request, preserved_filters=None):
     model_admin = admin_site._registry.get(model)
 
     changelist_url = urlresolvers.reverse('%s:%s_%s_changelist' % (
@@ -180,8 +179,6 @@ def get_model_queryset(admin_site, model, preserved_filters=None):
     if changelist_filters:
         changelist_url += '?' + changelist_filters
 
-    request = RequestFactory().get(changelist_url)
-
     if model_admin:
         queryset = model_admin.get_queryset(request)
     else: