feat: base CustomGenericViewSet 初始化优化
This commit is contained in:
parent
71ac63bdaf
commit
5e38f96925
|
@ -21,6 +21,7 @@ class CustomGenericViewSet(MyLoggingMixin, GenericViewSet):
|
||||||
"""
|
"""
|
||||||
增强的GenericViewSet
|
增强的GenericViewSet
|
||||||
"""
|
"""
|
||||||
|
_initialized = False
|
||||||
perms_map = None # 权限标识
|
perms_map = None # 权限标识
|
||||||
throttle_classes = [UserRateThrottle]
|
throttle_classes = [UserRateThrottle]
|
||||||
logging_methods = ['POST', 'PUT', 'PATCH', 'DELETE']
|
logging_methods = ['POST', 'PUT', 'PATCH', 'DELETE']
|
||||||
|
@ -44,13 +45,15 @@ class CustomGenericViewSet(MyLoggingMixin, GenericViewSet):
|
||||||
"""
|
"""
|
||||||
第一次实例化时,将权限标识添加到全局权限标识列表中
|
第一次实例化时,将权限标识添加到全局权限标识列表中
|
||||||
"""
|
"""
|
||||||
if cls.perms_map is None:
|
if not cls._initialized:
|
||||||
basename = kwargs["basename"]
|
if cls.perms_map is None:
|
||||||
cls.perms_map = {'get': '*', 'post': '{}.create'.format(basename), 'put': '{}.update'.format(
|
basename = kwargs["basename"]
|
||||||
basename), 'patch': '{}.update'.format(basename), 'delete': '{}.delete'.format(basename)}
|
cls.perms_map = {'get': '*', 'post': '{}.create'.format(basename), 'put': '{}.update'.format(
|
||||||
for _, v in cls.perms_map.items():
|
basename), 'patch': '{}.update'.format(basename), 'delete': '{}.delete'.format(basename)}
|
||||||
if v not in ALL_PERMS and v != '*':
|
for _, v in cls.perms_map.items():
|
||||||
ALL_PERMS.append(v)
|
if v not in ALL_PERMS and v != '*':
|
||||||
|
ALL_PERMS.append(v)
|
||||||
|
cls._initialized = True
|
||||||
return super().__new__(cls)
|
return super().__new__(cls)
|
||||||
|
|
||||||
def finalize_response(self, request, response, *args, **kwargs):
|
def finalize_response(self, request, response, *args, **kwargs):
|
||||||
|
@ -87,15 +90,6 @@ class CustomGenericViewSet(MyLoggingMixin, GenericViewSet):
|
||||||
return action_serializer_class
|
return action_serializer_class
|
||||||
return super().get_serializer_class()
|
return super().get_serializer_class()
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
if self.perms_map:
|
|
||||||
for k, v in self.perms_map.items():
|
|
||||||
if v not in ALL_PERMS and v != '*':
|
|
||||||
ALL_PERMS.append(v)
|
|
||||||
if not hasattr(self, 'filterset_fields'):
|
|
||||||
self.filterset_fields = self.select_related_fields
|
|
||||||
|
|
||||||
def get_queryset_custom(self, queryset):
|
def get_queryset_custom(self, queryset):
|
||||||
"""
|
"""
|
||||||
自定义过滤方法可复写
|
自定义过滤方法可复写
|
||||||
|
|
Loading…
Reference in New Issue