refactor: 移动 PermissionsMixin 位置

pull/5953/head^2
xinwen 2021-04-08 14:59:14 +08:00
parent 632ea87f07
commit d2678e2a43
7 changed files with 27 additions and 22 deletions

View File

@ -1,12 +1,14 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# coding: utf-8 # coding: utf-8
from django.contrib.auth.mixins import UserPassesTestMixin
from django.utils import timezone from django.utils import timezone
__all__ = ["DatetimeSearchMixin"] __all__ = ["DatetimeSearchMixin"]
from rest_framework import permissions
class DatetimeSearchMixin: class DatetimeSearchMixin:
date_format = '%Y-%m-%d' date_format = '%Y-%m-%d'
@ -36,3 +38,17 @@ class DatetimeSearchMixin:
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
self.get_date_range() self.get_date_range()
return super().get(request, *args, **kwargs) return super().get(request, *args, **kwargs)
class PermissionsMixin(UserPassesTestMixin):
permission_classes = [permissions.IsAuthenticated]
def get_permissions(self):
return self.permission_classes
def test_func(self):
permission_classes = self.get_permissions()
for permission_class in permission_classes:
if not permission_class().has_permission(self.request, self):
return False
return True

View File

@ -2,7 +2,6 @@
# #
import time import time
from rest_framework import permissions from rest_framework import permissions
from django.contrib.auth.mixins import UserPassesTestMixin
from django.conf import settings from django.conf import settings
from orgs.utils import current_org from orgs.utils import current_org
@ -95,20 +94,6 @@ class WithBootstrapToken(permissions.BasePermission):
return settings.BOOTSTRAP_TOKEN == request_bootstrap_token return settings.BOOTSTRAP_TOKEN == request_bootstrap_token
class PermissionsMixin(UserPassesTestMixin):
permission_classes = [permissions.IsAuthenticated]
def get_permissions(self):
return self.permission_classes
def test_func(self):
permission_classes = self.get_permissions()
for permission_class in permission_classes:
if not permission_class().has_permission(self.request, self):
return False
return True
class UserCanAnyPermCurrentOrg(permissions.BasePermission): class UserCanAnyPermCurrentOrg(permissions.BasePermission):
def has_permission(self, request, view): def has_permission(self, request, view):
return current_org.can_any_by(request.user) return current_org.can_any_by(request.user)

View File

@ -1,6 +1,7 @@
from django.views.generic import TemplateView from django.views.generic import TemplateView
from django.shortcuts import redirect from django.shortcuts import redirect
from common.permissions import PermissionsMixin, IsValidUser from common.permissions import IsValidUser
from common.mixins.views import PermissionsMixin
__all__ = ['IndexView'] __all__ = ['IndexView']

View File

@ -3,8 +3,8 @@
from django.views.generic import TemplateView from django.views.generic import TemplateView
from django.conf import settings from django.conf import settings
from common.permissions import PermissionsMixin, IsOrgAdmin, IsOrgAuditor from common.permissions import IsOrgAdmin, IsOrgAuditor
from common.mixins.views import PermissionsMixin
__all__ = ['CeleryTaskLogView'] __all__ = ['CeleryTaskLogView']

View File

@ -11,9 +11,10 @@ from django.contrib.auth import logout as auth_logout
from common.utils import get_logger from common.utils import get_logger
from common.permissions import ( from common.permissions import (
PermissionsMixin, IsValidUser, IsValidUser,
UserCanUpdatePassword UserCanUpdatePassword
) )
from common.mixins.views import PermissionsMixin
from ... import forms from ... import forms
from ...models import User from ...models import User
from ...utils import ( from ...utils import (

View File

@ -8,9 +8,10 @@ from django.views.generic.edit import UpdateView
from common.utils import get_logger, ssh_key_gen from common.utils import get_logger, ssh_key_gen
from common.permissions import ( from common.permissions import (
PermissionsMixin, IsValidUser, IsValidUser,
UserCanUpdateSSHKey, UserCanUpdateSSHKey,
) )
from common.mixins.views import PermissionsMixin
from ... import forms from ... import forms
from ...models import User from ...models import User

View File

@ -13,7 +13,8 @@ from formtools.wizard.views import SessionWizardView
from django.views.generic import FormView from django.views.generic import FormView
from common.utils import get_object_or_none from common.utils import get_object_or_none
from common.permissions import PermissionsMixin, IsValidUser from common.permissions import IsValidUser
from common.mixins.views import PermissionsMixin
from ...models import User from ...models import User
from ...utils import ( from ...utils import (
send_reset_password_mail, get_password_check_rules, check_password_rules, send_reset_password_mail, get_password_check_rules, check_password_rules,