Commit 58301397 by qianmo

Merge remote-tracking branch 'origin/main'

# Conflicts:
#	database/xdc.sqlite
parents 053d9b7c 6aa86105
......@@ -2,3 +2,4 @@ __pycache__
*.pyc
.idea
assets
*.tar
......@@ -76,7 +76,7 @@ def set_communication_to_devinfo_table(request):
# 清空设备信息表
# TODO:实际开始用的时候,需要将这个注释打开
# TableXproAllDevinfo.objects.all().delete()
TableXproAllDevinfo.objects.all().delete()
TableXproAllDevinfo.objects.bulk_create(
[TableXproAllDevinfo(sta_id=communication.station_id,
......
......@@ -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:
......
from rest_framework.routers import SimpleRouter
from .views import (TableAllDevCmdDefineView, TableDevCmdNamePollView,
TableSoftLimitAngleView, TableXproAllDevinfoView)
from .views import test
TableSoftLimitAngleView, TableXproAllDevinfoView,
TableAllDevCmdDefineView_1, TableDevCmdNamePollView_1)
from .views import test, remove_protocol, protocol_add_version
from django.urls import re_path
router = SimpleRouter()
......@@ -10,8 +11,13 @@ 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),
re_path(r'^protocol/protocol_add_version/$', protocol_add_version),
re_path(r'^protocol/(?P<protocol_name>.+)/$', remove_protocol),
]
......
version: '3'
services:
device_web_dockerfile:
# 通过 dockerfile 创建镜像
# build:
# context: .
# dockerfile: Dockerfile
# 如果使用上面的内容下面 image 就不需要了
image: device_web_dockerfile_compose
container_name: device_web
tty: true
# 容器的网络模式,如果使用 host 模式,就不需要下面 ports 的内容
# ports 的内容是在默认的网络模式 bridge 的情况下设置的
network_mode: host
# ports:
# - "8080:8080"
# 文件映射,会将整个目录全部替换
# volumes:
# - .:/app
environment:
TZ: "Asia/Shanghai"
entrypoint: "python manage.py runserver 0.0.0.0:8080"
# 使用的环境
FROM ubuntu:20.04
# 升级 apt-get 和 下载 python3.9
# DEBIAN_FRONTEND="noninteractive" 禁用交互
RUN apt-get update && DEBIAN_FRONTEND="nointeractive" apt-get install -y \
python3.9 \
python3.9-venv \
python3.9-dev \
python3-pip
# 工作目录为 /app
# 意味着进入容器后的目录为 /app
WORKDIR /app
# 将当前目录下的所有内容拷贝到 /app 目录下
COPY . .
# 使用 python3.9 创建虚拟环境
RUN python3.9 -m venv ./venv
# 将虚拟环境添加到 PATH 中
ENV PATH="/app/venv/bin:$PATH"
# 使用虚拟环境中的 pip3.9 安装 poetry
RUN pip3.9 install poetry -i https://pypi.tuna.tsinghua.edu.cn/simple
# 使用 poetry 下载项目所需要的依赖
# poetry config virtualenvs.create false 为禁用创建虚拟环境
# 即直接将内容下到刚刚创建的虚拟环境中
RUN poetry config virtualenvs.create false && poetry install
# 向外部暴露 8000 端口
EXPOSE 8000
# 启动容器后运行的命令
ENTRYPOINT ["python", "manage.py", "runserver", "0.0.0.0:8000" ]
......@@ -27,8 +27,34 @@
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { onMounted, ref } from 'vue'
const activeIndex = ref('1')
import { DeviceProtocol, ProtocolCmd } from "@/dao/device";
import { GetProtocolVersion, GetCurrentVersion } from '@/dao/protocol';
import { useProtocolInfoStore } from './stores/protocolInfo';
import { useProtocolVersionStore } from '@/stores/allProtocolVersion';
const store = useProtocolVersionStore()
const protocolStore = useProtocolInfoStore()
onMounted(async () => {
await GetProtocolVersion()
.then(res => {
store.protocolVersions.push(...res)
})
await GetCurrentVersion()
.then(res => {
store.currentVersions = res
})
await DeviceProtocol()
.then((res) => {
protocolStore.deviceProtocol = res.data
})
await ProtocolCmd()
.then((res) => {
protocolStore.protocolCmd = res.data
})
})
</script>
<style>
......
<template>
<div class="text-right mb-5">
<el-button type="primary" @click="applyComunications"> 应用 </el-button>
<el-button type="primary" @click="copy">copy to ini</el-button>
<el-button type="primary" @click="addDevice">Add device</el-button>
<el-button type="primary" @click="copy">复制配置</el-button>
<el-button type="primary" @click="addDevice">添加通信参数</el-button>
</div>
<div class="demo-collapse">
<el-collapse>
......
<template>
<el-descriptions :title="deviceInfo.device_name" :column=1>
<template #extra>
<el-button type="danger" size="small" @click="del">delete</el-button>
<el-button type="primary" size="small" @click="dialogFormVisible = true">Edit</el-button>
<el-button type="danger" size="small" @click="del">删除</el-button>
<el-button type="primary" size="small" @click="dialogFormVisible = true">编辑</el-button>
</template>
<el-descriptions-item label="协议名">{{ deviceInfo.protocol_name }}</el-descriptions-item>
<el-descriptions-item label="通信参数" :column=3>
......
......@@ -62,9 +62,9 @@
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogFormVisible = false">Cancel</el-button>
<el-button @click="dialogFormVisible = false">取消</el-button>
<el-button type="primary" @click="submit_form">
Confirm
确定
</el-button>
</span>
</template>
......
......@@ -10,7 +10,7 @@
</el-scrollbar>
<div>
<el-button class="ml-4" @click="showCmdDialog">Send Cmd</el-button>
<el-button class="ml-4" @click="showCmdDialog">发送指令</el-button>
</div>
</div>
......@@ -28,7 +28,7 @@
:type="activeName==='device'?'1': '2'"
@delete-table="deleteDeviceInfo(param)" />
</el-scrollbar>
<el-button @click="dialogVisible = true">Add table</el-button>
<el-button @click="dialogVisible = true">添加监控设备表</el-button>
</el-tab-pane>
<el-tab-pane label="虚拟设备" name="simulateDevice">
<el-scrollbar style="height: 30rem;" class="mb-10" always>
......@@ -42,7 +42,7 @@
:type="activeName==='device'?'1': '2'"
@delete-table="deleteDeviceInfo(param)" />
</el-scrollbar>
<el-button @click="dialogVisible = true">Add table</el-button>
<el-button @click="dialogVisible = true">添加监控设备表</el-button>
</el-tab-pane>
</el-tabs>
</div>
......@@ -54,15 +54,15 @@
</el-select>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">Cancel</el-button>
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="addDeviceTable">
Confirm
确定
</el-button>
</span>
</template>
</el-dialog>
<el-dialog v-model="dialogCmdVisible" class="w-150" title="Send Cmd">
<el-dialog v-model="dialogCmdVisible" class="w-150" title="发送指令" draggable>
<el-form :model="formData" label-width="120px">
<el-form-item label="设备名称">
<el-select v-model="formData.deviceName" w-100 @change="showCmds">
......@@ -86,9 +86,9 @@
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogCmdVisible = false">Cancel</el-button>
<el-button @click="dialogCmdVisible = false">取消</el-button>
<el-button type="primary" @click="sendCmd">
Confirm
确定
</el-button>
</span>
</template>
......
<template>
<div class="demo-collapse">
<el-collapse>
<el-collapse-item v-for="item in protocol_names">
<template #title>{{ item }}</template>
<el-collapse-item v-for="item in protocolNames">
<template #title>
<div> {{ item }} </div>
<div>
<el-button type="danger" text @click="removeProtocol(item)">删除</el-button>
</div>
</template>
<div style="margin: auto; width: 90%">
<collapse-table
v-if="protocolCmd !== undefined"
v-if="props.protocolCmd !== undefined && props.deviceProtocol !== undefined"
class="mt-4"
:info="deviceProtocol!"
:info="props.deviceProtocol!"
:name="item"
:protocol-cmd="protocolCmd!" />
:protocol-cmd="props.protocolCmd!" />
</div>
</el-collapse-item>
</el-collapse>
......@@ -17,40 +22,37 @@
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { onMounted, ref, watch } from 'vue'
import CollapseTable from "./CollapseTable.vue";
import { DeviceProtocol, ProtocolCmd } from "@/dao/device";
import type { DeviceProtocolResponse, ProtocolCmdResponse } from './types';
import { removeProtocolDao } from '@/dao/protocol';
const protocol_names = ref<string[]>([]);
const deviceProtocol = ref<DeviceProtocolResponse>()
const protocolCmd = ref<ProtocolCmdResponse>()
function getDeviceProtocol() {
DeviceProtocol()
.then((res) => {
deviceProtocol.value = res
protocol_names.value = res.fields
})
.catch((err) => {
console.log(err)
})
type propsType = {
deviceProtocol: DeviceProtocolResponse,
protocolCmd: ProtocolCmdResponse
}
const props = defineProps<propsType>()
onMounted(() => {
let { fields } = props.deviceProtocol
protocolNames.value = fields
})
function getProtocolCmd() {
ProtocolCmd()
.then((res) => {
protocolCmd.value = res
const protocolNames = ref<string[]>([]);
watch(() => props.deviceProtocol, (val) => {
let { fields } = val
protocolNames.value = fields
})
const removeProtocol = (protocolName: string) => {
removeProtocolDao(protocolName)
.then(() =>{
protocolNames.value = protocolNames.value.filter(item => item !== protocolName)
})
.catch((err) => {
console.log(err);
.catch(err => {
console.log(err)
})
}
onMounted(async () => {
getDeviceProtocol()
getProtocolCmd()
})
</script>
<style>
......
......@@ -147,7 +147,7 @@
import { reactive, ref } from 'vue'
import { ElMessage, ElMessageBox, FormRules, ElForm } from "element-plus";
import { AddProtocolCMd, DeleteProtocolCmd, EditProtocolCmd } from "@/dao/device";
import { AddProtocolCmd, DeleteProtocolCmd, EditProtocolCmd } from "@/dao/device";
import type { CmdInfo } from './types';
const flag = ref(false)
......@@ -157,6 +157,8 @@ const more = ref(false)
type propsType = {
cmdName: string,
cmdType: string,
version: string,
protocolName: string,
message: CmdInfo[]
}
const props = defineProps<propsType>()
......@@ -239,7 +241,6 @@ const addField = () => {
fields.value.operabo_out = 0
dialogVisible.value = true;
}
function editField(data: CmdInfo) {
......@@ -251,6 +252,7 @@ function editField(data: CmdInfo) {
}
function Edit(id: number, params: any) {
params['protocol_name'] = props.protocolName
EditProtocolCmd(id, params)
}
......@@ -259,7 +261,11 @@ function Delete(id: number) {
}
function Add(params: any) {
AddProtocolCMd(params)
params['protocol_name'] = props.protocolName
AddProtocolCmd(params)
.then((res) => {
tableData.value.push(res.data!)
})
}
function confirm(type: string, data: CmdInfo) {
......@@ -273,10 +279,6 @@ function confirm(type: string, data: CmdInfo) {
}
)
.then(() => {
ElMessage({
type: 'success',
message: '操作成功',
})
dialogVisible.value = false
more.value = false
if (type === 'edit') {
......
......@@ -59,9 +59,14 @@ interface ProtocolCmdResponse {
fields: any[];
}
interface ChangeCmdInfo extends ProtocolInfo {
version: string
fields: any[]
}
export type {
DeviceProtocolResponse,
ProtocolCmdResponse,
CmdInfo,
ChangeCmdInfo
}
\ No newline at end of file
import axios from "axios"
import type { CmdInfo } from '@/components/protocol/types'
import request from "@/plugins/axios/requests"
import type { DeviceProtocolResponse, ProtocolCmdResponse } from '@/components/protocol/types';
// const baseURL = 'http://192.168.0.214:8000/op'
export function DeviceProtocol() {
return axios.get('/api/dev_cmd_name_poll').then(
function (response) {
return response.data
}
)
return request.get<DeviceProtocolResponse>('/api/dev_cmd_name_poll_1/')
}
export function ProtocolCmd() {
return axios.get('/api/all_dev_cmd_define').then(
function (response) {
return response.data
}
)
return request.get<ProtocolCmdResponse>('/api/all_dev_cmd_define_1/')
}
export function EditProtocolCmd(id: number, params: any) {
return axios.put('/api/all_dev_cmd_define/' + id + '/', params).then(
function (response) {
return response.data
}
)
return request.put('/api/all_dev_cmd_define_1/' + id + '/', params)
}
export function DeleteProtocolCmd(id: number) {
return axios.delete('/api/all_dev_cmd_define/' + id).then(
function (response) {
return response.data
}
)
return request.del('/api/all_dev_cmd_define_1/' + id + '/')
}
export function AddProtocolCMd(params: any) {
return axios.post('/api/all_dev_cmd_define/', params).then(
function (response) {
return response.data
}
)
export function AddProtocolCmd(params: any) {
return request.post<CmdInfo>('/api/all_dev_cmd_define_1/', params)
}
\ No newline at end of file
import axios from "axios"
import request from "@/plugins/axios/requests"
// const baseURL = 'http://192.168.0.214:8000/op'
export function GetProtocolVersion(){
return axios.get('/api/all_protocol_version/').then(
function (response){
return response.data
}
)
export function GetProtocolVersion() {
return axios.get('/api/all_protocol_version/').then(
function (response) {
return response.data
}
)
}
export function ProtocolInit(protocol_name: any){
return axios.post('/api/protocol_version_manage/init/', protocol_name).then(
function (response){
return response.data
}
)
export function ProtocolInit(protocol_name: any) {
return axios.post('/api/protocol_version_manage/init/', protocol_name).then(
function (response) {
return response.data
}
)
}
export function GetCurrentVersion() {
return axios.get('/api/current_versions/').then(
function (response) {
return response.data
}
)
return axios.get('/api/current_versions/').then(
function (response) {
return response.data
}
)
}
export function removeProtocolDao(protocolName: string) {
return request.del('/api/protocol/' + protocolName + '/')
}
export function addCmdDao(param: any) {
return request.post('/api/dev_cmd_name_poll_1/', param)
}
export function removeCmdDao(id: number) {
return request.del('/api/dev_cmd_name_poll_1/' + id + '/')
}
\ No newline at end of file
......@@ -71,6 +71,7 @@ service.interceptors.response.use((response: AxiosResponse) => {
type: 'error',
showClose: true
})
// 数据被 catch 接收
return Promise.reject(response.data);
}
......
......@@ -4,24 +4,24 @@ import { Get, Post, Delete, Put } from './types'; // 接口泛型
// 封装 get 方法,类型为Get
const get: Get = async (url, config) => {
const response = await service.get(url, { ...config});
return response.data;
return response;
};
const post: Post = async (url, params, config) => {
const response = await service.post(url, params, {...config});
return response.data;
return response;
};
// 封装 delete 方法
const del: Delete = async (url, config) => {
const response = await service.delete(url, {...config});
return response.data;
return response;
}
// 封装 put 方法
const put: Put = async (url, params, config) => {
const response = await service.put(url, params, {...config});
return response.data;
return response;
}
// 使用 request 统一调用
......
......@@ -2,7 +2,7 @@ import { InternalAxiosRequestConfig } from 'axios';
// 网络请求响应格式,T 是具体的接口返回类型数据
interface CustomSuccessData<T> {
code: number;
status: number;
msg?: string;
message?: string;
data?: T;
......
import { createRouter, createWebHistory } from 'vue-router';
import { createRouter, createWebHashHistory } from 'vue-router';
const router = createRouter({
history: createWebHistory(),
history: createWebHashHistory(),
routes: [
{
path: '/',
......
import { defineStore } from 'pinia'
import { ref } from 'vue';
import type { DeviceProtocolResponse, ProtocolCmdResponse } from '@/components/protocol/types';
export const useProtocolInfoStore = defineStore('protocolInfo', () => {
const deviceProtocol = ref<DeviceProtocolResponse>()
const protocolCmd = ref<ProtocolCmdResponse>()
return {
deviceProtocol,
protocolCmd
}
});
<template>
<el-tabs v-model="activeName" type="border-card" class="demo-tabs">
<el-tab-pane label="device" name="device">
<el-tab-pane label="设备通信参数" name="device">
<div class="contain">
<communication-tab tab-type="communicate" />
</div>
</el-tab-pane>
<el-tab-pane label="simulate_device" name="simulate_device">
<el-tab-pane label="虚拟设备通信参数" name="simulate_device">
<div class="contain">
<communication-tab tab-type="simulate_communicate" />
</div>
......
<template>
<div class="button-container">
<el-button class="left-button" @click="isShow = true">新增协议</el-button>
<div class="right-buttons">
<el-button class="ml-10" @click="isShow = true">新增协议</el-button>
<!-- <div>
<el-button>导出数据库</el-button>
</div>
</div> -->
</div>
<!-- 下拉列表 -->
<kit-collapse class="mt-4"></kit-collapse>
<!-- 折叠面板 -->
<kit-collapse
class="mt-4"
v-if="protocolStore.deviceProtocol !== undefined && protocolStore.protocolCmd !== undefined"
:device-protocol="protocolStore.deviceProtocol!"
:protocol-cmd="protocolStore.protocolCmd!" />
<el-dialog title="新增协议" v-model="isShow">
<el-form>
<el-form-item label="协议名称" :label-width="formLabelWidth">
<el-input autocomplete="off" />
<el-input v-model="protocolName" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
......@@ -27,31 +31,25 @@
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue';
import KitCollapse from "@/components/protocol/KitCollapse";
import { GetProtocolVersion, GetCurrentVersion } from '@/dao/protocol';
import { ref } from 'vue';
import KitCollapse from '@/components/protocol/KitCollapse.vue';
import { useProtocolInfoStore } from '@/stores/protocolInfo';
import { useProtocolVersionStore } from '@/stores/allProtocolVersion';
const isShow = ref<boolean>(false)
const formLabelWidth = '140px'
const store = useProtocolVersionStore()
onMounted(() => {
GetProtocolVersion()
.then(res => {
store.protocolVersions.push(...res)
})
GetCurrentVersion()
.then(res => {
store.currentVersions = res
})
})
const protocolStore = useProtocolInfoStore()
// TODO:添加协议
const protocolName = ref<string>('')
const store = useProtocolVersionStore()
const addProtocol = () => {
isShow.value = false
console.log('addProtocol')
protocolStore.deviceProtocol!.fields.push(protocolName.value)
protocolStore.deviceProtocol![protocolName.value] = []
store.currentVersions.push({protocol_name: protocolName.value, version: "init"})
store.protocolVersions.push({protocol_name: protocolName.value, version_paths: JSON.stringify([{version: "init"}])
})
}
</script>
......@@ -63,15 +61,5 @@ const addProtocol = () => {
align-items: center;
/* 垂直居中 */
}
.left-button {
margin-right: auto;
/* 将按钮1靠左 */
}
.right-buttons {
display: flex;
align-items: center;
/* 垂直居中 */
}</style>
</style>
// vite.config.ts
import { defineConfig } from "file:///W:/work/NetCopilot/test/vue_django/frontend/node_modules/vite/dist/node/index.js";
import vue from "file:///W:/work/NetCopilot/test/vue_django/frontend/node_modules/@vitejs/plugin-vue/dist/index.mjs";
import legacy from "file:///W:/work/NetCopilot/test/vue_django/frontend/node_modules/@vitejs/plugin-legacy/dist/index.mjs";
import UnoCSS from "file:///W:/work/NetCopilot/test/vue_django/frontend/node_modules/unocss/dist/vite.mjs";
import { resolve } from "path";
import process from "process";
function pathResolve(dir) {
return resolve(process.cwd(), ".", dir);
}
var vite_config_default = defineConfig({
resolve: {
alias: {
"@": pathResolve("src")
},
extensions: [".ts", ".js", ".vue"]
// 使用路径别名时想要省略的后缀名,可以自己 增减
},
plugins: [
legacy({
targets: ["defaults", "not IE 11"]
}),
vue(),
UnoCSS()
],
base: "./",
server: {
host: "0.0.0.0"
}
});
export {
vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJXOlxcXFx3b3JrXFxcXE5ldENvcGlsb3RcXFxcdGVzdFxcXFx2dWVfZGphbmdvXFxcXGZyb250ZW5kXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJXOlxcXFx3b3JrXFxcXE5ldENvcGlsb3RcXFxcdGVzdFxcXFx2dWVfZGphbmdvXFxcXGZyb250ZW5kXFxcXHZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9XOi93b3JrL05ldENvcGlsb3QvdGVzdC92dWVfZGphbmdvL2Zyb250ZW5kL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAndml0ZSdcbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJ1xuaW1wb3J0IGxlZ2FjeSBmcm9tICdAdml0ZWpzL3BsdWdpbi1sZWdhY3knXG5pbXBvcnQgVW5vQ1NTIGZyb20gJ3Vub2Nzcy92aXRlJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGgnXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdwcm9jZXNzJ1xuXG5mdW5jdGlvbiBwYXRoUmVzb2x2ZShkaXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXNvbHZlKHByb2Nlc3MuY3dkKCksICcuJywgZGlyKVxufTtcblxuXG4vLyBodHRwczovL3ZpdGVqcy5kZXYvY29uZmlnL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcmVzb2x2ZToge1xuICAgIGFsaWFzOiB7XG4gICAgICBcIkBcIjogcGF0aFJlc29sdmUoJ3NyYycpXG4gICAgfSxcbiAgICBleHRlbnNpb25zOiBbJy50cycsICcuanMnLCAnLnZ1ZSddIC8vIFx1NEY3Rlx1NzUyOFx1OERFRlx1NUY4NFx1NTIyQlx1NTQwRFx1NjVGNlx1NjBGM1x1ODk4MVx1NzcwMVx1NzU2NVx1NzY4NFx1NTQwRVx1N0YwMFx1NTQwRFx1RkYwQ1x1NTNFRlx1NEVFNVx1ODFFQVx1NURGMSBcdTU4OUVcdTUxQ0ZcbiAgfSxcbiAgcGx1Z2luczogW1xuICAgIGxlZ2FjeSh7XG4gICAgICB0YXJnZXRzOiBbJ2RlZmF1bHRzJywgJ25vdCBJRSAxMSddLFxuICAgIH0pLFxuICAgIHZ1ZSgpLFxuICAgIFVub0NTUygpXG4gIF0sXG4gIGJhc2U6ICAnLi8nLFxuICBzZXJ2ZXI6IHtcbiAgICBob3N0OiAnMC4wLjAuMCcsXG4gIH1cbn0pXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQStULFNBQVMsb0JBQW9CO0FBQzVWLE9BQU8sU0FBUztBQUNoQixPQUFPLFlBQVk7QUFDbkIsT0FBTyxZQUFZO0FBQ25CLFNBQVMsZUFBZTtBQUN4QixPQUFPLGFBQWE7QUFFcEIsU0FBUyxZQUFZLEtBQXFCO0FBQ3hDLFNBQU8sUUFBUSxRQUFRLElBQUksR0FBRyxLQUFLLEdBQUc7QUFDeEM7QUFJQSxJQUFPLHNCQUFRLGFBQWE7QUFBQSxFQUMxQixTQUFTO0FBQUEsSUFDUCxPQUFPO0FBQUEsTUFDTCxLQUFLLFlBQVksS0FBSztBQUFBLElBQ3hCO0FBQUEsSUFDQSxZQUFZLENBQUMsT0FBTyxPQUFPLE1BQU07QUFBQTtBQUFBLEVBQ25DO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxPQUFPO0FBQUEsTUFDTCxTQUFTLENBQUMsWUFBWSxXQUFXO0FBQUEsSUFDbkMsQ0FBQztBQUFBLElBQ0QsSUFBSTtBQUFBLElBQ0osT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLE1BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxJQUNOLE1BQU07QUFBQSxFQUNSO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K
......@@ -9,6 +9,7 @@ from device_data_op.models import TableXproAllDevinfo
def on_connect(mqtt_client, userdata, flags, rc):
if rc == 0:
print('Connected successfully')
# TODO: 不能一次性订阅这么多,检测哪个站就订阅哪个站,不然往下27行报错
mqtt_client.subscribe([('/1/0/0/6', 2),
('/1/1/0/6', 2),
('/1/1/1/6', 2)])
......@@ -31,9 +32,8 @@ def on_message(mqtt_client, userdata, msg):
def send_message(data: dict, device_name: str):
"""
发送 websocket 消息
TODO: 通过不同的 port 发向不同的 group name
"""
send_websocket_message(data)
dev_info = TableXproAllDevinfo.objects.filter(dev_name=device_name).first()
if "TCP" in dev_info.comunitate_mode.upper():
......
{
"systemParams": "linux-x64-93",
"modulesFolders": [
"node_modules"
],
"flags": [],
"linkedModules": [],
"topLevelPatterns": [],
"lockfileEntries": {},
"files": [],
"artifacts": {}
}
\ No newline at end of file
/*
Navicat Premium Data Transfer
Source Server : test
Source Server Type : MySQL
Source Server Version : 80030
Source Host : 192.168.3.11:3306
Source Schema : mysql_oam_110
Target Server Type : MySQL
Target Server Version : 80030
File Encoding : 65001
Date: 22/12/2022 16:36:32
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for alarm_attribution
-- ----------------------------
DROP TABLE IF EXISTS `alarm_attribution`;
CREATE TABLE `alarm_attribution` (
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '序号,自增',
`alarmid` bigint(0) NULL DEFAULT NULL COMMENT '告警 ID',
`alarmlevel` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警级别',
`alarmdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '中文描述,应该描述故障现象 和解决问题的方法',
`alarmdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '英文描述',
`ismon` int(0) NULL DEFAULT NULL COMMENT '是否监视',
`updatetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最新更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 176 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for current_alarm
-- ----------------------------
DROP TABLE IF EXISTS `current_alarm`;
CREATE TABLE `current_alarm` (
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '告警序号',
`alarmid` bigint(0) NULL DEFAULT NULL COMMENT '告警 ID,取自告警配置列表中的 ID',
`stationid` int(0) NULL DEFAULT NULL COMMENT '告警源头,SUID 标识',
`deviceid` int(0) NULL DEFAULT NULL COMMENT '告警子设备',
`alarmlevel` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警描述',
`alarmdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`reporttime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警产生时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for current_performance
-- ----------------------------
DROP TABLE IF EXISTS `current_performance`;
CREATE TABLE `current_performance` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`perid` int(0) NULL DEFAULT NULL,
`stationid` int(0) NULL DEFAULT NULL,
`deviceid` int(0) NULL DEFAULT NULL,
`datacatlog` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldname` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldvalue` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`updatetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for history_alarm
-- ----------------------------
DROP TABLE IF EXISTS `history_alarm`;
CREATE TABLE `history_alarm` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`alarmid` int(0) NULL DEFAULT NULL COMMENT '告警 ID,取自告警配置列表中的 ID',
`stationid` int(0) NULL DEFAULT NULL COMMENT '告警源头,SUID标识',
`deviceid` int(0) NULL DEFAULT NULL,
`alarmlevel` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`starttime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警产生时间 ',
`endtime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警结束时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for log_info
-- ----------------------------
DROP TABLE IF EXISTS `log_info`;
CREATE TABLE `log_info` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`stationid` int(0) NULL DEFAULT NULL,
`deviceid` int(0) NULL DEFAULT NULL,
`manipunator` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`loglevel` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`classification` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`loginfochn` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`loginfoeng` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`reporttime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for per_attribution
-- ----------------------------
DROP TABLE IF EXISTS `per_attribution`;
CREATE TABLE `per_attribution` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`perid` bigint(0) NULL DEFAULT NULL,
`datacatlog` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`ismon` int(0) NULL DEFAULT NULL,
`isfixed` int(0) NULL DEFAULT NULL,
`fieldunit` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldtype` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operator1` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operand1` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`relation` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operator2` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operand2` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmlevel` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdeschn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdeseng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`updatetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3435 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- auto-generated definition
create table history_performance
(
id int auto_increment
primary key,
suid int not null comment '1/1/1/9 1/1/2/6 ',
value varchar(100) not null comment 'EbN0,BER,中频输入电压,ACU 20.5,1.2-34,-12.5,255',
time varchar(30) not null comment '2023-06-05 06:05:25'
);
SET FOREIGN_KEY_CHECKS = 1;
create table if not exists alarm_attribution
(
id bigserial
primary key,
alarmid bigint null,
alarmlevel varchar(30) null,
alarmdescriptionchn varchar(255) null,
alarmdescriptioneng varchar(255) null,
ismon int null,
updatetime varchar(20) null
);
create table if not exists current_alarm
(
id bigserial
primary key,
alarmid bigint null,
stationid int null,
deviceid int null,
alarmlevel varchar(30) null,
alarmdescriptionchn varchar(255) null,
alarmdescriptioneng varchar(255) null,
reporttime varchar(20) null
);
create table if not exists current_performance
(
id bigserial
primary key,
perid int null,
stationid int null,
deviceid int null,
datacatlog varchar(40) null,
fieldname varchar(40) null,
fieldvalue varchar(40) null,
perdescriptionchn varchar(255) null,
perdescriptioneng varchar(255) null,
updatetime varchar(20) null
);
create table if not exists history_alarm
(
id bigserial
primary key,
alarmid int null,
stationid int null,
deviceid int null,
alarmlevel varchar(30) null,
alarmdescriptionchn varchar(255) null,
alarmdescriptioneng varchar(255) null,
starttime varchar(20) null,
endtime varchar(20) null
);
create table if not exists history_performance
(
id serial
primary key,
suid int not null,
value varchar(100) not null,
time varchar(30) not null
);
create table if not exists log_info
(
id bigserial
primary key,
stationid int null,
deviceid int null,
manipunator varchar(20) null,
loglevel varchar(20) null,
classification varchar(20) null,
loginfochn varchar(500) null,
loginfoeng varchar(500) null,
reporttime varchar(20) null
);
create table if not exists per_attribution
(
id bigserial
primary key,
perid bigint null,
datacatlog varchar(50) null,
fieldname varchar(50) null,
perdescriptionchn varchar(255) null,
perdescriptioneng varchar(255) null,
ismon int null,
isfixed int null,
fieldunit varchar(20) null,
fieldtype varchar(20) null,
operator1 varchar(20) null,
operand1 varchar(20) null,
relation varchar(20) null,
operator2 varchar(20) null,
operand2 varchar(20) null,
alarmlevel varchar(20) null,
alarmdeschn varchar(255) null,
alarmdeseng varchar(255) null,
updatetime varchar(20) null
);
\ No newline at end of file
/*
Navicat Premium Data Transfer
Source Server : test
Source Server Type : MySQL
Source Server Version : 80030
Source Host : 192.168.3.11:3306
Source Schema : mysql_oam_110
Target Server Type : MySQL
Target Server Version : 80030
File Encoding : 65001
Date: 22/12/2022 16:36:32
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for alarm_attribution
-- ----------------------------
DROP TABLE IF EXISTS `alarm_attribution`;
CREATE TABLE `alarm_attribution` (
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '序号,自增',
`alarmid` bigint(0) NULL DEFAULT NULL COMMENT '告警 ID',
`alarmlevel` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警级别',
`alarmdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '中文描述,应该描述故障现象 和解决问题的方法',
`alarmdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '英文描述',
`ismon` int(0) NULL DEFAULT NULL COMMENT '是否监视',
`updatetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最新更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 176 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for current_alarm
-- ----------------------------
DROP TABLE IF EXISTS `current_alarm`;
CREATE TABLE `current_alarm` (
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '告警序号',
`alarmid` bigint(0) NULL DEFAULT NULL COMMENT '告警 ID,取自告警配置列表中的 ID',
`stationid` int(0) NULL DEFAULT NULL COMMENT '告警源头,SUID 标识',
`deviceid` int(0) NULL DEFAULT NULL COMMENT '告警子设备',
`alarmlevel` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警描述',
`alarmdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`reporttime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警产生时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for current_performance
-- ----------------------------
DROP TABLE IF EXISTS `current_performance`;
CREATE TABLE `current_performance` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`perid` int(0) NULL DEFAULT NULL,
`stationid` int(0) NULL DEFAULT NULL,
`deviceid` int(0) NULL DEFAULT NULL,
`datacatlog` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldname` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldvalue` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`updatetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for history_alarm
-- ----------------------------
DROP TABLE IF EXISTS `history_alarm`;
CREATE TABLE `history_alarm` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`alarmid` int(0) NULL DEFAULT NULL COMMENT '告警 ID,取自告警配置列表中的 ID',
`stationid` int(0) NULL DEFAULT NULL COMMENT '告警源头,SUID标识',
`deviceid` int(0) NULL DEFAULT NULL,
`alarmlevel` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`starttime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警产生时间 ',
`endtime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警结束时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for log_info
-- ----------------------------
DROP TABLE IF EXISTS `log_info`;
CREATE TABLE `log_info` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`stationid` int(0) NULL DEFAULT NULL,
`deviceid` int(0) NULL DEFAULT NULL,
`manipunator` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`loglevel` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`classification` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`loginfochn` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`loginfoeng` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`reporttime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for per_attribution
-- ----------------------------
DROP TABLE IF EXISTS `per_attribution`;
CREATE TABLE `per_attribution` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`perid` bigint(0) NULL DEFAULT NULL,
`datacatlog` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`ismon` int(0) NULL DEFAULT NULL,
`isfixed` int(0) NULL DEFAULT NULL,
`fieldunit` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldtype` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operator1` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operand1` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`relation` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operator2` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operand2` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmlevel` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdeschn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdeseng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`updatetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3435 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- auto-generated definition
create table history_performance
(
id int auto_increment
primary key,
suid int not null comment '1/1/1/9 1/1/2/6 ',
value varchar(100) not null comment 'EbN0,BER,中频输入电压,ACU 20.5,1.2-34,-12.5,255',
time varchar(30) not null comment '2023-06-05 06:05:25'
);
SET FOREIGN_KEY_CHECKS = 1;
/*
Navicat Premium Data Transfer
Source Server : test
Source Server Type : MySQL
Source Server Version : 80030
Source Host : 192.168.3.11:3306
Source Schema : mysql_oam_110
Target Server Type : MySQL
Target Server Version : 80030
File Encoding : 65001
Date: 22/12/2022 16:36:32
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for alarm_attribution
-- ----------------------------
DROP TABLE IF EXISTS `alarm_attribution`;
CREATE TABLE `alarm_attribution` (
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '序号,自增',
`alarmid` bigint(0) NULL DEFAULT NULL COMMENT '告警 ID',
`alarmlevel` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警级别',
`alarmdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '中文描述,应该描述故障现象 和解决问题的方法',
`alarmdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '英文描述',
`ismon` int(0) NULL DEFAULT NULL COMMENT '是否监视',
`updatetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最新更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 176 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for current_alarm
-- ----------------------------
DROP TABLE IF EXISTS `current_alarm`;
CREATE TABLE `current_alarm` (
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '告警序号',
`alarmid` bigint(0) NULL DEFAULT NULL COMMENT '告警 ID,取自告警配置列表中的 ID',
`stationid` int(0) NULL DEFAULT NULL COMMENT '告警源头,SUID 标识',
`deviceid` int(0) NULL DEFAULT NULL COMMENT '告警子设备',
`alarmlevel` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警描述',
`alarmdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`reporttime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警产生时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for current_performance
-- ----------------------------
DROP TABLE IF EXISTS `current_performance`;
CREATE TABLE `current_performance` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`perid` int(0) NULL DEFAULT NULL,
`stationid` int(0) NULL DEFAULT NULL,
`deviceid` int(0) NULL DEFAULT NULL,
`datacatlog` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldname` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldvalue` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`updatetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for history_alarm
-- ----------------------------
DROP TABLE IF EXISTS `history_alarm`;
CREATE TABLE `history_alarm` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`alarmid` int(0) NULL DEFAULT NULL COMMENT '告警 ID,取自告警配置列表中的 ID',
`stationid` int(0) NULL DEFAULT NULL COMMENT '告警源头,SUID标识',
`deviceid` int(0) NULL DEFAULT NULL,
`alarmlevel` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`starttime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警产生时间 ',
`endtime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '告警结束时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for log_info
-- ----------------------------
DROP TABLE IF EXISTS `log_info`;
CREATE TABLE `log_info` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`stationid` int(0) NULL DEFAULT NULL,
`deviceid` int(0) NULL DEFAULT NULL,
`manipunator` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`loglevel` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`classification` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`loginfochn` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`loginfoeng` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`reporttime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for per_attribution
-- ----------------------------
DROP TABLE IF EXISTS `per_attribution`;
CREATE TABLE `per_attribution` (
`id` bigint(0) NOT NULL AUTO_INCREMENT,
`perid` bigint(0) NULL DEFAULT NULL,
`datacatlog` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptionchn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`perdescriptioneng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`ismon` int(0) NULL DEFAULT NULL,
`isfixed` int(0) NULL DEFAULT NULL,
`fieldunit` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`fieldtype` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operator1` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operand1` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`relation` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operator2` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`operand2` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmlevel` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdeschn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`alarmdeseng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`updatetime` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3435 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- auto-generated definition
create table history_performance
(
id int auto_increment
primary key,
suid int not null comment '1/1/1/9 1/1/2/6 ',
value varchar(100) not null comment 'EbN0,BER,中频输入电压,ACU 20.5,1.2-34,-12.5,255',
time varchar(30) not null comment '2023-06-05 06:05:25'
);
SET FOREIGN_KEY_CHECKS = 1;
......@@ -22,6 +22,9 @@ class AllDevCmdDefineAndVersion(models.Model):
lua_script_out = models.TextField() # Field name made lowercase.
version = models.TextField()
def __hash__(self) -> int:
return super().__hash__()
def __eq__(self, __value: object) -> bool:
if not isinstance(__value, AllDevCmdDefineAndVersion):
return False
......@@ -66,6 +69,9 @@ class AllProtocolDefinAndVersion(models.Model):
cmd_explain = models.TextField() # Field name made lowercase.
version = models.TextField()
def __hash__(self) -> int:
return super().__hash__()
def __eq__(self, __value: object) -> bool:
if not isinstance(__value, AllProtocolDefinAndVersion):
return False
......@@ -87,6 +93,10 @@ class AllProtocolDefinAndVersion(models.Model):
class CurrentDevVersion(models.Model):
protocol_name = models.TextField(primary_key=True) # Field name made lowercase.
version = models.TextField()
def __hash__(self) -> int:
return super().__hash__()
class Meta:
db_table = 'CurrentDevVersion'
......
......@@ -24,7 +24,7 @@ def init_protocol_version_manage(protocol_name: str) -> None:
protocol_cmds_serializer = TableDevCmdNamePollSerializer(protocol_cmds, many=True)
all_protocol_objects: list[AllProtocolDefinAndVersion] = []
for protocol in protocol_cmds_serializer.data:
protocol['version'] = json.dumps([INIT_VERSION])
protocol['version'] = INIT_VERSION
del protocol['id']
all_protocol_objects.append(AllProtocolDefinAndVersion(**protocol))
AllProtocolDefinAndVersion.objects.bulk_create(all_protocol_objects)
......@@ -35,7 +35,7 @@ def init_protocol_version_manage(protocol_name: str) -> None:
cmd_fields_serializer = TableAllDevCmdDefineSerializer(cmd_fields, many=True)
all_cmd_fields_objects: list[AllDevCmdDefineAndVersion] = []
for cmd_field in cmd_fields_serializer.data:
cmd_field['version'] = json.dumps([INIT_VERSION])
cmd_field['version'] = INIT_VERSION
del cmd_field['id']
all_cmd_fields_objects.append(AllDevCmdDefineAndVersion(**cmd_field))
AllDevCmdDefineAndVersion.objects.bulk_create(all_cmd_fields_objects)
......@@ -66,19 +66,17 @@ def update_device_protocol_and_cmds(protocol_name: str, version: str) -> Respons
CurrentDevVersion.objects.filter(protocol_name=protocol_name).update(version=version)
# 更新协议版本信息
all_protocol = AllProtocolDefinAndVersion.objects.filter(protocol_name=protocol_name).all()
current_version_protocols = [protocol for protocol in all_protocol
if version in json.loads(protocol.version)]
current_version_protocols = AllProtocolDefinAndVersion.objects.filter(protocol_name=protocol_name,
version=version).all()
cmd_fields = []
for current_version_protocol in current_version_protocols:
cmd_name = current_version_protocol.cmd_name
cmd_fields.extend([item for item in AllDevCmdDefineAndVersion.objects.filter(cmd_name=cmd_name).all()
if version in json.loads(item.version)])
cmd_fields.extend(AllDevCmdDefineAndVersion.objects.filter(cmd_name=cmd_name, version=version).all())
current_version_protocol_serializer = AllProtocolDefinAndVersionSerializer(current_version_protocols, many=True)
cmd_fields_serializer = AllDevCmdDefineAndVersionSerializer(cmd_fields, many=True)
# 更新 device 所使用的命令表数据
# 要先删除这,因为它使用的是 TableDevCmdNamePoll 的旧数据,更新 device 所使用的字段表数据
try:
TableAllDevCmdDefine.objects.filter(cmd_name__in=[cmd.cmd_name
for cmd in TableDevCmdNamePoll.objects.filter(protocol_name=protocol_name).all()]).delete()
......@@ -88,7 +86,8 @@ def update_device_protocol_and_cmds(protocol_name: str, version: str) -> Respons
except Exception as e:
print(e)
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# 更新 device 所使用的协议表数据
# 更新 device 所使用的指令表数据
try:
TableDevCmdNamePoll.objects.filter(protocol_name=protocol_name).delete()
TableDevCmdNamePoll.objects.bulk_create([TableDevCmdNamePoll(
......@@ -97,11 +96,15 @@ def update_device_protocol_and_cmds(protocol_name: str, version: str) -> Respons
except Exception as e:
print(e)
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# 返回数据
# 返回数据,需要返回生成之后的数据,特别是 id,因此需要重新请求一次
cmds = []
for protocol in current_version_protocol_serializer.data:
protocol['fields'] = sorted([item for item in cmd_fields_serializer.data
new_cmds = TableDevCmdNamePoll.objects.filter(protocol_name=protocol_name).all()
new_cmds_serializer = TableDevCmdNamePollSerializer(new_cmds, many=True)
new_cmd_fields = TableAllDevCmdDefine.objects.filter(cmd_name__in=[cmd.cmd_name for cmd in new_cmds]).all()
new_cmd_fields_serializer = TableAllDevCmdDefineSerializer(new_cmd_fields, many=True)
for protocol in new_cmds_serializer.data:
protocol['fields'] = sorted([item for item in new_cmd_fields_serializer.data
if item['cmd_name'] == protocol['cmd_name']],
key=lambda item: item['fieldindex'])
cmds.append(protocol)
......
......@@ -4,7 +4,9 @@ from rest_framework.routers import DefaultRouter
from . import views
router = DefaultRouter()
router.register(r'current_versions', views.CurrentDevVersionViewSet)
router.register('current_versions', views.CurrentDevVersionViewSet)
router.register('protocol_version_manage/cmd_fields_manager',
views.AllDevCmdDefineAndVersionViewSet)
urlpatterns = [
re_path(r'^protocol_version_manage/init/$', views.init),
......@@ -15,6 +17,7 @@ urlpatterns = [
re_path(r'^protocol_version_manage/file_download/(?P<protocol_name>.+)/(?P<version>.+)/$',
views.raw_file_download),
re_path(r'^all_protocol_version/$', views.AllProtocolVersionViewSet.as_view({'get': 'list'})),
re_path(r'^protocol_vesrion_manage/delete_protocol_vesrion/$', views.delete_protocol_vesrion),
]
urlpatterns += router.urls
......@@ -8,10 +8,11 @@ from rest_framework.decorators import api_view, parser_classes
from rest_framework.parsers import MultiPartParser
from rest_framework.response import Response
from rest_framework import status
from rest_framework.viewsets import GenericViewSet
from rest_framework.viewsets import GenericViewSet, ModelViewSet
from rest_framework.mixins import ListModelMixin
from drf_yasg.utils import swagger_auto_schema
from drf_yasg import openapi
from device_data_op.models import TableAllDevCmdDefine, TableDevCmdNamePoll
from .models import (AllDevCmdDefineAndVersion, AllProtocolDefinAndVersion,
AllProtocolVersion, CurrentDevVersion)
from .serializers import (AllDevCmdDefineAndVersionSerializer, AllProtocolDefinAndVersionSerializer,
......@@ -134,6 +135,7 @@ def raw_file_upload(request):
file_obj = request.FILES.get('file')
protocol_name = request.data.get('protocol_name')
version = request.data.get('version')
print(version, protocol_name)
if protocol_name is None or version is None:
return Response(status=status.HTTP_400_BAD_REQUEST)
......@@ -196,5 +198,83 @@ def raw_file_download(request, protocol_name, version):
class CurrentDevVersionViewSet(GenericViewSet, ListModelMixin):
"""
获取所有协议当前的版本
"""
"""
获取所有协议当前的版本
"""
queryset = CurrentDevVersion.objects.all()
serializer_class = CurrentDevVersionSerializer
@swagger_auto_schema(methods=['POST'], request_body=openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'protocol_name': openapi.Schema(type=openapi.TYPE_STRING),
'version': openapi.Schema(type=openapi.TYPE_STRING),
}
))
@api_view(['POST'])
def delete_protocol_vesrion(request):
"""
删除特定版本的协议
"""
protocol_name = request.data.get('protocol_name')
version = request.data.get('version')
print(version, protocol_name)
if protocol_name is None or version is None:
return Response(status=status.HTTP_400_BAD_REQUEST)
all_cmds = AllProtocolDefinAndVersion.objects.filter(protocol_name=protocol_name).all()
for cmd in all_cmds:
cmd_vesrions = json.loads(cmd.version)
if len(cmd_vesrions) == 1 and version in cmd_vesrions:
# 这个命令是这个版本独有的
cmd.delete()
elif version in cmd_vesrions:
cmd_vesrions.remove(version)
cmd.version = json.dumps(cmd_vesrions)
cmd.save()
else:
# 这个命令不在这个版本中
continue
all_fields = AllDevCmdDefineAndVersion.objects.filter(cmd_name=cmd.cmd_name).all()
for field in all_fields:
field_versions = json.loads(field.version)
if len(field_versions) == 1 and version in field_versions:
# 这个字段是这个版本独有的
field.delete()
elif version in field_versions:
field_versions.remove(version)
field.version = json.dumps(field_versions)
field.save()
else:
# 这个字段不在这个版本中
continue
protocol_vesrions = AllProtocolVersion.objects.filter(protocol_name=protocol_name).first()
protocol_vesrions_l: list = json.loads(protocol_vesrions.version_paths)
vesrions_l: list = [version_paths['version'] for version_paths in protocol_vesrions_l]
if len(vesrions_l) == 1:
# 这个版本是这个协议独有的
protocol_vesrions.delete()
elif version in vesrions_l:
protocol_vesrions_l.pop(vesrions_l.index(version))
protocol_vesrions.version_paths = json.dumps(protocol_vesrions_l)
protocol_vesrions.save()
return Response(status=status.HTTP_200_OK)
class AllDevCmdDefineAndVersionViewSet(ModelViewSet):
queryset = AllDevCmdDefineAndVersion.objects.all()
serializer_class = AllDevCmdDefineAndVersionSerializer
def perform_create(self, serializer):
serializer.validated_data['version'] = json.dumps([serializer.validated_data['version']])
super().perform_create(serializer)
serializer.validated_data.pop('version')
TableAllDevCmdDefine.objects.create(**serializer.validated_data)
......@@ -44,7 +44,7 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders',
# 'corsheaders',
'rest_framework',
'drf_yasg',
]
......@@ -88,7 +88,7 @@ WSGI_APPLICATION = 'vue_django.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'xdc.sqlite',
'NAME': os.path.join(BASE_DIR, 'database', 'xdc.sqlite'),
}
}
......
......@@ -34,7 +34,6 @@ schema_view = get_schema_view(
urlpatterns = [
path('admin/', admin.site.urls),
path("", index),
path("test/upload/", upload),
path("test/download/", download),
path("api/mqtt/", include("mqtt.urls")),
......@@ -47,5 +46,6 @@ urlpatterns = [
re_path(r'^assets/(?P<path>.*)/$', serve, {'document_root': settings.STATIC_ROOT}),
re_path(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
re_path(r'^[a-zA-Z]*', index),
]
File deleted
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