Commit 1c011d0c by 周田

fix: 修复 切换协议版本的小问题

parent 8731d629
......@@ -78,44 +78,25 @@ def update_device_protocol_and_cmds(protocol_name: str, version: str) -> Respons
current_version_protocol_serializer = AllProtocolDefinAndVersionSerializer(current_version_protocols, many=True)
cmd_fields_serializer = AllDevCmdDefineAndVersionSerializer(cmd_fields, many=True)
# 更新 device 所使用的协议表数据
for protocol in current_version_protocol_serializer.data:
obj, _ = TableDevCmdNamePoll.objects.update_or_create(
protocol_name=protocol['protocol_name'],
cmd_name=protocol['cmd_name'],
defaults={
'protocol_name': protocol['protocol_name'],
'cmd_name': protocol['cmd_name'],
'cmd_type': protocol['cmd_type'],
'encode': protocol['encode'],
'timing_cmd_cycle_period': protocol['timing_cmd_cycle_period'],
'cmd_explain': protocol['cmd_explain']
}
)
if obj is None:
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# 更新 device 所使用的命令表数据
for cmd_field in cmd_fields_serializer.data:
obj, _ = TableAllDevCmdDefine.objects.update_or_create(
cmd_name=cmd_field['cmd_name'],
fieldname=cmd_field['fieldname'],
defaults={
'cmd_name': cmd_field['cmd_name'],
'cmd_type': cmd_field['cmd_type'],
'fieldindex': cmd_field['fieldindex'],
'fieldname': cmd_field['fieldname'],
'fieldsize': cmd_field['fieldsize'],
'value': cmd_field['value'],
'minvalue': cmd_field['minvalue'],
'maxvalue': cmd_field['maxvalue'],
'datatype': cmd_field['datatype'],
'lua_script_in': cmd_field['lua_script_in'],
'lua_script_out': cmd_field['lua_script_out']
}
)
if obj is None:
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
try:
TableAllDevCmdDefine.objects.filter(cmd_name__in=[cmd.cmd_name
for cmd in TableDevCmdNamePoll.objects.filter(protocol_name=protocol_name).all()]).delete()
TableAllDevCmdDefine.objects.bulk_create([TableAllDevCmdDefine(
**{k: v for k, v in cmd_field.items() if k not in ['id', 'version']})
for cmd_field in cmd_fields_serializer.data])
except Exception as e:
print(e)
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# 更新 device 所使用的协议表数据
try:
TableDevCmdNamePoll.objects.filter(protocol_name=protocol_name).delete()
TableDevCmdNamePoll.objects.bulk_create([TableDevCmdNamePoll(
**{k: v for k, v in protocol.items() if k not in ['id', 'version']})
for protocol in current_version_protocol_serializer.data])
except Exception as e:
print(e)
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# 返回数据
cmds = []
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment