Skip to content

Commit

Permalink
Add isort and flake8 tools.
Browse files Browse the repository at this point in the history
  • Loading branch information
lefterisnik committed Jan 23, 2017
1 parent e4b982b commit 879b969
Show file tree
Hide file tree
Showing 16 changed files with 163 additions and 145 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ install:

# run tests
script:
- flake8 .
- isort -c -df
- PYTHONPATH=`pwd` py.test --cov-report html --cov=admin_view_permission -v tests/

# report coverage to coveralls.io
Expand Down
49 changes: 26 additions & 23 deletions admin_view_permission/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,18 @@

from django.apps import apps
from django.conf import settings
from django.conf.urls import url
from django.contrib import admin
from django.utils.text import capfirst
from django.utils.encoding import force_text
from django.contrib.admin.utils import unquote
from django.contrib.admin.views.main import ChangeList
from django.contrib.auth import get_permission_codename
from django.contrib.admin.utils import unquote, quote
from django.core.urlresolvers import NoReverseMatch, reverse
from django.core.exceptions import PermissionDenied
from django.contrib.admin.views.main import ChangeList
from django.core.urlresolvers import NoReverseMatch, reverse
from django.utils.encoding import force_text
from django.utils.text import capfirst
from django.utils.translation import ugettext as _

from .utils import django_version
from .enums import DjangoVersion
from .utils import django_version


class AdminViewPermissionChangeList(ChangeList):
Expand Down Expand Up @@ -100,12 +99,16 @@ def get_readonly_fields(self, request, obj=None):
readonly_fields = super(AdminViewPermissionBaseModelAdmin,
self).get_readonly_fields(request, obj)

if self.has_view_permission(request, obj) and \
not self.has_change_permission(request, obj, True):
if (self.has_view_permission(request, obj) and
not self.has_change_permission(request, obj, True)):

readonly_fields = list(readonly_fields) + \
[ field.name for field in self.opts.local_fields if field.editable ] + \
[ field.name for field in self.opts.local_many_to_many if field.editable ]
readonly_fields = (
list(readonly_fields) +
[field.name for field in self.opts.local_fields
if field.editable] +
[field.name for field in self.opts.local_many_to_many
if field.editable]
)

# Try to remove id if user have not specify fields and
# readonly fields
Expand Down Expand Up @@ -160,7 +163,8 @@ def get_queryset(self, request):
return False'''


class AdminViewPermissionModelAdmin(AdminViewPermissionBaseModelAdmin, admin.ModelAdmin):
class AdminViewPermissionModelAdmin(AdminViewPermissionBaseModelAdmin,
admin.ModelAdmin):
def __init__(self, model, admin_site):
super(AdminViewPermissionModelAdmin, self).__init__(model, admin_site)
# Contibute this class to the model
Expand Down Expand Up @@ -225,19 +229,18 @@ def change_view(self, request, object_id, form_url='', extra_context=None):
extra_context['show_save_and_continue'] = True
break

return super(AdminViewPermissionModelAdmin, self).change_view(request,
object_id,
form_url,
extra_context)
return super(AdminViewPermissionModelAdmin, self).change_view(
request, object_id, form_url, extra_context)


class AdminViewPermissionAdminSite(admin.AdminSite):
def register(self, model_or_iterable, admin_class=None, **options):
"""
Create a new ModelAdmin class which inherits from the original and the above and register
all models with that
Create a new ModelAdmin class which inherits from the original and
the above and register all models with that
"""
SETTINGS_MODELS = getattr(settings, 'ADMIN_VIEW_PERMISSION_MODELS', None)
SETTINGS_MODELS = getattr(settings, 'ADMIN_VIEW_PERMISSION_MODELS',
None)

models = model_or_iterable
if not isinstance(model_or_iterable, tuple):
Expand All @@ -247,8 +250,8 @@ def register(self, model_or_iterable, admin_class=None, **options):
SETTINGS_MODELS) == 0):
for model in models:
if django_version() == DjangoVersion.DJANGO_18:
model_name = '%s.%s' %(model._meta.app_label,
model._meta.object_name)
model_name = '%s.%s' % (model._meta.app_label,
model._meta.object_name)
elif django_version() > DjangoVersion.DJANGO_18:
model_name = model._meta.label

Expand Down Expand Up @@ -289,7 +292,7 @@ def _build_app_dict(self, request, label=None):
models = {
m: m_a for m, m_a in self._registry.items()
if m._meta.app_label == label
}
}
else:
models = self._registry

Expand Down
15 changes: 8 additions & 7 deletions admin_view_permission/apps.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
from __future__ import unicode_literals

from django.apps import apps as global_apps
from django.apps import AppConfig
from django.conf import settings
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
from .utils import django_version


def update_permissions(sender, app_config, verbosity, apps=global_apps, **kwargs):
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
Expand All @@ -22,8 +23,8 @@ def update_permissions(sender, app_config, verbosity, apps=global_apps, **kwargs
settings_models) == 0):

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

Expand All @@ -34,7 +35,7 @@ def update_permissions(sender, app_config, verbosity, apps=global_apps, **kwargs
'Can view %s' % model._meta.model_name),)
else:
if view_permission not in [perm[0] for perm in
model._meta.permissions]:
model._meta.permissions]:
model._meta.permissions += (
('view_%s' % model._meta.model_name,
'Can view %s' % model._meta.model_name),)
Expand Down
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, DJANGO_110 = range(0,3)
DJANGO_18, DJANGO_19, DJANGO_110 = range(0, 3)
4 changes: 4 additions & 0 deletions requirements-debug.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
-r requirements.txt

# Style tools
flake8
flake8-isort

# Tools
ipdb

Expand Down
8 changes: 8 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[flake8]
ignore = F405
exclude = env,docs

[isort]
skip=env
include_trailing_comma=true
multi_line_output=3
5 changes: 3 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os

from setuptools import setup

with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme:
Expand All @@ -15,7 +16,7 @@
license='BSD License',
description='A simple Django app which adds view permissions.',
long_description=README,
keywords = ['django', 'admin'],
keywords=['django', 'admin'],
url='http://django-admin-view-permission.readthedocs.org/',
classifiers=[
'Development Status :: 5 - Production/Stable',
Expand All @@ -35,4 +36,4 @@
install_requires=[
'Django>=1.8'
],
)
)
3 changes: 0 additions & 3 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from __future__ import unicode_literals

import pytest

from django.core.urlresolvers import reverse


Expand All @@ -17,5 +16,3 @@ def _django_request(cls, user):
return fixture_request

request.cls.django_request = _django_request


24 changes: 14 additions & 10 deletions tests/helpers.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
from __future__ import unicode_literals

import django
from django.test import TestCase, Client
from django.contrib.auth.models import Permission
from django.contrib.auth import get_user_model
from django.contrib import admin

from .test_app.admin import ModelAdmin1, ModelAdmin2, InlineModelAdmin1, \
InlineModelAdmin2
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Permission
from django.test import Client, TestCase

from .test_app.admin import (
InlineModelAdmin1,
InlineModelAdmin2,
ModelAdmin1,
ModelAdmin2,
)
from .test_app.models import TestModel0, TestModel1, TestModel5


Expand Down Expand Up @@ -99,8 +102,10 @@ class AdminViewPermissionInlinesTestCase(AdminViewPermissionTestCase):
def setUp(self):
# Refresh assigned_modeladmin attribute
self.modeladmin_testmodel2 = ModelAdmin2(TestModel1, admin.site)
self.inlinemodeladmin_testmodel4 = InlineModelAdmin1(TestModel1, admin.site)
self.inlinemodeladmin_testmodel6 = InlineModelAdmin2(TestModel1, admin.site)
self.inlinemodeladmin_testmodel4 = InlineModelAdmin1(
TestModel1, admin.site)
self.inlinemodeladmin_testmodel6 = InlineModelAdmin2(
TestModel1, admin.site)


class AdminViewPermissionViewsTestCase(BaseTestCase):
Expand All @@ -114,4 +119,3 @@ def setUp(self):

def tearDown(self):
self.client.logout()

17 changes: 2 additions & 15 deletions tests/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,20 +84,7 @@
# Password validation
# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
AUTH_PASSWORD_VALIDATORS = []


# Internationalization
Expand All @@ -117,4 +104,4 @@
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/

STATIC_URL = '/static/'
STATIC_URL = '/static/'
Loading

0 comments on commit 879b969

Please sign in to comment.