Как сделать сайт администратора Django доступным для внештатного пользователя?

Я хотел бы реализовать второй сайт администратора, который предоставляет подмножество функций основного сайта администратора. Это возможно и описано в документации Django

. Однако я хотел бы ограничить доступ к основному сайту администратора. Некоторые пользователи могут получить доступ ко второму сайту, но не к основному сайту.

Чтобы реализовать эту функцию, я бы хотел, чтобы эти пользователи не были в штате (is_staff = False) и переписали AdminSite.has_permission

class SecondaryAdminSite(AdminSite):

    def has_permission(self, request):
        if request.user.is_anonymous:
            try:
                username = request.POST['username']
                password = request.POST['password']
            except KeyError:
                return False
            try:
                user = User.objects.get(username = username)
                if user.check_password(password):
                    return user.has_perm('app.change_onlythistable')
                else:
                    return False
            except User.DoesNotExist:
                return False
        else:
            return request.user.has_perm('app.change_onlythistable')

К сожалению, этот подход не работает. Пользователь может войти в систему, но ничего не видит на дополнительном административном сайте.

Что не так в этом подходе? Есть идеи, как реализовать эту функцию?

Заранее спасибо

6
задан luc 26 October 2010 в 09:57
поделиться