Skip to content

Commit

Permalink
Merge pull request #52 from GregLeBarbar/django_1_10
Browse files Browse the repository at this point in the history
Django 1.10
  • Loading branch information
Asif Saifuddin Auvi committed Jan 8, 2017
2 parents 74137a5 + 6fad04f commit 14b92a0
Show file tree
Hide file tree
Showing 11 changed files with 64 additions and 54 deletions.
23 changes: 2 additions & 21 deletions authority/__init__.py
@@ -1,8 +1,3 @@
import sys

from authority.sites import site, get_check, get_choices_for, register, unregister # noqa


LOADING = False


Expand All @@ -16,19 +11,5 @@ def autodiscover():
return
LOADING = True

import imp
from django.conf import settings

for app in settings.INSTALLED_APPS:
try:
__import__(app)
app_path = sys.modules[app].__path__
except AttributeError:
continue
try:
imp.find_module('permissions', app_path)
except ImportError:
continue
__import__("%s.permissions" % app)
app_path = sys.modules["%s.permissions" % app]
LOADING = False
from authority import utils
utils.autodiscover_modules()
9 changes: 4 additions & 5 deletions authority/admin.py
Expand Up @@ -6,7 +6,7 @@
from django.forms.formsets import all_valid
from django.contrib import admin
from django.contrib.admin import helpers
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.admin import GenericTabularInline
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import PermissionDenied

Expand All @@ -22,10 +22,10 @@

from authority.models import Permission
from authority.widgets import GenericForeignKeyRawIdWidget
from authority import get_choices_for
from authority.utils import get_choices_for


class PermissionInline(generic.GenericTabularInline):
class PermissionInline(GenericTabularInline):
model = Permission
raw_id_fields = ('user', 'group', 'creator')
extra = 1
Expand Down Expand Up @@ -122,8 +122,7 @@ def edit_permissions(modeladmin, request, queryset):
"admin/%s/permission_change_form.html" % app_label,
"admin/permission_change_form.html"
])
return render_to_response(template_name, context,
context_instance=template.RequestContext(request))
return render_to_response(template_name, context, request)
edit_permissions.short_description = _("Edit permissions for selected %(verbose_name_plural)s")


Expand Down
7 changes: 4 additions & 3 deletions authority/decorators.py
Expand Up @@ -2,12 +2,13 @@
from django.http import HttpResponseRedirect
from django.utils.http import urlquote
from django.utils.functional import wraps
from django.db.models import Model, get_model
from django.db.models import Model
from django.apps import apps
from django.shortcuts import get_object_or_404
from django.conf import settings
from django.contrib.auth import REDIRECT_FIELD_NAME

from authority import get_check
from authority.utils import get_check
from authority.views import permission_denied


Expand Down Expand Up @@ -36,7 +37,7 @@ def decorated(request, *args, **kwargs):
if value is None:
continue
if isinstance(model, basestring):
model_class = get_model(*model.split("."))
model_class = apps.get_model(*model.split("."))
else:
model_class = model
if model_class is None:
Expand Down
3 changes: 2 additions & 1 deletion authority/forms.py
Expand Up @@ -4,7 +4,8 @@
from django.contrib.auth.models import Group
from django.utils.safestring import mark_safe

from authority import permissions, get_choices_for
from authority import permissions
from authority.utils import get_choices_for
from authority.models import Permission
from authority.compat import get_user_model

Expand Down
4 changes: 2 additions & 2 deletions authority/models.py
@@ -1,7 +1,7 @@
from datetime import datetime
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.auth.models import Group
from django.utils.translation import ugettext_lazy as _

Expand All @@ -18,7 +18,7 @@ class Permission(models.Model):
codename = models.CharField(_('codename'), max_length=100)
content_type = models.ForeignKey(ContentType, related_name="row_permissions")
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
content_object = GenericForeignKey('content_type', 'object_id')

user = models.ForeignKey(
user_model_label, null=True, blank=True, related_name='granted_permissions')
Expand Down
6 changes: 3 additions & 3 deletions authority/templatetags/permissions.py
Expand Up @@ -3,7 +3,7 @@
from django.core.urlresolvers import reverse
from django.contrib.auth.models import AnonymousUser

from authority import get_check
from authority.utils import get_check
from authority import permissions
from authority.compat import get_user_model
from authority.models import Permission
Expand Down Expand Up @@ -190,8 +190,8 @@ def render(self, context):
approved=self.approved,
initial=dict(codename=perm, user=request.user.username)),
}
return template.loader.render_to_string(
template_name, extra_context, context_instance=template.RequestContext(request))
return template.loader.render_to_string(template_name, extra_context,
request)


@register.tag
Expand Down
4 changes: 2 additions & 2 deletions authority/tests.py
Expand Up @@ -22,13 +22,13 @@
class UserPermission(permissions.BasePermission):
checks = ('browse',)
label = 'user_permission'
authority.register(User, UserPermission)
authority.utils.register(User, UserPermission)


class GroupPermission(permissions.BasePermission):
checks = ('browse',)
label = 'group_permission'
authority.register(Group, GroupPermission)
authority.utils.register(Group, GroupPermission)


class DjangoPermissionChecksTestCase(TestCase):
Expand Down
20 changes: 11 additions & 9 deletions authority/urls.py
@@ -1,24 +1,26 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
from authority.views import add_permission, delete_permission, approve_permission_request, \
delete_permission

urlpatterns = patterns(
'authority.views',

urlpatterns = [
url(r'^permission/add/(?P<app_label>[\w\-]+)/(?P<module_name>[\w\-]+)/(?P<pk>\d+)/$',
view='add_permission',
view=add_permission,
name="authority-add-permission",
kwargs={'approved': True}),
url(r'^permission/delete/(?P<permission_pk>\d+)/$',
view='delete_permission',
view=delete_permission,
name="authority-delete-permission",
kwargs={'approved': True}),
url(r'^request/add/(?P<app_label>[\w\-]+)/(?P<module_name>[\w\-]+)/(?P<pk>\d+)/$',
view='add_permission',
view=add_permission,
name="authority-add-permission-request",
kwargs={'approved': False}),
url(r'^request/approve/(?P<permission_pk>\d+)/$',
view='approve_permission_request',
view=approve_permission_request,
name="authority-approve-permission-request"),
url(r'^request/delete/(?P<permission_pk>\d+)/$',
view='delete_permission',
view=delete_permission,
name="authority-delete-permission-request",
kwargs={'approved': False}),
)
]
26 changes: 26 additions & 0 deletions authority/utils.py
@@ -0,0 +1,26 @@
import sys

from authority.sites import site, get_check, get_choices_for, register, unregister # noqa


def autodiscover_modules():
"""
Goes and imports the permissions submodule of every app in INSTALLED_APPS
to make sure the permission set classes are registered correctly.
"""
import imp
from django.conf import settings

for app in settings.INSTALLED_APPS:
try:
__import__(app)
app_path = sys.modules[app].__path__
except AttributeError:
continue
try:
imp.find_module('permissions', app_path)
except ImportError:
continue
__import__("%s.permissions" % app)
app_path = sys.modules["%s.permissions" % app]
LOADING = False
12 changes: 5 additions & 7 deletions authority/views.py
@@ -1,8 +1,7 @@
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponseRedirect, HttpResponseForbidden
from django.db.models.loading import get_model
from django.apps import apps
from django.utils.translation import ugettext as _
from django.template.context import RequestContext
from django.template import loader
from django.contrib.auth.decorators import login_required

Expand All @@ -26,7 +25,7 @@ def add_permission(request, app_label, module_name, pk, approved=False,
template_name='authority/permission_form.html',
extra_context=None, form_class=UserPermissionForm):
codename = request.POST.get('codename', None)
model = get_model(app_label, module_name)
model = apps.get_model(app_label, module_name)
if model is None:
return permission_denied(request)
obj = get_object_or_404(model, pk=pk)
Expand Down Expand Up @@ -63,8 +62,7 @@ def add_permission(request, app_label, module_name, pk, approved=False,
}
if extra_context:
context.update(extra_context)
return render_to_response(template_name, context,
context_instance=RequestContext(request))
return render_to_response(template_name, context, request)


@login_required
Expand Down Expand Up @@ -110,5 +108,5 @@ def permission_denied(request, template_name=None, extra_context=None):
}
if extra_context:
context.update(extra_context)
return HttpResponseForbidden(loader.render_to_string(template_name, context,
context_instance=RequestContext(request)))
return HttpResponseForbidden(loader.render_to_string(template_name,
context, request))
4 changes: 3 additions & 1 deletion tox.ini
Expand Up @@ -3,7 +3,7 @@ skipsdist = True
usedevelop = True
minversion = 1.8
envlist =
py{27,33,34,35}-dj18
py{27,33,34,35}-dj{18,19,110}

[testenv]
basepython =
Expand All @@ -15,3 +15,5 @@ usedevelop = true
commands = python example/manage.py test authority
deps =
dj18: Django<1.9
dj19: Django<1.10
dj110: Django<1.11

0 comments on commit 14b92a0

Please sign in to comment.