AleksandrKosmylev/python-project-52

View on GitHub
task_manager/users/mixins.py

Summary

Maintainability
A
0 mins
Test Coverage
A
93%
from django.urls import reverse_lazy
from django.shortcuts import redirect
from django.utils.translation import gettext_lazy as _
from django.contrib import messages
from django.contrib.auth.mixins import UserPassesTestMixin


class AccessCheck(UserPassesTestMixin):
    url = reverse_lazy('users_index')
    permission_denied_message =\
        _("You do not have permission to change another user.")

    def test_func(self):
        return self.get_object() == self.request.user

    def handle_no_permission(self):
        if not self.test_func():
            messages.warning(self.request,
                             self.permission_denied_message)
            return redirect(self.url)
        return super().handle_no_permission()