diff --git a/.gitignore b/.gitignore index 96d3622..d0596e1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.egg-info *.sql docs/build/* +.DS_Store \ No newline at end of file diff --git a/authority/forms.py b/authority/forms.py index 57f9177..6d3a8f9 100644 --- a/authority/forms.py +++ b/authority/forms.py @@ -1,11 +1,16 @@ from django import forms from django.utils.translation import ugettext_lazy as _ from django.contrib.contenttypes.models import ContentType -from django.contrib.auth.models import User, Group +from django.contrib.auth.models import Group from django.utils.safestring import mark_safe from authority import permissions, get_choices_for from authority.models import Permission +from authority.utils import get_user_class + + +User = get_user_class() + class BasePermissionForm(forms.ModelForm): codename = forms.CharField(label=_('Permission')) diff --git a/authority/models.py b/authority/models.py index 1398971..3091f2f 100644 --- a/authority/models.py +++ b/authority/models.py @@ -1,4 +1,5 @@ from datetime import datetime +from django.conf import settings from django.db import models from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic @@ -7,6 +8,10 @@ from django.utils.translation import ugettext_lazy as _ from authority.managers import PermissionManager + +USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User') + + class Permission(models.Model): """ A granular permission model, per-object permission in other words. @@ -18,9 +23,9 @@ class Permission(models.Model): object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey('content_type', 'object_id') - user = models.ForeignKey(User, null=True, blank=True, related_name='granted_permissions') + user = models.ForeignKey(USER_MODEL, null=True, blank=True, related_name='granted_permissions') group = models.ForeignKey(Group, null=True, blank=True) - creator = models.ForeignKey(User, null=True, blank=True, related_name='created_permissions') + creator = models.ForeignKey(USER_MODEL, null=True, blank=True, related_name='created_permissions') approved = models.BooleanField(_('approved'), default=False, help_text=_("Designates whether the permission has been approved and treated as active. Unselect this instead of deleting permissions.")) diff --git a/authority/templatetags/permissions.py b/authority/templatetags/permissions.py index ffe37a8..e93d1e0 100644 --- a/authority/templatetags/permissions.py +++ b/authority/templatetags/permissions.py @@ -1,16 +1,21 @@ from django import template from django.core.urlresolvers import reverse from django.core.exceptions import ImproperlyConfigured -from django.contrib.auth.models import User, AnonymousUser +from django.contrib.auth.models import AnonymousUser from django.core.urlresolvers import reverse from authority import get_check from authority import permissions from authority.models import Permission from authority.forms import UserPermissionForm +from authority.utils import get_user_class + register = template.Library() +User = get_user_class() + + @register.simple_tag def url_for_obj(view_name, obj): return reverse(view_name, kwargs={ diff --git a/authority/tests.py b/authority/tests.py index 182a854..bddee05 100644 --- a/authority/tests.py +++ b/authority/tests.py @@ -1,6 +1,6 @@ from django.conf import settings from django.contrib.auth.models import Permission as DjangoPermission -from django.contrib.auth.models import User, Group +from django.contrib.auth.models import Group from django.test import TestCase from django.contrib.contenttypes.models import ContentType @@ -8,6 +8,10 @@ import authority from authority import permissions from authority.models import Permission from authority.exceptions import NotAModel, UnsavedModelInstance +from authority.utils import get_user_class + + +User = get_user_class() class UserPermission(permissions.BasePermission): diff --git a/authority/utils.py b/authority/utils.py new file mode 100644 index 0000000..f38f0c5 --- /dev/null +++ b/authority/utils.py @@ -0,0 +1,8 @@ +from django.contrib import auth + + +def get_user_class(): + if hasattr(auth, "get_user_model"): + return auth.get_user_model() + else: + return auth.models.User \ No newline at end of file