mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-16 15:28:38 +00:00
perf: 统一应用树 (#6535)
* perf: 添加应用树api * perf: perms tree * perf: 统一应用树 * perf: 修改icon * perf: stash it * perf: 优化应用账号 * perf: 基本完成应用账号重构 * perf: 修改翻译 Co-authored-by: ibuler <ibuler@qq.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
||||
from rest_framework.viewsets import GenericViewSet, ModelViewSet, ReadOnlyModelViewSet, ViewSet
|
||||
from rest_framework_bulk import BulkModelViewSet
|
||||
|
||||
from ..mixins.api import (
|
||||
@@ -15,19 +15,23 @@ class CommonMixin(SerializerMixin,
|
||||
pass
|
||||
|
||||
|
||||
class JmsGenericViewSet(CommonMixin,
|
||||
GenericViewSet):
|
||||
class JMSGenericViewSet(CommonMixin, GenericViewSet):
|
||||
pass
|
||||
|
||||
|
||||
class JMSModelViewSet(CommonMixin,
|
||||
ModelViewSet):
|
||||
class JMSViewSet(CommonMixin, ViewSet):
|
||||
pass
|
||||
|
||||
|
||||
class JMSBulkModelViewSet(CommonMixin,
|
||||
AllowBulkDestroyMixin,
|
||||
BulkModelViewSet):
|
||||
class JMSModelViewSet(CommonMixin, ModelViewSet):
|
||||
pass
|
||||
|
||||
|
||||
class JMSReadOnlyModelViewSet(CommonMixin, ReadOnlyModelViewSet):
|
||||
pass
|
||||
|
||||
|
||||
class JMSBulkModelViewSet(CommonMixin, AllowBulkDestroyMixin, BulkModelViewSet):
|
||||
pass
|
||||
|
||||
|
||||
|
@@ -24,6 +24,7 @@ from ..utils import lazyproperty
|
||||
__all__ = [
|
||||
'JSONResponseMixin', 'CommonApiMixin', 'AsyncApiMixin', 'RelationMixin',
|
||||
'QuerySetMixin', 'ExtraFilterFieldsMixin', 'RenderToJsonMixin',
|
||||
'SerializerMixin', 'AllowBulkDestroyMixin', 'PaginatedResponseMixin'
|
||||
]
|
||||
|
||||
|
||||
|
@@ -112,6 +112,9 @@ class UserCanUpdateSSHKey(permissions.BasePermission):
|
||||
|
||||
class NeedMFAVerify(permissions.BasePermission):
|
||||
def has_permission(self, request, view):
|
||||
if not settings.SECURITY_VIEW_AUTH_NEED_MFA:
|
||||
return True
|
||||
|
||||
mfa_verify_time = request.session.get('MFA_VERIFY_TIME', 0)
|
||||
if time.time() - mfa_verify_time < settings.SECURITY_MFA_VERIFY_TTL:
|
||||
return True
|
||||
|
@@ -273,3 +273,17 @@ def bulk_get(d, *keys, default=None):
|
||||
for key in keys:
|
||||
values.append(d.get(key, default))
|
||||
return values
|
||||
|
||||
|
||||
def unique(objects, key=None):
|
||||
seen = OrderedDict()
|
||||
|
||||
if key is None:
|
||||
key = lambda item: item
|
||||
|
||||
for obj in objects:
|
||||
v = key(obj)
|
||||
if v not in seen:
|
||||
seen[v] = obj
|
||||
return list(seen.values())
|
||||
|
||||
|
Reference in New Issue
Block a user