[Python-modules-commits] [python-django-ordered-model] 02/07: Import python-django-ordered-model_1.2.1.orig.tar.gz

Michael Fladischer fladi at moszumanska.debian.org
Wed Jul 27 08:04:29 UTC 2016


This is an automated email from the git hooks/post-receive script.

fladi pushed a commit to branch master
in repository python-django-ordered-model.

commit 3cc4266b4d5fdf3e19247d333ebaf295fbf5b6ac
Author: Michael Fladischer <FladischerMichael at fladi.at>
Date:   Wed Jul 27 09:47:14 2016 +0200

    Import python-django-ordered-model_1.2.1.orig.tar.gz
---
 CHANGES.md                      |  6 ++++++
 PKG-INFO                        |  2 +-
 ordered_model/admin.py          | 25 +++++++++++++++------
 ordered_model/models.py         |  4 ++++
 ordered_model/tests/admin.py    |  8 +++++++
 ordered_model/tests/models.py   |  5 ++---
 ordered_model/tests/settings.py |  9 ++++++++
 ordered_model/tests/tests.py    | 48 +++++++++++++++++++++++++++++------------
 setup.py                        |  2 +-
 9 files changed, 83 insertions(+), 26 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index a1714b7..b11cb70 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,12 @@
 Change log
 ==========
 
+1.2.1 – 2016-07-12
+------------------
+
+ - Various bug fixes in admin
+ - Add support for URL namespaces other than "admin"
+
 1.2.0 – 2016-07-08
 ------------------
 
diff --git a/PKG-INFO b/PKG-INFO
index 7c3384e..47397ba 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: django-ordered-model
-Version: 1.2.0
+Version: 1.2.1
 Summary: Allows Django models to be ordered and provides a simple admin interface for reordering them.
 Home-page: http://github.com/bfirsh/django-ordered-model
 Author: Ben Firshman
diff --git a/ordered_model/admin.py b/ordered_model/admin.py
index 2940eaa..4f2014c 100644
--- a/ordered_model/admin.py
+++ b/ordered_model/admin.py
@@ -57,11 +57,14 @@ class OrderedModelAdmin(admin.ModelAdmin):
         model_info = self._get_model_info()
         return render_to_string("ordered_model/admin/order_controls.html", {
             'app_label': model_info['app'],
-            'module_name': model_info['model'],
+            'model_name': model_info['model'],
+            'module_name': model_info['model'], # for backwards compatibility
             'object_id': obj.pk,
             'urls': {
-                'up': reverse("admin:{app}_{model}_order_up".format(**model_info), args=[obj.pk, 'up']),
-                'down': reverse("admin:{app}_{model}_order_down".format(**model_info), args=[obj.pk, 'down']),
+                'up': reverse("{admin_name}:{app}_{model}_order_up".format(
+                    admin_name=self.admin_site.name, **model_info), args=[obj.pk, 'up']),
+                'down': reverse("{admin_name}:{app}_{model}_order_down".format(
+                    admin_name=self.admin_site.name, **model_info), args=[obj.pk, 'down']),
             },
             'query_string': self.request_query_string
         })
@@ -156,7 +159,7 @@ class OrderedTabularInline(admin.TabularInline):
         Returns a QuerySet of all model instances that can be edited by the
         admin site. This is used by changelist_view.
         """
-        qs = cls.model._default_manager.get_query_set()
+        qs = cls.model._default_manager.get_queryset()
         # TODO: this should be handled by some parameter to the ChangeList.
         ordering = cls.get_ordering(request)
         if ordering:
@@ -246,13 +249,21 @@ class OrderedTabularInline(admin.TabularInline):
 
     def move_up_down_links(self, obj):
         if obj.id:
+            order_obj_name = 'obj'
+            if obj._get_order_with_respect_to() is not None:
+                order_obj_name = obj._get_order_with_respect_to().id
             return render_to_string("ordered_model/admin/order_controls.html", {
                 'app_label': self.model._meta.app_label,
-                'module_name': self.model._meta.module_name,
+                'model_name': self.model._meta.model_name,
+                'module_name': self.model._meta.model_name, # backwards compat
                 'object_id': obj.id,
                 'urls': {
-                    'up': reverse("admin:{app}_{model}_order_up_inline".format(**self.get_model_info()), args=[obj._get_order_with_respect_to().id, obj.id, 'up']),
-                    'down': reverse("admin:{app}_{model}_order_down_inline".format(**self.get_model_info()), args=[obj._get_order_with_respect_to().id, obj.id, 'down']),
+                    'up': reverse("admin:{app}_{model}_order_up_inline".format(
+                        admin_name=self.admin_site.name, **self.get_model_info()),
+                        args=[order_obj_name, obj.id, 'up']),
+                    'down': reverse("admin:{app}_{model}_order_down_inline".format(
+                        admin_name=self.admin_site.name, **self.get_model_info()),
+                        args=[order_obj_name, obj.id, 'down']),
                 },
                 'query_string': self.request_query_string
             })
diff --git a/ordered_model/models.py b/ordered_model/models.py
index dcfcf50..916cc91 100644
--- a/ordered_model/models.py
+++ b/ordered_model/models.py
@@ -25,6 +25,10 @@ class OrderedModelBase(models.Model):
     def _get_order_with_respect_to(self):
         if type(self.order_with_respect_to) is str:
             self.order_with_respect_to = (self.order_with_respect_to,)
+        if self.order_with_respect_to is None:
+            raise AssertionError(('ordered model admin "{0}" has not specified "order_with_respect_to"; note that this '
+                'should go in the model body, and is not to be confused with the Meta property of the same name, '
+                'which is independent Django functionality').format(self))
         return [(field, getattr(self, field)) for field in self.order_with_respect_to]
 
     def _valid_ordering_reference(self, reference):
diff --git a/ordered_model/tests/admin.py b/ordered_model/tests/admin.py
new file mode 100644
index 0000000..afe577e
--- /dev/null
+++ b/ordered_model/tests/admin.py
@@ -0,0 +1,8 @@
+from django.contrib import admin
+from ordered_model.admin import OrderedModelAdmin
+from .models import Item
+
+class ItemAdmin(OrderedModelAdmin):
+    list_display = ('name', 'move_up_down_links')
+
+admin.site.register(Item, ItemAdmin)
diff --git a/ordered_model/tests/models.py b/ordered_model/tests/models.py
index fa30c1f..a4a77d8 100644
--- a/ordered_model/tests/models.py
+++ b/ordered_model/tests/models.py
@@ -10,13 +10,13 @@ class Question(models.Model):
     pass
 
 
-class User(models.Model):
+class TestUser(models.Model):
     pass
 
 
 class Answer(OrderedModel):
     question = models.ForeignKey(Question, related_name='answers')
-    user = models.ForeignKey(User, related_name='answers')
+    user = models.ForeignKey(TestUser, related_name='answers')
     order_with_respect_to = ('question', 'user')
 
     class Meta:
@@ -56,4 +56,3 @@ class PizzaToppingsThroughModel(OrderedModel):
 
     class Meta:
         ordering = ('pizza', 'order')
-
diff --git a/ordered_model/tests/settings.py b/ordered_model/tests/settings.py
index 0d2523d..52eafec 100644
--- a/ordered_model/tests/settings.py
+++ b/ordered_model/tests/settings.py
@@ -5,7 +5,10 @@ DATABASES = {
 }
 ROOT_URLCONF = 'ordered_model.tests.urls'
 INSTALLED_APPS = [
+    'django.contrib.admin',
+    'django.contrib.auth',
     'django.contrib.contenttypes',
+    'django.contrib.sessions',
     'ordered_model',
     'ordered_model.tests',
 ]
@@ -18,3 +21,9 @@ MIDDLEWARE_CLASSES = (
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
 )
+TEMPLATES = [
+    {
+        'BACKEND': 'django.template.backends.django.DjangoTemplates',
+        'APP_DIRS': True,
+    },
+]
diff --git a/ordered_model/tests/tests.py b/ordered_model/tests/tests.py
index 1691f6e..604889a 100644
--- a/ordered_model/tests/tests.py
+++ b/ordered_model/tests/tests.py
@@ -1,7 +1,7 @@
-
 from django.contrib import admin
+from django.contrib.auth.models import User
 from django.test import TestCase
-from ordered_model.admin import OrderedModelAdmin
+import uuid
 from ordered_model.tests.models import (
     Answer,
     Item,
@@ -12,8 +12,8 @@ from ordered_model.tests.models import (
     Topping,
     PizzaToppingsThroughModel
 )
-from ordered_model.tests.models import User
-import uuid
+from ordered_model.tests.models import TestUser
+from .admin import ItemAdmin
 
 
 class OrderGenerationTests(TestCase):
@@ -108,7 +108,7 @@ class OrderWithRespectToTests(TestCase):
     def setUp(self):
         q1 = Question.objects.create()
         q2 = Question.objects.create()
-        u0 = User.objects.create()
+        u0 = TestUser.objects.create()
         self.q1_a1 = q1.answers.create(user=u0)
         self.q2_a1 = q2.answers.create(user=u0)
         self.q1_a2 = q1.answers.create(user=u0)
@@ -286,16 +286,36 @@ class CustomOrderFieldTest(TestCase):
         self.assertNames(['3', '1', '4'])
 
 
-admin.site.register(Item, OrderedModelAdmin)
-
 class OrderedModelAdminTest(TestCase):
+    def setUp(self):
+        user = User.objects.create_superuser("admin", "a at example.com", "admin")
+        self.assertTrue(self.client.login(username="admin", password="admin"))
+        item1 = Item.objects.create(name='item1')
+        item2 = Item.objects.create(name='item2')
+
     def test_move_up_down_links(self):
-        item = Item.objects.create(name='foo')
-        s = admin.site._registry[Item].move_up_down_links(item)
-        self.assertIn('/admin/tests/item/1/move-up/', s)
-        self.assertIn('/admin/tests/item/1/move-down/', s)
+        res = self.client.get("/admin/tests/item/")
+        self.assertEqual(res.status_code, 200)
+        self.assertIn('/admin/tests/item/1/move-up/', str(res.content))
+        self.assertIn('/admin/tests/item/1/move-down/', str(res.content))
+
+    def test_move_down(self):
+        self.assertEqual(Item.objects.get(name="item1").order, 0)
+        self.assertEqual(Item.objects.get(name="item2").order, 1)
+        res = self.client.get("/admin/tests/item/1/move-down/")
+        self.assertRedirects(res, "/admin/tests/item/")
+        self.assertEqual(Item.objects.get(name="item1").order, 1)
+        self.assertEqual(Item.objects.get(name="item2").order, 0)
+
+    def test_move_up(self):
+        self.assertEqual(Item.objects.get(name="item1").order, 0)
+        self.assertEqual(Item.objects.get(name="item2").order, 1)
+        res = self.client.get("/admin/tests/item/2/move-up/")
+        self.assertRedirects(res, "/admin/tests/item/")
+        self.assertEqual(Item.objects.get(name="item1").order, 1)
+        self.assertEqual(Item.objects.get(name="item2").order, 0)
+
 
-        
 class OrderWithRespectToTestsManyToMany(TestCase):
     def setUp(self):
         self.t1 = Topping.objects.create(name='tomatoe')
@@ -396,8 +416,8 @@ class MultiOrderWithRespectToTests(TestCase):
     def setUp(self):
         q1 = Question.objects.create()
         q2 = Question.objects.create()
-        u1 = User.objects.create()
-        u2 = User.objects.create()
+        u1 = TestUser.objects.create()
+        u2 = TestUser.objects.create()
         self.q1_u1_a1 = q1.answers.create(user=u1)
         self.q2_u1_a1 = q2.answers.create(user=u1)
         self.q1_u1_a2 = q1.answers.create(user=u1)
diff --git a/setup.py b/setup.py
index 3bc38f3..7af3bbd 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,7 @@ from distutils.core import setup
  
 setup(
     name='django-ordered-model',
-    version='1.2.0',
+    version='1.2.1',
     description='Allows Django models to be ordered and provides a simple admin interface for reordering them.',
     author='Ben Firshman',
     author_email='ben at firshman.co.uk',

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-django-ordered-model.git



More information about the Python-modules-commits mailing list