删除 device
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
@@ -1,6 +0,0 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class DeviceConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'device'
|
||||
@@ -1,73 +0,0 @@
|
||||
from django.db import models
|
||||
|
||||
from dvadmin.utils.models import CoreModel, table_prefix
|
||||
|
||||
|
||||
class Template(CoreModel):
|
||||
CLASSIFY_CHOICE = (
|
||||
(0, "网关"),
|
||||
(1, "终端设备"),
|
||||
)
|
||||
classify = models.SmallIntegerField(choices=CLASSIFY_CHOICE, verbose_name="模板类别")
|
||||
name = models.CharField(max_length=128, verbose_name="模板名称", unique=True)
|
||||
|
||||
class Meta:
|
||||
db_table = table_prefix + 'device_template'
|
||||
verbose_name = "模板表"
|
||||
verbose_name_plural = verbose_name
|
||||
ordering = ("-id",)
|
||||
|
||||
|
||||
class TemplateDetail(CoreModel):
|
||||
template = models.ForeignKey(to="Template", null=False, on_delete=models.CASCADE, db_constraint=False,
|
||||
verbose_name="所属模板")
|
||||
key_title = models.CharField(max_length=64, verbose_name="键标题", unique=True)
|
||||
key_name = models.CharField(max_length=64, verbose_name="键名")
|
||||
key_type = models.CharField(max_length=32, verbose_name="键值类型")
|
||||
parent_key = models.ForeignKey(to="TemplateDetail", null=True, on_delete=models.CASCADE, db_constraint=False,
|
||||
verbose_name="父级键")
|
||||
|
||||
class Meta:
|
||||
db_table = table_prefix + 'device_template_detail'
|
||||
verbose_name = "模板详情表"
|
||||
verbose_name_plural = verbose_name
|
||||
ordering = ("-id",)
|
||||
unique_together = (('key_name', 'parent_key'),)
|
||||
|
||||
|
||||
class Gateway(CoreModel):
|
||||
name = models.CharField(max_length=128, verbose_name="设备名称", unique=True)
|
||||
specification = models.CharField(max_length=32, verbose_name="设备型号")
|
||||
mac_address = models.CharField(max_length=32, verbose_name="设备MAC地址")
|
||||
version = models.CharField(max_length=64, verbose_name="设备固件版本号")
|
||||
ip_address = models.CharField(max_length=32, verbose_name="设备IP地址")
|
||||
physics_address = models.CharField(max_length=255, default="暂无位置信息", verbose_name="设备实际地址")
|
||||
account = models.CharField(max_length=32, verbose_name="设备账号")
|
||||
password = models.CharField(max_length=32, verbose_name="设备密码")
|
||||
template = models.ForeignKey(to="Template", null=False, on_delete=models.CASCADE, db_constraint=False,
|
||||
verbose_name="所用模板")
|
||||
|
||||
class Meta:
|
||||
db_table = table_prefix + 'device_gateways'
|
||||
verbose_name = "网关表"
|
||||
verbose_name_plural = verbose_name
|
||||
ordering = ("-id",)
|
||||
|
||||
|
||||
class Terminal(CoreModel):
|
||||
name = models.CharField(max_length=128, verbose_name="设备名称", unique=True)
|
||||
specification = models.CharField(max_length=32, verbose_name="设备型号")
|
||||
identify = models.CharField(max_length=128, verbose_name="设备标识", unique=True)
|
||||
physics_address = models.CharField(max_length=255, default="暂无位置信息", verbose_name="设备实际地址")
|
||||
project = models.CharField(max_length=128, verbose_name="所属项目")
|
||||
remark = models.CharField(max_length=255, null=True, verbose_name="设备备注")
|
||||
gateway = models.ForeignKey(to=Gateway, null=True, on_delete=models.CASCADE, db_constraint=False,
|
||||
verbose_name="关联网关")
|
||||
template = models.ForeignKey(to="Template", null=False, on_delete=models.CASCADE, db_constraint=False,
|
||||
verbose_name="所用模板")
|
||||
|
||||
class Meta:
|
||||
db_table = table_prefix + 'device_terminal'
|
||||
verbose_name = "终端设备表"
|
||||
verbose_name_plural = verbose_name
|
||||
ordering = ("-id",)
|
||||
@@ -1,6 +0,0 @@
|
||||
from django.urls import path
|
||||
from device.websocket import DeviceStatusWebSocket
|
||||
|
||||
websocket_urlpatterns = [
|
||||
path('ws/gateway_status/<str:token>/', DeviceStatusWebSocket.as_asgi()),
|
||||
]
|
||||
@@ -1,3 +0,0 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
@@ -1,16 +0,0 @@
|
||||
from django.urls import path
|
||||
from rest_framework import routers
|
||||
|
||||
from device.views.gateway import GatewayViewSet
|
||||
from device.views.template import TemplateViewSet, TemplateDetailViewSet
|
||||
from device.views.terminal import TerminalViewSet
|
||||
|
||||
|
||||
device_url = routers.SimpleRouter()
|
||||
device_url.register(r'gateway', GatewayViewSet)
|
||||
device_url.register(r'template', TemplateViewSet)
|
||||
device_url.register(r'template_detail', TemplateDetailViewSet)
|
||||
device_url.register(r'terminal', TerminalViewSet)
|
||||
|
||||
urlpatterns = []
|
||||
urlpatterns += device_url.urls
|
||||
@@ -1,18 +0,0 @@
|
||||
from dvadmin.utils.serializers import CustomModelSerializer
|
||||
from dvadmin.utils.viewset import CustomModelViewSet
|
||||
from device.models import Gateway
|
||||
|
||||
|
||||
class GatewaySerializer(CustomModelSerializer):
|
||||
"""网关管理序列化器"""
|
||||
|
||||
class Meta:
|
||||
model = Gateway
|
||||
fields = '__all__'
|
||||
read_only_fields = ['id']
|
||||
|
||||
|
||||
class GatewayViewSet(CustomModelViewSet):
|
||||
"""网关管理视图集"""
|
||||
queryset = Gateway.objects.all()
|
||||
serializer_class = GatewaySerializer
|
||||
@@ -1,33 +0,0 @@
|
||||
from dvadmin.utils.serializers import CustomModelSerializer
|
||||
from dvadmin.utils.viewset import CustomModelViewSet
|
||||
from device.models import Template, TemplateDetail
|
||||
|
||||
|
||||
class TemplateSerializer(CustomModelSerializer):
|
||||
"""模板管理序列化器"""
|
||||
|
||||
class Meta:
|
||||
model = Template
|
||||
fields = '__all__'
|
||||
read_only_fields = ['id']
|
||||
|
||||
|
||||
class TemplateDetailSerializer(CustomModelSerializer):
|
||||
"""模板详情序列化器"""
|
||||
|
||||
class Meta:
|
||||
model = TemplateDetail
|
||||
fields = '__all__'
|
||||
read_only_fields = ['id']
|
||||
|
||||
|
||||
class TemplateViewSet(CustomModelViewSet):
|
||||
"""模板管理视图集"""
|
||||
queryset = Template.objects.all()
|
||||
serializer_class = TemplateSerializer
|
||||
|
||||
|
||||
class TemplateDetailViewSet(CustomModelViewSet):
|
||||
"""模板详情视图集"""
|
||||
queryset = TemplateDetail.objects.all()
|
||||
serializer_class = TemplateDetailSerializer
|
||||
@@ -1,18 +0,0 @@
|
||||
from dvadmin.utils.serializers import CustomModelSerializer
|
||||
from dvadmin.utils.viewset import CustomModelViewSet
|
||||
from device.models import Terminal
|
||||
|
||||
|
||||
class TerminalSerializer(CustomModelSerializer):
|
||||
"""终端设备管理序列化器"""
|
||||
|
||||
class Meta:
|
||||
model = Terminal
|
||||
fields = '__all__'
|
||||
read_only_fields = ['id']
|
||||
|
||||
|
||||
class TerminalViewSet(CustomModelViewSet):
|
||||
"""终端设备管理视图集"""
|
||||
queryset = Terminal.objects.all()
|
||||
serializer_class = TerminalSerializer
|
||||
@@ -1,41 +0,0 @@
|
||||
import json
|
||||
from hashlib import md5
|
||||
from datetime import datetime
|
||||
|
||||
import jwt
|
||||
from channels.generic.websocket import AsyncJsonWebsocketConsumer
|
||||
|
||||
from application.websocketConfig import set_message
|
||||
|
||||
|
||||
class DeviceStatusWebSocket(AsyncJsonWebsocketConsumer):
|
||||
"""设备状态ws"""
|
||||
chat_group = 'device_status'
|
||||
|
||||
async def connect(self):
|
||||
try:
|
||||
print('设备ws创建连接', self.scope)
|
||||
self.token = self.scope['url_route']['kwargs']['token']
|
||||
decoded_result = jwt.decode(self.token, settings.SECRET_KEY, algorithms=['HS256'])
|
||||
if decoded_result:
|
||||
self.uid = decoded_result.get('user_id')
|
||||
self.hash = md5(str(self.token).encode('utf-8'))
|
||||
self.chat_name = f'{self.chat_group}:user_{self.uid}'
|
||||
await self.channel_layer.group_add(self.chat_name, self.channel_name)
|
||||
await self.accept()
|
||||
else:
|
||||
raise jwt.InvalidSignatureError()
|
||||
except jwt.InvalidSignatureError:
|
||||
await self.send_json(set_message('system', 'SYSTEM', {'message': 'Token无效'}), True)
|
||||
await self.disconnect(None)
|
||||
except jwt.ExpiredSignatureError:
|
||||
await self.send_json(set_message('system', 'SYSTEM', {'message': 'Token过期'}), True)
|
||||
await self.disconnect(None)
|
||||
|
||||
async def disconnect(self, code):
|
||||
print('设备ws连接关闭')
|
||||
await self.channel_layer.group_discard(self.chat_name, self.channel_name)
|
||||
try:
|
||||
await self.close(code)
|
||||
except:
|
||||
pass
|
||||
Reference in New Issue
Block a user