[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