Skip to content

Instantly share code, notes, and snippets.

@Natim
Created April 19, 2012 15:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Natim/2421818 to your computer and use it in GitHub Desktop.
Save Natim/2421818 to your computer and use it in GitHub Desktop.
ObjectPermission in Django
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import User, AnonymousUser
from django.utils.importlib import import_module
class ObjectPermissionBackend(object):
supports_object_permissions = True
supports_anonymous_user = True
supports_inactive_user = True
def authenticate(self, username, password):
return None
def has_perm(self, user_obj, perm, obj=None):
if obj:
field = getattr(obj, perm, None)
if field:
if not callable(field):
is_authorized = field
else:
is_authorized = field(user_obj)
return is_authorized
return False
from django.contrib.auth.models import User
from django.db import models
class TestObject(models.Model):
user = models.ForeignKey(User)
def edit_perm(self, user_obj):
return self.user == user_obj
AUTHENTICATION_BACKENDS = (
'backends.ObjectPermissionBackend',
'django.contrib.auth.backends.ModelBackend',
)
@maurrysonn
Copy link

Why inspect import in backends.py ? ;-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment