Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
vue_django_test
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
周田
vue_django_test
Commits
dfc394d3
Commit
dfc394d3
authored
Aug 22, 2023
by
周田
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:更新协议版本内容接口
parent
8e682db2
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
128 additions
and
1 deletions
+128
-1
services.py
protocol_version_manage/services.py
+114
-0
urls.py
protocol_version_manage/urls.py
+1
-0
views.py
protocol_version_manage/views.py
+13
-1
xdc.sqlite
xdc.sqlite
+0
-0
No files found.
protocol_version_manage/services.py
View file @
dfc394d3
...
...
@@ -172,4 +172,118 @@ def add_protocol_version_manage(protocol_name: str, version: str, cmds: list) ->
return
Response
(
status
=
status
.
HTTP_200_OK
)
def
update_protocol_version_manage
(
protocol_name
:
str
,
version
:
str
,
cmds
:
list
)
->
Response
:
"""
更新协议版本信息
:param protocol_name: 协议名
:param version: 版本号
:param cmds: 协议相关的命令
:return: 当前版本,协议相关的数据
"""
# 给协议添加新的版本号
all_protocol_version_manage
=
AllProtocolVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
first
()
version_paths
=
json
.
loads
(
all_protocol_version_manage
.
version_paths
)
true_version
=
False
for
version_path
in
version_paths
:
if
version_path
[
'version'
]
==
version
:
true_version
=
True
break
if
not
true_version
:
return
Response
(
status
=
status
.
HTTP_400_BAD_REQUEST
)
try
:
for
cmd
in
cmds
:
# 获取指令字段
fields
=
cmd
.
pop
(
'fields'
)
# 处理协议指令
_cmds
=
AllProtocolDefinAndVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
,
cmd_name
=
cmd
[
'cmd_name'
])
.
all
()
new_cmd
=
AllProtocolDefinAndVersion
(
**
cmd
)
updated
=
False
for
_cmd
in
_cmds
:
# 遍历相同协议下相同名称不同版本的指令
vesrion_list
=
json
.
loads
(
_cmd
.
version
)
if
version
in
vesrion_list
:
if
_cmd
==
new_cmd
:
updated
=
True
break
else
:
# 该指令还有其他协议版本,新建指令信息
if
len
(
vesrion_list
)
>
1
:
# 删除原先指令版本信息
vesrion_list
.
remove
(
version
)
_cmd
.
version
=
json
.
dumps
(
vesrion_list
)
_cmd
.
save
()
# 创建新的
new_cmd
.
version
=
json
.
dumps
([
version
])
new_cmd
.
save
()
else
:
# 更新信息
_cmd
.
cmd_type
=
cmd
[
'cmd_type'
]
_cmd
.
encode
=
cmd
[
'encode'
]
_cmd
.
timing_cmd_cycle_period
=
cmd
[
'timing_cmd_cycle_period'
]
_cmd
.
cmd_explain
=
cmd
[
'cmd_explain'
]
_cmd
.
save
()
updated
=
True
if
not
updated
:
# 如果没有相关指令,则存储指令信息
new_cmd
.
version
=
json
.
dumps
([
version
])
new_cmd
.
save
()
# 处理指令字段
for
field
in
fields
:
_fields
=
AllDevCmdDefineAndVersion
.
objects
.
filter
(
cmd_name
=
cmd
[
'cmd_name'
],
fieldname
=
field
[
'fieldname'
])
.
all
()
new_field
=
AllDevCmdDefineAndVersion
(
**
field
)
updated
=
False
for
_field
in
_fields
:
# 遍历相同协议下相同名称不同版本的指令字段
version_list
=
json
.
loads
(
_field
.
version
)
if
version
in
version_list
:
if
_field
==
new_field
:
updated
=
True
break
else
:
# 该指令字段还有其他协议版本,新建指令信息
if
len
(
version_list
)
>
1
:
# 删除原先指令版本信息
version_list
.
remove
(
version
)
_field
.
version
=
json
.
dumps
(
version_list
)
_field
.
save
()
# 创建新的
new_field
.
version
=
json
.
dumps
([
version
])
new_field
.
save
()
else
:
# 更新信息
_field
.
cmd_type
=
field
[
'cmd_type'
]
_field
.
fieldindex
=
field
[
'fieldindex'
]
_field
.
fieldsize
=
field
[
'fieldsize'
]
_field
.
value
=
field
[
'value'
]
_field
.
minvalue
=
field
[
'minvalue'
]
_field
.
maxvalue
=
field
[
'maxvalue'
]
_field
.
datatype
=
field
[
'datatype'
]
_field
.
operation_in
=
field
[
'operation_in'
]
_field
.
operation_in_num
=
field
[
'operation_in_num'
]
_field
.
operation_out
=
field
[
'operation_out'
]
_field
.
operation_out_num
=
field
[
'operation_out_num'
]
_field
.
operabo_in
=
field
[
'operabo_in'
]
_field
.
operabo_out
=
field
[
'operabo_out'
]
_field
.
lua_script_in
=
field
[
'lua_script_in'
]
_field
.
lua_script_out
=
field
[
'lua_script_out'
]
_field
.
save
()
updated
=
True
if
not
updated
:
# 如果没有相关指令字段,则存储指令信息
new_field
.
version
=
json
.
dumps
([
version
])
new_field
.
save
()
except
Exception
as
e
:
print
(
e
)
return
Response
(
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
return
Response
(
status
=
status
.
HTTP_200_OK
)
protocol_version_manage/urls.py
View file @
dfc394d3
...
...
@@ -7,5 +7,6 @@ urlpatterns = [
re_path
(
r'^protocol_version_manage/init/$'
,
views
.
init
),
re_path
(
r'^protocol_version_manage/change_protocol_version/$'
,
views
.
change_protocol_version
),
re_path
(
r'^protocol_version_manage/add_protocol_version/$'
,
views
.
add_protocol_version
),
re_path
(
r'^protocol_version_manage/update_protocol_version/$'
,
views
.
update_protocol_version
),
re_path
(
r'^all_protocol_version/$'
,
views
.
AllProtocolVersionViewSet
.
as_view
({
'get'
:
'list'
})),
]
protocol_version_manage/views.py
View file @
dfc394d3
...
...
@@ -9,7 +9,8 @@ from .models import (AllDevCmdDefineAndVersion, AllProtocolDefinAndVersion,
AllProtocolVersion
,
CurrentDevVersion
)
from
.serializers
import
(
AllDevCmdDefineAndVersionSerializer
,
AllProtocolDefinAndVersionSerializer
,
AllProtocolVersionSerializer
,
CurrentDevVersionSerializer
)
from
.services
import
init_protocol_version_manage
,
update_device_protocol_and_cmds
,
add_protocol_version_manage
from
.services
import
(
init_protocol_version_manage
,
update_device_protocol_and_cmds
,
add_protocol_version_manage
,
update_protocol_version_manage
)
@api_view
([
'POST'
])
...
...
@@ -59,6 +60,17 @@ def add_protocol_version(request):
return
add_protocol_version_manage
(
protocol_name
,
version
,
cmds
)
@api_view
([
'POST'
])
def
update_protocol_version
(
request
):
version
=
request
.
data
.
get
(
'version'
)
protocol_name
=
request
.
data
.
get
(
'protocol_name'
)
cmds
=
request
.
data
.
get
(
'cmds'
)
assert
(
protocol_name
is
not
None
and
version
is
not
None
and
cmds
is
not
None
),
Response
(
status
=
status
.
HTTP_400_BAD_REQUEST
)
return
update_protocol_version_manage
(
protocol_name
,
version
,
cmds
)
class
AllProtocolVersionViewSet
(
GenericViewSet
,
ListModelMixin
):
queryset
=
AllProtocolVersion
.
objects
.
all
()
serializer_class
=
AllProtocolVersionSerializer
xdc.sqlite
View file @
dfc394d3
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment