def test_required_baya_groups_repeats(self): """Repeated roles should only be shown once.""" admins = [] role = g('A') # Mock model admins, each with the same required role for i in range(5): model = MagicMock(_meta=MagicMock(app_label='%s' % i)) model_opts = MagicMock(_gate=MagicMock(_gate=MagicMock())) model_opts._gate.get_requires = role admins.append((model, model_opts)) with mock.patch.object(NestedGroupsAdminSite, '_get_admins_with_gate', return_value=admins): site = NestedGroupsAdminSite() required_groups = site._get_required_baya_groups() exp = g('A') self.assertEqual(required_groups, exp)
urls = super(BlagOptions, self).get_urls() my_urls = patterns( '', # Just having B isn't enough to access this URL, because you still # need the GET permission from the class definition. url(r'^list/$', requires(B)(self.list_of_blags), name='list'), ) return my_urls + urls def list_of_blags(self, request): blags = Blag.objects.all() return render(request, 'tests/blag_list.html', {'object_list': blags}) class BlagEntryOptions(BayaModelAdmin): CREATE = A class CommentOptions(BayaModelAdmin): CREATE = A READ = AA | B UPDATE = AA DELETE = DENY_ALL site = NestedGroupsAdminSite(name='example') site.register(PhotoBlagEntry, UnprotectedPhotoBlagEntryOptions) site.register(Blag, BlagOptions) site.register(BlagEntry, requires(AA)(BlagEntryOptions)) site.register(Comment, CommentOptions)
'', # Just having B isn't enough to access this URL, because you still # need the GET permission from the class definition. url(r'^list/$', requires(B)(self.list_of_blags), name='list'), ) return my_urls + urls def list_of_blags(self, request): blags = Blag.objects.all() return render(request, 'tests/blag_list.html', {'object_list': blags}) class BlagEntryOptions(BayaModelAdmin): CREATE = A class CommentOptions(BayaModelAdmin): CREATE = A READ = AA | B UPDATE = AA DELETE = DENY_ALL site = NestedGroupsAdminSite(name='example') site.register(PhotoBlagEntry, UnprotectedPhotoBlagEntryOptions) site.register(Blag, BlagOptions) site.register(BlagEntry, requires(AA)(BlagEntryOptions)) site.register(Comment, CommentOptions)
from baya.admin import BayaModelAdmin from baya.admin.sites import NestedGroupsAdminSite from baya.permissions import DENY_ALL from ..admin import A from ..admin import AA from ..admin import B from .models import SomethingElse class SomethingElseOptions(BayaModelAdmin): CREATE = A READ = AA | B UPDATE = AA DELETE = DENY_ALL site = NestedGroupsAdminSite(name='sub-admin') site.register(SomethingElse, SomethingElseOptions)