diff options
| author | Thomas Tanner <tanner@gmx.net> | 2014-12-31 22:25:00 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-12-31 16:31:59 -0500 |
| commit | 46068d850d8debd3611ed6499d48b9907bf07ef6 (patch) | |
| tree | c82c79ff71e611e31dab2bbe1d1e1b9348e5d14e /tests/admin_views/custom_has_permission_admin.py | |
| parent | 7a878ca5cb50ad65fc465cb263a44cc93629f75c (diff) | |
Fixed #22295 -- Replaced permission check for displaying admin user-tools
Diffstat (limited to 'tests/admin_views/custom_has_permission_admin.py')
| -rw-r--r-- | tests/admin_views/custom_has_permission_admin.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/admin_views/custom_has_permission_admin.py b/tests/admin_views/custom_has_permission_admin.py new file mode 100644 index 0000000000..6c15a9805a --- /dev/null +++ b/tests/admin_views/custom_has_permission_admin.py @@ -0,0 +1,33 @@ +""" +A custom AdminSite for AdminViewPermissionsTest.test_login_has_permission(). +""" +from __future__ import unicode_literals + +from django.contrib import admin +from django.contrib.auth import get_permission_codename +from django.contrib.auth.forms import AuthenticationForm + +from . import models, admin as base_admin + +PERMISSION_NAME = 'admin_views.%s' % get_permission_codename('change', models.Article._meta) + + +class PermissionAdminAuthenticationForm(AuthenticationForm): + def confirm_login_allowed(self, user): + from django import forms + if not user.is_active or not (user.is_staff or user.has_perm(PERMISSION_NAME)): + raise forms.ValidationError('permission denied') + + +class HasPermissionAdmin(admin.AdminSite): + login_form = PermissionAdminAuthenticationForm + + def has_permission(self, request): + return ( + request.user.is_active and + (request.user.is_staff or request.user.has_perm(PERMISSION_NAME)) + ) + + +site = HasPermissionAdmin(name="has_permission_admin") +site.register(models.Article, base_admin.ArticleAdmin) |
