Skip to content

Commit

Permalink
Rename module_name to model_name
Browse files Browse the repository at this point in the history
Also add support for Django 1.8
  • Loading branch information
bfirsh committed Apr 6, 2015
1 parent e5de590 commit a5c5d43
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 17 deletions.
3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,14 @@ env:
- DJANGO="Django>=1.5,<1.6"
- DJANGO="Django>=1.6,<1.7"
- DJANGO="Django>=1.7,<1.8"
- DJANGO="Django>=1.8,<1.9"

matrix:
exclude:
- python: "2.6"
env: DJANGO="Django>=1.7,<1.8"
- python: "2.6"
env: DJANGO="Django>=1.8,<1.9"

# command to install dependencies
install: pip install $DJANGO --use-mirrors
Expand Down
40 changes: 25 additions & 15 deletions ordered_model/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,14 @@
from django.utils.translation import ugettext_lazy as _
from django.template.loader import render_to_string
from django.contrib import admin
from django.contrib.admin.util import unquote
try:
from django.contrib.admin.utils import unquote
except ImportError:
from django.contrib.admin.util import unquote
from django.contrib.admin.views.main import ChangeList


class OrderedModelAdmin(admin.ModelAdmin):

def get_model_info(self):
return dict(app=self.model._meta.app_label,
model=self.model._meta.module_name)

def get_urls(self):
from django.conf.urls import patterns, url

Expand All @@ -26,12 +24,12 @@ def wrapper(*args, **kwargs):
return self.admin_site.admin_view(view)(*args, **kwargs)
return update_wrapper(wrapper, view)
return patterns('',
url(r'^(.+)/move-(up)/$', wrap(self.move_view),
name='{app}_{model}_order_up'.format(**self.get_model_info())),
url(r'^(.+)/move-(up)/$', wrap(self.move_view),
name='{app}_{model}_order_up'.format(**self._get_model_info())),

url(r'^(.+)/move-(down)/$', wrap(self.move_view),
name='{app}_{model}_order_down'.format(**self.get_model_info())),
) + super(OrderedModelAdmin, self).get_urls()
url(r'^(.+)/move-(down)/$', wrap(self.move_view),
name='{app}_{model}_order_down'.format(**self._get_model_info())),
) + super(OrderedModelAdmin, self).get_urls()

def _get_changelist(self, request):
list_display = self.get_list_display(request)
Expand Down Expand Up @@ -62,15 +60,27 @@ def move_view(self, request, object_id, direction):
return HttpResponseRedirect('../../%s' % self.request_query_string)

def move_up_down_links(self, obj):
model_info = self._get_model_info()
return render_to_string("ordered_model/admin/order_controls.html", {
'app_label': self.model._meta.app_label,
'module_name': self.model._meta.module_name,
'app_label': model_info['app'],
'module_name': model_info['model'],
'object_id': obj.id,
'urls': {
'up': reverse("admin:{app}_{model}_order_up".format(**self.get_model_info()), args=[obj.id, 'up']),
'down': reverse("admin:{app}_{model}_order_down".format(**self.get_model_info()), args=[obj.id, 'down']),
'up': reverse("admin:{app}_{model}_order_up".format(**model_info), args=[obj.id, 'up']),
'down': reverse("admin:{app}_{model}_order_down".format(**model_info), args=[obj.id, 'down']),
},
'query_string': self.request_query_string
})
move_up_down_links.allow_tags = True
move_up_down_links.short_description = _(u'Move')

def _get_model_info(self):
# module_name was renamed to model_name in Django 1.7
if hasattr(self.model._meta, 'model_name'):
model = self.model._meta.model_name
else:
model = self.model._meta.module_name
return {
'app': self.model._meta.app_label,
'model': model
}
8 changes: 8 additions & 0 deletions ordered_model/tests/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,11 @@
'ordered_model.tests',
]
SECRET_KEY = 'topsecret'
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
11 changes: 11 additions & 0 deletions ordered_model/tests/tests.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from django.contrib import admin
from django.test import TestCase
from ordered_model.admin import OrderedModelAdmin
from ordered_model.tests.models import Answer, Item, Question, CustomItem
import uuid

Expand Down Expand Up @@ -188,3 +190,12 @@ def test_saved_order(self):
(self.item4.pk, 3)
]
)

admin.site.register(Item, OrderedModelAdmin)

class OrderedModelAdminTest(TestCase):
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)
9 changes: 8 additions & 1 deletion ordered_model/tests/urls.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
from django.conf.urls.defaults import *
try:
from django.conf.urls.defaults import *
except ImportError:
from django.conf.urls import *
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),
)
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Django<1.8
Django

0 comments on commit a5c5d43

Please sign in to comment.