вторник, 9 февраля 2010 г.

Права на объекты в django

Недавно в django появилась возможность делать права на отдельные объекты.
Пример:
Нам надо, определять - имеет ли пользователь право читать данный объект. В backends.py делаем:

class ReaderBackend(object):

supports_object_permissions = True

def has_perm(self, user, perm='r', obj=None):
if obj.is_reader(user):
return True
return False

def authenticate(self):
pass

, где параметр supports_object_permissions = True как раз определяет поддержку прав на объекты

Во views.py:

@login_required
def tasks_list_by_tag(request, project_slug, tag_id):

project = get_object_or_404(Project, slug=project_slug)
if not request.user.has_perm('r', project):
return HttpResponseRedirect(project.get_noaccess_url())
...


В settings.py:

AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'backends.ReaderBackend',
...
)

Комментариев нет:

Отправить комментарий