只更新必填和可选的字段

This commit is contained in:
caoqianming 2021-12-16 16:19:35 +08:00
parent 7a9d18c5be
commit f6e14a4990
1 changed files with 4 additions and 8 deletions

View File

@ -144,22 +144,19 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
vdata = serializer.validated_data #校验之后的数据 vdata = serializer.validated_data #校验之后的数据
start_state = WfService.get_workflow_start_state(vdata['workflow']) start_state = WfService.get_workflow_start_state(vdata['workflow'])
field_key_list = WfService.get_workflow_custom_fields_list(vdata['workflow'])
transition = vdata['transition'] transition = vdata['transition']
ticket_data = vdata['ticket_data'] ticket_data = vdata['ticket_data']
save_ticket_data = {}
#校验必填项 #校验必填项
if transition.field_require_check: if transition.field_require_check:
for key, value in start_state.state_fields.items(): for key, value in start_state.state_fields.items():
if value == State.STATE_FIELD_REQUIRED: if value == State.STATE_FIELD_REQUIRED:
if key not in ticket_data or not ticket_data[key]: if key not in ticket_data or not ticket_data[key]:
raise APIException('字段{}必填'.format(key)) raise APIException('字段{}必填'.format(key))
save_ticket_data = {} save_ticket_data[key] = ticket_data[key]
# 只保存必填项以及可选项 elif value == State.STATE_FIELD_OPTIONAL:
for key, value in ticket_data.items(): save_ticket_data[key] = ticket_data[key]
if key in field_key_list and key in start_state.state_fields and start_state.state_fields[key] in [
State.STATE_FIELD_REQUIRED, State.STATE_FIELD_OPTIONAL]:
save_ticket_data[key] = value
ticket = serializer.save(state=start_state, ticket = serializer.save(state=start_state,
create_by=request.user, create_by=request.user,
@ -232,7 +229,6 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin
raise APIException('工单不存在') raise APIException('工单不存在')
data = request.data data = request.data
result = WfService.ticket_handle_permission_check(ticket, request.user) result = WfService.ticket_handle_permission_check(ticket, request.user)
field_key_list = WfService.get_workflow_custom_fields_list(ticket.workflow)
source_state = ticket.state source_state = ticket.state
source_ticket_data = ticket.ticket_data source_ticket_data = ticket.ticket_data
if result.get('permission') is False: if result.get('permission') is False: