Как заставить работать групповые разрешения в Django-nonrel для Google App Engine

Я пытаюсь получить разрешения на основе ролей работает для django-nonrel для GAE.

По умолчанию это не работало, вероятно, из-за неявной связи «многие ко многим» между пользователями и группами, поэтому я нашел и установил http: //www.fhahn.com/writing/Django-s-Permission-System-with-Django-Nonrel. Согласно документации, я добавил permission_backend_nonrel в INSTALLED_APPS (после djangotoolbox) и определил AUTHENTICATION_BACKENDS для соответствующего класса в настройках .py.

Это решает предыдущую проблему («DatabaseError: этот запрос не поддерживается базой данных.»), Но я все еще застрял, потому что, когда я запускаю очень простой образец, я получаю пустой набор разрешений, когда я считаю, что мне нужно что-то получить обратно. Ниже приведен самый простой пример, который я мог бы привести. Он запускается во фреймворке django оболочкой python manage.py - это простой магазин пони. Я пытаюсь добавить пользователя в группу, дать этой группе разрешения, а затем увидеть, что эти разрешения отражены как часть набора разрешений, которые есть у пользователя:

>>> from django.contrib.auth.models import Group, Permission, User
>>> from django.contrib.contenttypes.models import ContentType
>>> from pony_shop.models import Pony

#Create the group:
>>> farmers = Group(name="Farmers")
>>> farmers.save()

>>> pony_ct = ContentType.objects.get(app_label='pony_shop', model='pony')

#Create the Permission
>>> can_twirl = Permission(name='Can Twirl', codename='can_twirl', content_type=pony_ct)
>>> can_twirl.save()

#Give the Permission to the Group
>>> farmers.permissions.add(can_twirl)
>>> farmers.save()

#Create the User
>>> francis = User(username='francis')
>>> francis.save()

#Put the user in the group
>>> francis.groups.add(farmers)
>>> francis.save()

#Get a pony object
>>> firefly = Pony(price=12, height=3, name='Firefly', color='fuscia')
>>> firefly.save()

>>> francis.get_all_permissions()
set([]) #<-- WHY?!?

#Just in case I needed to check the permissions against a pony object:
>>> francis.get_all_permissions(obj=firefly)
set([]) #<-- Still no joy

Итак, вопрос: почему вышеуказанное не работает , и что мне нужно изменить, чтобы он заработал?

Заранее благодарим за помощь!

5
задан AC Capehart 13 July 2011 в 13:11
поделиться