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
908b6b54
Commit
908b6b54
authored
Sep 11, 2023
by
周田
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor:新写的关于协议接口
parent
15d4f575
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
139 additions
and
2 deletions
+139
-2
serializers.py
device_data_op/serializers.py
+13
-1
urls.py
device_data_op/urls.py
+5
-1
views.py
device_data_op/views.py
+121
-0
xdc.sqlite
xdc.sqlite
+0
-0
No files found.
device_data_op/serializers.py
View file @
908b6b54
...
...
@@ -4,10 +4,22 @@ from .models import TableAllDevCmdDefine, TableDevCmdNamePoll, TableSoftLimitAng
class
TableAllDevCmdDefineSerializer
(
ModelSerializer
):
# 新增或修改字段时,需要用到 protocol_name 来获取当前协议的当前版本
protocol_name
=
serializers
.
CharField
(
max_length
=
50
,
required
=
True
,
write_only
=
True
)
class
Meta
:
model
=
TableAllDevCmdDefine
fields
=
'__all__'
fields
=
[
'id'
,
'cmd_name'
,
'cmd_type'
,
'fieldindex'
,
'fieldname'
,
'fieldsize'
,
'value'
,
'minvalue'
,
'maxvalue'
,
'datatype'
,
'operation_in'
,
'operation_in_num'
,
'operation_out'
,
'operation_out_num'
,
'operabo_in'
,
'operabo_out'
,
'lua_script_in'
,
'lua_script_out'
,
'protocol_name'
]
def
create
(
self
,
validated_data
):
protocol_name
=
validated_data
.
pop
(
'protocol_name'
)
instance
=
super
()
.
create
(
validated_data
)
# 执行额外的逻辑或将protocol_name字段与实例关联
instance
.
protocol_name
=
protocol_name
instance
.
save
()
return
instance
class
TableDevCmdNamePollSerializer
(
ModelSerializer
):
class
Meta
:
...
...
device_data_op/urls.py
View file @
908b6b54
from
rest_framework.routers
import
SimpleRouter
from
.views
import
(
TableAllDevCmdDefineView
,
TableDevCmdNamePollView
,
TableSoftLimitAngleView
,
TableXproAllDevinfoView
)
TableSoftLimitAngleView
,
TableXproAllDevinfoView
,
TableAllDevCmdDefineView_1
,
TableDevCmdNamePollView_1
)
from
.views
import
test
from
django.urls
import
re_path
...
...
@@ -10,6 +11,9 @@ router.register(r'dev_cmd_name_poll', TableDevCmdNamePollView)
router
.
register
(
r'soft_limit_angle'
,
TableSoftLimitAngleView
)
router
.
register
(
r'xpro_all_devinfo'
,
TableXproAllDevinfoView
)
router
.
register
(
r'all_dev_cmd_define_1'
,
TableAllDevCmdDefineView_1
)
router
.
register
(
r'dev_cmd_name_poll_1'
,
TableDevCmdNamePollView_1
)
urlpatterns
=
[
re_path
(
r'^test/$'
,
test
),
]
...
...
device_data_op/views.py
View file @
908b6b54
...
...
@@ -7,6 +7,8 @@ from rest_framework.response import Response
from
rest_framework.viewsets
import
ModelViewSet
from
rest_framework.decorators
import
api_view
from
rest_framework
import
status
from
protocol_version_manage.models
import
(
CurrentDevVersion
,
AllDevCmdDefineAndVersion
,
AllProtocolDefinAndVersion
,
AllProtocolVersion
)
from
.models
import
(
TableAllDevCmdDefine
,
TableDevCmdNamePoll
,
TableSoftLimitAngle
,
TableXproAllDevinfo
)
from
.serializers
import
(
TableAllDevCmdDefineSerializer
,
TableDevCmdNamePollSerializer
,
...
...
@@ -14,6 +16,125 @@ from .serializers import (TableAllDevCmdDefineSerializer, TableDevCmdNamePollSer
from
.utils
import
tree_data
class
TableAllDevCmdDefineView_1
(
ModelViewSet
):
queryset
=
TableAllDevCmdDefine
.
objects
.
all
()
serializer_class
=
TableAllDevCmdDefineSerializer
def
perform_create
(
self
,
serializer
):
"""
新增指令字段,给 TableAllDevCmdDefine 表创建记录时,同时给 AllDevCmdDefineAndVersion 表创建
"""
# 给表创建值
super
()
.
perform_create
(
serializer
)
current_obj
=
CurrentDevVersion
.
objects
.
filter
(
protocol_name
=
serializer
.
validated_data
[
'protocol_name'
])
.
first
()
assert
current_obj
is
not
None
,
"当前协议不存在"
current_version
=
current_obj
.
version
serializer
.
validated_data
[
'version'
]
=
current_version
serializer
.
validated_data
.
pop
(
'protocol_name'
)
AllDevCmdDefineAndVersion
.
objects
.
create
(
**
serializer
.
validated_data
)
def
perform_destroy
(
self
,
instance
):
"""
删除指令字段,给 TableAllDevCmdDefine 表删除记录时,同时给 AllDevCmdDefineAndVersion 表删除
这里由于不能直接获取到 protocol_name,所以需要先通过 TableDevCmdNamePoll 获取到 protocol_name,然后再删除
"""
cmd_name
=
instance
.
cmd_name
cmd_obj
=
TableDevCmdNamePoll
.
objects
.
filter
(
cmd_name
=
cmd_name
)
.
first
()
assert
cmd_obj
is
not
None
,
"当前指令不存在"
current_protocol_name
=
cmd_obj
.
protocol_name
current_obj
=
CurrentDevVersion
.
objects
.
filter
(
protocol_name
=
current_protocol_name
)
.
first
()
assert
current_obj
is
not
None
,
"当前协议不存在"
current_version
=
current_obj
.
version
AllDevCmdDefineAndVersion
.
objects
.
filter
(
cmd_name
=
instance
.
cmd_name
,
fieldname
=
instance
.
fieldname
,
version
=
current_version
)
.
delete
()
# 更新 fieldindex
super
()
.
perform_destroy
(
instance
)
fields
=
self
.
get_queryset
()
.
filter
(
cmd_name
=
cmd_name
)
.
all
()
for
i
in
range
(
len
(
fields
)):
fields
[
i
]
.
fieldindex
=
i
+
1
fields
[
i
]
.
save
()
fields_
=
AllDevCmdDefineAndVersion
.
objects
.
filter
(
cmd_name
=
cmd_name
,
version
=
current_version
)
.
all
()
for
i
in
range
(
len
(
fields_
)):
fields_
[
i
]
.
fieldindex
=
i
+
1
fields_
[
i
]
.
save
()
def
perform_update
(
self
,
serializer
):
"""
更新指令字段,给 TableAllDevCmdDefine 表更新记录时,同时给 AllDevCmdDefineAndVersion 表更新
"""
super
()
.
perform_update
(
serializer
)
current_obj
=
CurrentDevVersion
.
objects
.
filter
(
protocol_name
=
serializer
.
validated_data
[
'protocol_name'
])
.
first
()
assert
current_obj
is
not
None
,
"当前协议不存在"
current_version
=
current_obj
.
version
serializer
.
validated_data
[
'version'
]
=
current_version
serializer
.
validated_data
.
pop
(
'protocol_name'
)
AllDevCmdDefineAndVersion
.
objects
.
filter
(
cmd_name
=
serializer
.
validated_data
[
'cmd_name'
],
fieldname
=
serializer
.
validated_data
[
'fieldname'
],
version
=
current_version
)
.
update
(
**
serializer
.
validated_data
)
class
TableDevCmdNamePollView_1
(
ModelViewSet
):
queryset
=
TableDevCmdNamePoll
.
objects
.
all
()
serializer_class
=
TableDevCmdNamePollSerializer
def
perform_create
(
self
,
serializer
):
"""
新增指令,给 TableDevCmdNamePollView 表创建记录时,同时给 AllProtocolDefineAndVersion 表创建
如果当前协议不存在,则在 CurentDevVersion 表创建记录,同时在 AllProtocolVersion 表创建记录
"""
super
()
.
perform_create
(
serializer
)
current_obj
=
CurrentDevVersion
.
objects
.
filter
(
protocol_name
=
serializer
.
validated_data
[
'protocol_name'
])
.
first
()
if
current_obj
is
None
:
current_obj
=
CurrentDevVersion
.
objects
.
create
(
protocol_name
=
serializer
.
validated_data
[
'protocol_name'
],
version
=
"init"
)
current_version
=
"init"
AllProtocolVersion
.
objects
.
create
(
protocol_name
=
serializer
.
validated_data
[
'protocol_name'
],
version_paths
=
json
.
dumps
([{
"version"
:
"init"
}]))
else
:
current_version
=
current_obj
.
version
serializer
.
validated_data
[
'version'
]
=
current_version
AllProtocolDefinAndVersion
.
objects
.
create
(
**
serializer
.
validated_data
)
def
perform_destroy
(
self
,
instance
):
"""
删除指令,给 TableDevCmdNamePollView 表删除记录时,同时给 AllProtocolDefineAndVersion 表删除
"""
protocol_name
=
instance
.
protocol_name
cmd_name
=
instance
.
cmd_name
current_obj
=
CurrentDevVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
)
.
first
()
assert
current_obj
is
not
None
,
"当前协议不存在"
AllProtocolDefinAndVersion
.
objects
.
filter
(
protocol_name
=
protocol_name
,
cmd_name
=
cmd_name
,
version
=
current_obj
.
version
)
.
delete
()
super
()
.
perform_destroy
(
instance
)
def
perform_update
(
self
,
serializer
):
"""
更新指令,给 TableDevCmdNamePollView 表更新记录时,同时给 AllProtocolDefineAndVersion 表更新
"""
current_obj
=
CurrentDevVersion
.
objects
.
filter
(
protocol_name
=
serializer
.
validated_data
[
'protocol_name'
])
.
first
()
assert
current_obj
is
not
None
,
"当前协议不存在"
serializer
.
validated_data
[
'version'
]
=
current_obj
.
version
AllProtocolDefinAndVersion
.
objects
.
filter
(
protocol_name
=
serializer
.
validated_data
[
'protocol_name'
],
cmd_name
=
serializer
.
validated_data
[
'cmd_name'
],
version
=
current_obj
.
version
)
.
update
(
**
serializer
.
validated_data
)
super
()
.
perform_update
(
serializer
)
class
TableAllDevCmdDefineView
(
ModelViewSet
):
queryset
=
TableAllDevCmdDefine
.
objects
.
all
()
serializer_class
=
TableAllDevCmdDefineSerializer
...
...
xdc.sqlite
View file @
908b6b54
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