mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-18 08:20:51 +00:00
feat: 抽象View Mapping Serializer架构设计; 重构工单View、Serializer模块 (#5371)
* perf: 优化工单模块(修改迁移文件->Model assignees_display 字段类型为list) * ignore: try `view` `serializer jsonfields` Map design (1) * ignore: try `view` `serializer jsonfields` Map design (2) * ignore: try `view` `serializer jsonfields` Map design (3) * ignore: try `view` `serializer jsonfields` Map design (4) * ignore: try `view` `serializer jsonfields` Map design (5) * ignore: try `view` `serializer.DynamicMappingField` Mapping design (6) * feat: 抽象view_mapping_serializer逻辑架构; 重构工单View、Serializer模块 * feat: 抽象view_mapping_serializer逻辑架构; 重构工单View、Serializer模块(2) * feat: 抽象view_mapping_serializer逻辑架构; 重构工单View、Serializer模块(3) * feat: 抽象view_mapping_serializer逻辑架构; 重构工单View、Serializer模块(4) Co-authored-by: Bai <bugatti_it@163.com>
This commit is contained in:
@@ -1,32 +0,0 @@
|
||||
from tickets import const, serializers
|
||||
|
||||
|
||||
__all__ = ['TicketJSONFieldsModelSerializerViewMixin']
|
||||
|
||||
|
||||
class TicketJSONFieldsModelSerializerViewMixin:
|
||||
json_fields_category_mapping = {
|
||||
'meta': {
|
||||
'type': const.TicketTypeChoices.values,
|
||||
},
|
||||
}
|
||||
json_fields_serializer_classes = {
|
||||
'meta': {
|
||||
'type': {
|
||||
const.TicketTypeChoices.apply_asset.value: {
|
||||
'default': serializers.TicketMetaApplyAssetSerializer,
|
||||
'open': serializers.TicketMetaApplyAssetApplySerializer,
|
||||
'approve': serializers.TicketMetaApplyAssetApproveSerializer
|
||||
},
|
||||
const.TicketTypeChoices.apply_application.value: {
|
||||
'default': serializers.TicketMetaApplyApplicationSerializer,
|
||||
'open': serializers.TicketMetaApplyApplicationApplySerializer,
|
||||
'approve': serializers.TicketMetaApplyApplicationApproveSerializer,
|
||||
},
|
||||
const.TicketTypeChoices.login_confirm.value: {
|
||||
'default': serializers.TicketMetaLoginConfirmSerializer,
|
||||
'open': serializers.TicketMetaLoginConfirmApplySerializer
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -8,16 +8,15 @@ from rest_framework.exceptions import MethodNotAllowed
|
||||
from common.mixins.api import CommonApiMixin
|
||||
from common.permissions import IsValidUser, IsOrgAdmin
|
||||
from common.const.http import POST, PUT
|
||||
from tickets import serializers
|
||||
from tickets import serializers, const
|
||||
from tickets.permissions.ticket import IsAssignee, NotClosed
|
||||
from tickets.models import Ticket
|
||||
from tickets.api.ticket.mixin import TicketJSONFieldsModelSerializerViewMixin
|
||||
|
||||
|
||||
__all__ = ['TicketViewSet']
|
||||
|
||||
|
||||
class TicketViewSet(TicketJSONFieldsModelSerializerViewMixin, CommonApiMixin, viewsets.ModelViewSet):
|
||||
class TicketViewSet(CommonApiMixin, viewsets.ModelViewSet):
|
||||
permission_classes = (IsValidUser,)
|
||||
serializer_class = serializers.TicketSerializer
|
||||
serializer_classes = {
|
||||
@@ -64,3 +63,11 @@ class TicketViewSet(TicketJSONFieldsModelSerializerViewMixin, CommonApiMixin, vi
|
||||
@action(detail=True, methods=[PUT], permission_classes=[IsOrgAdmin, IsAssignee, NotClosed])
|
||||
def close(self, request, *args, **kwargs):
|
||||
return super().update(request, *args, **kwargs)
|
||||
|
||||
def get_dynamic_mapping_fields_mapping_rule(self):
|
||||
from tickets.serializers.ticket.meta import get_meta_field_mapping_rule_by_view
|
||||
meta_field_mapping_rule = get_meta_field_mapping_rule_by_view(self)
|
||||
fields_mapping_rule = {
|
||||
'meta': meta_field_mapping_rule,
|
||||
}
|
||||
return fields_mapping_rule
|
||||
|
Reference in New Issue
Block a user