Beispiel #1
0
 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)
Beispiel #2
0
        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)
Beispiel #3
0
            '',
            # 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)
Beispiel #4
0
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)