Commit ba58221c by 周田

test: 测试 设备通信 获取协议返回字段列表

parent 3a492620
# Generated by Django 3.2.19 on 2023-08-23 06:34
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='DeviceCommunicationParameter',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('device_name', models.CharField(max_length=100)),
('protocol_name', models.CharField(max_length=100)),
('communicate_mode', models.CharField(max_length=100)),
('tcp_ip', models.CharField(max_length=40)),
('tcp_port', models.IntegerField()),
('udp_ip_src', models.CharField(max_length=40)),
('udp_port_src', models.IntegerField()),
('udp_ip_dst', models.CharField(max_length=40)),
('udp_port_dst', models.IntegerField()),
('performance_fields', models.TextField()),
],
),
migrations.CreateModel(
name='SimulateDeviceCommunicationParameter',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('device_name', models.CharField(max_length=100)),
('protocol_name', models.CharField(max_length=100)),
('communicate_mode', models.CharField(max_length=100)),
('tcp_ip', models.CharField(max_length=40)),
('tcp_port', models.IntegerField()),
('udp_ip_src', models.CharField(max_length=40)),
('udp_port_src', models.IntegerField()),
('udp_ip_dst', models.CharField(max_length=40)),
('udp_port_dst', models.IntegerField()),
('performance_fields', models.TextField()),
],
),
]
# Generated by Django 3.2.19 on 2023-08-23 06:35
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('device_communication', '0001_initial'),
]
operations = [
migrations.AlterModelTable(
name='devicecommunicationparameter',
table='Device_Communication_Parameter',
),
migrations.AlterModelTable(
name='simulatedevicecommunicationparameter',
table='Simulate_Device_Communication_Parameter',
),
]
......@@ -15,6 +15,10 @@ class SimulateDeviceCommunicationParameter(models.Model):
udp_port_src = models.IntegerField()
udp_ip_dst = models.CharField(max_length=40)
udp_port_dst = models.IntegerField()
performance_fields = models.TextField()
class Meta:
db_table = 'Simulate_Device_Communication_Parameter'
class DeviceCommunicationParameter(models.Model):
......@@ -31,15 +35,7 @@ class DeviceCommunicationParameter(models.Model):
udp_port_src = models.IntegerField()
udp_ip_dst = models.CharField(max_length=40)
udp_port_dst = models.IntegerField()
performance_fields = models.TextField()
class MonitorPerformanceAttribution(models.Model):
"""
监控性能属性列表
field_names 格式
["xxx", "aaa"]
"""
id = models.AutoField(primary_key=True)
protocol_name = models.CharField(max_length=100)
field_names = models.TextField()
class Meta:
db_table = 'Device_Communication_Parameter'
from rest_framework.serializers import ModelSerializer
from .models import (SimulateDeviceCommunicationParameter,
DeviceCommunicationParameter)
class SimulateDeviceCommunicationParameterSerializer(ModelSerializer):
class Meta:
model = SimulateDeviceCommunicationParameter
fields = '__all__'
class DeviceCommunicationParameterSerializer(ModelSerializer):
class Meta:
model = DeviceCommunicationParameter
fields = '__all__'
from django.test import TestCase
# Create your tests here.
from django.urls import re_path
from . import views
urlpatterns = [
re_path(r'^device_communication/$', views.get_protocol_names),
re_path(r'^device_communication/protocol_performance/$', views.get_protocol_field_names),
]
\ No newline at end of file
from django.shortcuts import render
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
# Create your views here.
from protocol_version_manage.models import (AllProtocolVersion, AllProtocolDefinAndVersion,
AllDevCmdDefineAndVersion)
@api_view(['GET'])
def get_protocol_names(request):
protocol_names = AllProtocolVersion.objects.all()
res_data = ([{'value': protocol_name.protocol_name, 'label': protocol_name.protocol_name}
for protocol_name in protocol_names])
return Response(data=res_data, status=status.HTTP_200_OK)
@api_view(['POST'])
def get_protocol_field_names(request):
protocol_name = request.data.get('protocol_name')
assert protocol_name is not None or protocol_name != '', Response(status=status.HTTP_400_BAD_REQUEST)
# 获取该协议下的指令集合
cmds = AllProtocolDefinAndVersion.objects.filter(protocol_name=protocol_name, cmd_type='RX').all()
cmd_set = set([cmd.cmd_name for cmd in cmds])
# 获取指令集合下的字段
fields = AllDevCmdDefineAndVersion.objects.filter(cmd_name__in=cmd_set, cmd_type='RX').all()
field_name_set = set([field.fieldname for field in fields])
res_data = ([field_name for field_name in field_name_set])
return Response(data=res_data, status=status.HTTP_200_OK)
<script setup lang="ts">
// import Chat from '@/views/Chat'
// import FileDown from './views/FileDown.vue';
import Upload from './views/Upload.vue';
// import Upload from './views/Upload.vue';
import Tabs from './views/Tabs.vue';
</script>
<template>
<!-- <chat /> -->
<!-- <FileDown /> -->
<Upload />
<!-- <Upload /> -->
<Tabs />
</template>
<template>
<el-select v-model="value" clearable placeholder="Select">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<br>
<el-tag mt-5 v-for="tag in tags" :key="tag" class="mx-1" closable @close="handleClose(tag)">
{{ tag }}
</el-tag>
</template>
<script lang="ts" setup>
import axios from 'axios';
import { onMounted, ref, watch } from 'vue'
const tags = ref<string[]>([])
const handleClose = (tag: string) => {
tags.value.splice(tags.value.indexOf(tag), 1)
}
const value = ref('')
type OptionItem = {
value: string,
label: string
}
const options = ref<OptionItem[]>([])
onMounted(() => {
axios.get(
'api/device_communication/'
).then((res) => {
options.value = res.data
}).catch((err) => {
console.log(err);
})
})
watch(value, () => {
axios.post(
'api/device_communication/protocol_performance/',
{
'protocol_name': value.value,
}).then((res) => {
console.log(res)
tags.value = res.data
}).catch((err) => {
console.log(err);
})
})
</script>
......@@ -35,6 +35,7 @@ INSTALLED_APPS = [
'chat',
'device_data_op',
'protocol_version_manage',
'device_communication',
'django.contrib.admin',
'django.contrib.auth',
......
......@@ -42,6 +42,7 @@ urlpatterns = [
path("op/", include("device_data_op.urls")),
path("api/", include("download_db.urls")),
path("api/", include("protocol_version_manage.urls")),
path("api/", include("device_communication.urls")),
re_path(r'^assets/(?P<path>.*)/$', serve, {'document_root': settings.STATIC_ROOT}),
......
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