from __future__ import unicode_literals from django.conf.urls import url from django.contrib.auth import get_user_model from django.contrib.auth.models import Permission from django.test import Client, TestCase from model_mommy import mommy from model_mommy.recipe import seq SIMPLE_USERNAME = seq('simple_user_') SUPER_USERNAME = seq('super_user_') def create_simple_user(username=None): if not username: username = SIMPLE_USERNAME simple_user = mommy.make(get_user_model(), username=username) simple_user.set_password('simple_user') # Django 1.8 compatibility simple_user.is_staff = True simple_user.save() return simple_user def create_super_user(username=None): if not username: username = SUPER_USERNAME super_user = mommy.make( get_user_model(), username=username, is_superuser=True) super_user.set_password('super_user') # Django 1.8 compatibility super_user.is_staff = True super_user.save() return super_user def create_urlconf(admin_site): return type( str('Urlconf'), (object,), {'urlpatterns': [ url('test_admin/', admin_site.urls) ]} ) class DataMixin(object): @classmethod def setUpTestData(cls): # Permissions cls.add_permission_model1 = Permission.objects.get( name='Can add test model1') cls.view_permission_model1 = Permission.objects.get( name='Can view testmodel1') cls.change_permission_model1 = Permission.objects.get( name='Can change test model1') cls.delete_permission_model1 = Permission.objects.get( name='Can delete test model1') cls.view_permission_model1parler = Permission.objects.get( name='Can view testmodelparler' ) cls.view_permission_model1parlertranslation = Permission.objects.get( name='Can view testmodelparlertranslation' ) cls.add_permission_model4 = Permission.objects.get( name='Can add test model4') cls.view_permission_model4 = Permission.objects.get( name='Can view testmodel4') cls.change_permission_model4 = Permission.objects.get( name='Can change test model4') cls.delete_permission_model4 = Permission.objects.get( name='Can delete test model4') cls.add_permission_model5 = Permission.objects.get( name='Can add test model5') cls.view_permission_model5 = Permission.objects.get( name='Can view testmodel5') cls.change_permission_model5 = Permission.objects.get( name='Can change test model5') cls.delete_permission_model5 = Permission.objects.get( name='Can delete test model5') cls.add_permission_model6 = Permission.objects.get( name='Can add test model6') cls.view_permission_model6 = Permission.objects.get( name='Can view testmodel6') cls.change_permission_model6 = Permission.objects.get( name='Can change test model6') cls.delete_permission_model6 = Permission.objects.get( name='Can delete test model6') class AdminViewPermissionViewsTestCase(DataMixin, TestCase): @classmethod def setUpTestData(cls): super(AdminViewPermissionViewsTestCase, cls).setUpTestData() cls.user_with_v_perm_on_model1 = create_simple_user( username='user_with_v_perm_on_model1', ) cls.user_with_v_perm_on_model1.user_permissions.add( cls.view_permission_model1, ) cls.user_with_vd_perm_on_moedl1 = create_simple_user( username='user_with_vd_perm_on_model1', ) cls.user_with_vd_perm_on_moedl1.user_permissions.add( cls.view_permission_model1, cls.delete_permission_model1, ) cls.user_with_v_perm_on_model1parler = create_simple_user( username='user_with_v_perm_on_model1parler' ) cls.user_with_v_perm_on_model1parler.user_permissions.add( cls.view_permission_model1parler, ) cls.user_with_v_perm_on_model1parler.user_permissions.add( cls.view_permission_model1parlertranslation, ) cls.super_user = create_super_user(username='super_user') def setUp(self): self.client = Client() def tearDown(self): self.client.logout()