Skip to content

Commit 759a35b

Browse files
committed
Django 2.0 support
1 parent eefe44c commit 759a35b

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

fluent_dashboard/items.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,18 @@
44
import django
55
from admin_tools.menu import items
66
from django.contrib.contenttypes.models import ContentType
7-
from django.core import urlresolvers
87
from django.core.exceptions import ObjectDoesNotExist
98
from django.template.defaultfilters import capfirst
109
from django.utils.translation import ugettext as _
1110
from fluent_dashboard.appgroups import sort_cms_models
1211
from fluent_dashboard.compat import get_meta_model_name
1312
import re
1413

14+
try:
15+
from django import urls # Django 1.10+
16+
except ImportError:
17+
from django.core import urlresolvers as urls
18+
1519
RE_CHANGE_URL = re.compile("(.+)_([^_]+)_change")
1620

1721

@@ -89,7 +93,7 @@ def init_with_context(self, context):
8993
if edited_model:
9094
try:
9195
url = edited_model.get_absolute_url()
92-
except (AttributeError, urlresolvers.NoReverseMatch) as e:
96+
except (AttributeError, urls.NoReverseMatch) as e:
9397
pass
9498
else:
9599
if url:
@@ -100,7 +104,7 @@ def get_edited_object(self, request):
100104
Return the object which is currently being edited.
101105
Returns ``None`` if the match could not be made.
102106
"""
103-
resolvermatch = urlresolvers.resolve(request.path_info)
107+
resolvermatch = urls.resolve(request.path_info)
104108
if resolvermatch.namespace == 'admin' and resolvermatch.url_name and resolvermatch.url_name.endswith('_change'):
105109
# In "appname_modelname_change" view of the admin.
106110
# Extract the appname and model from the url name.
@@ -109,7 +113,12 @@ def get_edited_object(self, request):
109113
if not match:
110114
return None
111115

112-
object_id = resolvermatch.args[0] # Can be string (e.g. a country code as PK).
116+
# object_id can be string (e.g. a country code as PK).
117+
try:
118+
object_id = resolvermatch.kwargs['object_id'] # Django 2.0+
119+
except KeyError:
120+
object_id = resolvermatch.args[0]
121+
113122
return self.get_object_by_natural_key(match.group(1), match.group(2), object_id)
114123
return None
115124

fluent_dashboard/menu.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
"""
22
Custom menu for fluent_dashboard apps.
33
"""
4-
from django.core.urlresolvers import reverse
54
from django.utils.translation import ugettext_lazy as _
65
from admin_tools.menu import items, Menu
76
from admin_tools.utils import get_admin_site_name
87
from fluent_dashboard.items import CmsModelList, ReturnToSiteItem
98
from fluent_dashboard.appgroups import get_application_groups
109

10+
try:
11+
from django.urls import reverse
12+
except ImportError:
13+
from django.core.urlresolvers import reverse
14+
1115

1216
class FluentMenu(Menu):
1317
"""

fluent_dashboard/modules.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import django
1414
from django.conf import settings
1515
from django.core.exceptions import ImproperlyConfigured
16-
from django.core.urlresolvers import reverse, NoReverseMatch
1716
from django.utils.translation import ugettext as _
1817
from admin_tools.utils import get_admin_site_name
1918
from admin_tools.dashboard import modules
@@ -27,6 +26,11 @@
2726
except ImportError:
2827
from django.db.models.loading import get_model
2928

29+
try:
30+
from django.urls import reverse, NoReverseMatch # Django 1.10+
31+
except ImportError:
32+
from django.core.urlresolvers import reverse, NoReverseMatch
33+
3034
logger = logging.getLogger("fluent_dashboard.modules")
3135

3236

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def find_version(*parts):
3939
license='Apache 2.0',
4040

4141
install_requires=[
42-
'django-admin-tools>=0.5.2', # 0.5.2 has proper Django 1.5/1.6 support.
42+
'django-admin-tools>=0.5.2',
4343
'future>=0.12.2',
4444
],
4545
requires=[

0 commit comments

Comments
 (0)