Skip to content

Commit

Permalink
Support Django 1.10.
Browse files Browse the repository at this point in the history
  • Loading branch information
lefterisnik committed Oct 12, 2016
1 parent bf3cdc1 commit bf9bab3
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 33 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ python:
env:
- DJANGO=1.9
- DJANGO=1.8
- DJANGO=1.10

# install dependencies
install:
Expand Down
2 changes: 1 addition & 1 deletion admin_view_permission/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ def register(self, model_or_iterable, admin_class=None, **options):
if django_version() == DjangoVersion.DJANGO_18:
model_name = '%s.%s' %(model._meta.app_label,
model._meta.object_name)
elif django_version() == DjangoVersion.DJANGO_19:
elif django_version() > DjangoVersion.DJANGO_18:
model_name = model._meta.label

if model_name in SETTINGS_MODELS:
Expand Down
54 changes: 30 additions & 24 deletions admin_view_permission/apps.py
Original file line number Diff line number Diff line change
@@ -1,41 +1,47 @@
from __future__ import unicode_literals

from django.conf import settings
from django.apps import AppConfig, apps
from django.contrib import admin
from django.apps import AppConfig
from django.apps import apps as global_apps
from django.db.models.signals import post_migrate

from .admin import AdminViewPermissionAdminSite
from .utils import django_version
from .enums import DjangoVersion


def update_permissions(sender, app_config, verbosity, apps=global_apps, **kwargs):
settings_models = getattr(settings, 'ADMIN_VIEW_PERMISSION_MODELS', None)

# TODO: Maybe look at the registry not in all models
for app in apps.get_app_configs():
for model in app.get_models():
if settings_models or (settings_models is not None and len(
settings_models) == 0):

if django_version() == DjangoVersion.DJANGO_18:
model_name = '%s.%s' %(model._meta.app_label,
model._meta.object_name)
elif django_version() > DjangoVersion.DJANGO_18:
model_name = model._meta.label

if model_name in settings_models:
model._meta.permissions = (
('view_%s' % model._meta.model_name,
'Can view %s' % model._meta.model_name),)
else:
model._meta.permissions = (
('view_%s' % model._meta.model_name,
'Can view %s' % model._meta.model_name),)


class AdminViewPermissionConfig(AppConfig):
name = 'admin_view_permission'

def ready(self):
settings_models = getattr(settings, 'ADMIN_VIEW_PERMISSION_MODELS',
None)

if not isinstance(admin.site, AdminViewPermissionAdminSite):
admin.site = AdminViewPermissionAdminSite('admin')
admin.sites.site = admin.site

# TODO: Maybe look at the registry not in all models
for app in apps.get_app_configs():
for model in app.get_models():
if settings_models or (settings_models is not None and len(
settings_models) == 0):

if django_version() == DjangoVersion.DJANGO_18:
model_name = '%s.%s' %(model._meta.app_label,
model._meta.object_name)
elif django_version() == DjangoVersion.DJANGO_19:
model_name = model._meta.label

if model_name in settings_models:
model._meta.permissions = (
('view_%s' % model._meta.model_name,
'Can view %s' % model._meta.model_name),)
else:
model._meta.permissions = (
('view_%s' % model._meta.model_name,
'Can view %s' % model._meta.model_name),)
post_migrate.connect(update_permissions)
2 changes: 1 addition & 1 deletion admin_view_permission/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@


class DjangoVersion(object):
DJANGO_18, DJANGO_19 = range(0,2)
DJANGO_18, DJANGO_19, DJANGO_110 = range(0,3)
2 changes: 2 additions & 0 deletions admin_view_permission/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ def django_version():
return DjangoVersion.DJANGO_19
elif django.get_version().startswith('1.8'):
return DjangoVersion.DJANGO_18
elif django.get_version().startswith('1.10'):
return DjangoVersion.DJANGO_110
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Django>=1.8,<1.10
Django>=1.8
8 changes: 2 additions & 6 deletions tests/test_apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from django.db import models


class TestAdminViewPermissionConfig(SimpleTestCase):
'''class TestAdminViewPermissionConfig(SimpleTestCase):
def setUp(self):
attrs = {
'__module__': 'tests.test_app.models',
Expand All @@ -17,33 +17,29 @@ def setUp(self):
self.model2 = type(str('AppTestModel2'), (models.Model, ),
attrs.copy())

@override_settings(ADMIN_VIEW_PERMISSION_MODELS=['test_app.AppTestModel1', ])
def test_ready_with_one_model(self):
self.appconfig.ready()
self.assertEqual(self.model1._meta.permissions,
(('view_apptestmodel1', 'Can view apptestmodel1'),))
self.assertEqual(self.model2._meta.permissions, [])

@override_settings(ADMIN_VIEW_PERMISSION_MODELS=[])
def test_ready_without_model_list(self):
self.appconfig.ready()
self.assertEqual(self.model1._meta.permissions, [])
self.assertEqual(self.model2._meta.permissions, [])

@override_settings(ADMIN_VIEW_PERMISSION_MODELS=())
def test_ready_without_model_tuple(self):
self.appconfig.ready()
self.assertEqual(self.model1._meta.permissions, [])
self.assertEqual(self.model2._meta.permissions, [])

@override_settings(ADMIN_VIEW_PERMISSION_MODELS=None)
def test_ready_with_none(self):
self.appconfig.ready()
self.assertEqual(self.model1._meta.permissions,
(('view_apptestmodel1', 'Can view apptestmodel1'),))
self.assertEqual(self.model2._meta.permissions,
(('view_apptestmodel2', 'Can view apptestmodel2'),))
(('view_apptestmodel2', 'Can view apptestmodel2'),))'''

0 comments on commit bf9bab3

Please sign in to comment.