更新代码

main
周平 12 months ago
parent b7a3c0fb94
commit c5e4d44827

@ -1,4 +1,4 @@
from website.handlers.model import handler from website.handlers.alg_model import handler
handlers = [ handlers = [
# ("/", handler.Handler), # ("/", handler.Handler),

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from website.handlers.model_hub import handler from website.handlers.alg_model_hub import handler
handlers = [ handlers = [
# ("/", handler.Handler), # ("/", handler.Handler),

@ -1 +1,93 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import logging
from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from website.db import get_session
from website.handlers.enterprise_entity.db import EnterpriseEntityDB
from website.handlers.enterprise_node.db import EnterpriseNodeDB
Base = declarative_base()
class EnterpriseDevice(Base):
__tablename__ = 'enterprise_device'
id = Column(Integer, primary_key=True)
suid = Column(String, len=10, default="")
entity_id = Column(Integer)
entity_suid = Column(String)
node_id = Column(Integer)
node_suid = Column(String)
classification = Column(String)
name = Column(String)
addr = Column(String)
device_model = Column(String)
param = Column(String)
comment = Column(String)
delete = Column("del", Integer, default=0)
create_time = Column(DateTime)
update_time = Column(DateTime)
class EnterpriseDeviceDB(object):
def add_device(self, device):
entity_id = device["entity_id"]
node_id = device["node_id"]
entity_suid = EnterpriseEntityDB().get_entity_suid(entity_id)
node_suid = EnterpriseNodeDB().get_node_uid(node_id)
device["entity_suid"] = entity_suid
device["node_suid"] = node_suid
new_device = EnterpriseDevice(**device)
with get_session() as session:
try:
# session.execute(
# text(
# """INSERT INTO enterprise_device
# (suid, entity_id, entity_suid, node_id, node_suid, classification, name, addr, device_model, param, comment)
# values (:suid, :entity_id, :entity_suid, :node_id, :node_suid, :classification, :name, :addr, :device_model, :param, :comment)"""
# ),
# device)
session.add(new_device)
except Exception as e:
logging.error("Failed to add device")
raise e
return
def edit_device(self, device):
device_id = device["id"]
with get_session() as session:
try:
session.query(EnterpriseDevice).filter(EnterpriseDevice.id == device_id).update(device)
except Exception as e:
logging.error("Failed to edit device")
raise e
return
def delete_device(self, device_id):
with get_session() as session:
try:
session.query(EnterpriseDevice).filter(EnterpriseDevice.id == device_id).update({"delete": 1})
except Exception as e:
logging.error("Failed to delete device")
raise e
return
def list_devices(self, node_id, pageNo, pageSize):
with get_session() as session:
try:
devices = session.query(EnterpriseDevice) \
.filter(EnterpriseDevice.node_id == node_id, EnterpriseDevice.delete != 1) \
.order_by(EnterpriseDevice.create_time.desc()).limit(pageSize).offset((pageNo - 1) * pageSize).all()
except Exception as e:
logging.error("Failed to list devices")
raise e
return devices

@ -5,7 +5,7 @@ from sqlalchemy import text
from website import errors, db from website import errors, db
from website.handler import APIHandler, authenticated from website.handler import APIHandler, authenticated
from website.util import shortuuid from website.util import shortuuid
from website.handlers.enterprise_device import db as DB_Device
class DeviceClassificationAddHandler(APIHandler): class DeviceClassificationAddHandler(APIHandler):
""" """
@ -94,39 +94,155 @@ class DeviceClassificationDeleteHandler(APIHandler):
class DeviceAddHandler(APIHandler): class DeviceAddHandler(APIHandler):
""" """
- 描述企业节点添加设备
- 请求方式post
- 请求参数
>- entity_id, int, 企业id
>- node_id, int
>- name, string, 设备名称
>- addr, string, 设备位置
>- classification string, 设备分类
>- device_model, string, 设备型号
>- param, string, 设备参数
>- comment, string, 备注
- 返回值
```
```
""" """
@authenticated @authenticated
def post(self): def post(self):
entity_id = self.get_int_argument('entity_id')
node_id = self.get_int_argument('node_id')
name = self.get_escaped_argument('name', '')
addr = self.get_escaped_argument('addr', '')
classification = self.get_escaped_argument('classification', '')
device_model = self.get_escaped_argument('device_model', '')
param = self.get_escaped_argument('param', '')
comment = self.get_escaped_argument('comment', '')
if not name:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '设备名称不能为空')
if not entity_id or not node_id:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '企业节点不能为空')
device_data = {
"entity_id": entity_id,
"node_id": node_id,
"name": name,
"addr": addr,
"classification": classification,
"device_model": device_model,
"param": param,
"comment": comment
}
db_device = DB_Device.EnterpriseDeviceDB()
db_device.add_device(device_data)
self.finish() self.finish()
class DeviceEditHandler(APIHandler): class DeviceEditHandler(APIHandler):
""" """
- 描述企业节点编辑设备
- 请求方式post
- 请求参数
>- device_id, int, 设备id
>- name, string, 设备名称
>- addr, string, 设备位置
>- classification string, 设备分类的short uuid
>- device_model, string, 设备型号
>- param, string, 设备参数
>- comment, string, 备注
- 返回值
""" """
@authenticated @authenticated
def post(self): def post(self):
device_id = self.get_int_argument('device_id')
name = self.get_escaped_argument('name', '')
addr = self.get_escaped_argument('addr', '')
classification = self.get_escaped_argument('classification', '')
device_model = self.get_escaped_argument('device_model', '')
param = self.get_escaped_argument('param', '')
comment = self.get_escaped_argument('comment', '')
if not device_id:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '设备id不能为空')
if not name:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '设备名称不能为空')
device_data = {
"id": device_id,
"name": name,
"addr": addr,
"classification": classification,
"device_model": device_model,
"param": param,
"comment": comment
}
db_device = DB_Device.EnterpriseDeviceDB()
db_device.edit_device(device_data)
self.finish() self.finish()
class DeviceDeleteHandler(APIHandler): class DeviceDeleteHandler(APIHandler):
""" """
### /enterprise/entity/nodes/device/delete
- 描述企业节点删除设备
- 请求方式post
- 请求参数
>- node_id, int
>- device_id, int, 设备id
- 返回值
""" """
@authenticated @authenticated
def post(self): def post(self):
node_id = self.get_int_argument('node_id')
device_id = self.get_int_argument('device_id')
if not node_id or not device_id:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '企业节点或设备不能为空')
db_device = DB_Device.EnterpriseDeviceDB()
db_device.delete_device(device_id)
self.finish() self.finish()
class DeviceListHandler(APIHandler): class DeviceListHandler(APIHandler):
""" """
- 描述企业节点设备列表
- 请求方式post
- 请求参数
> - pageNo
> - pageSize
> - node_id, int, 节点id
- 返回值
```
{
"count": 123,
"data": [
{
"device_id": 123,
"device_name": "xxx",
"device_class": "xxx", 设备类型
"deployed": 0, # 是否部署, 0/未部署, 1/已部署
},
...
]
}
```
""" """
@authenticated @authenticated
def post(self): def post(self):
node_id = self.get_int_argument('node_id')
pageNo = self.get_int_argument('pageNo', 1)
pageSize = self.get_int_argument('pageSize', 20)
if not node_id:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, '企业节点不能为空')
db_device = DB_Device.EnterpriseDeviceDB()
data = db_device.list_devices(node_id=node_id, pageNo=pageNo, pageSize=pageSize)
self.finish() self.finish()

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import logging import logging
from website.db import get_session from website.db import get_session, to_json
from sqlalchemy import text from sqlalchemy import text
class EnterpriseEntityDB(object): class EnterpriseEntityDB(object):
@ -9,8 +9,10 @@ class EnterpriseEntityDB(object):
pass pass
def select_entity_suid(self, entity_id: int) -> str: def get_entity_suid(self, entity_id: int) -> str:
with get_session() as session: with get_session() as session:
res = session.execute(text("select suid from enterprise where id=:id"), res = session.execute(text("select suid from enterprise where id=:id"),
{"id": entity_id}) {"id": entity_id})
return res.fetchone()["suid"] entity = to_json(res)
return entity["suid"] if entity else ""

@ -4,7 +4,7 @@ from typing import List, Dict, Any
from sqlalchemy import text from sqlalchemy import text
from website.db import get_session, to_json_list from website.db import get_session, to_json_list, to_json
""" """
CREATE TABLE `enterprise_node` ( CREATE TABLE `enterprise_node` (
@ -119,4 +119,12 @@ class EnterpriseNodeDB(object):
sql = ("update enterprise_node set del=1 where id=:id") sql = ("update enterprise_node set del=1 where id=:id")
param = {"id": node_id} param = {"id": node_id}
session.execute(text(sql), param) session.execute(text(sql), param)
return 0 return 0
def get_node_uid(self, node_id: int) -> str:
with get_session() as session:
sql = ("select suid from enterprise_node where id=:id")
param = {"id": node_id}
res = session.execute(text(sql), param)
node_list = to_json(res)
return node_list["suid"] if node_list else ""

@ -39,7 +39,7 @@ class AddHandler(APIHandler):
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误") raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数错误")
db_entity = DB_Entity.EnterpriseEntityDB() db_entity = DB_Entity.EnterpriseEntityDB()
entity_suid = db_entity.select_entity_suid(entity_id) entity_suid = db_entity.get_entity_suid(entity_id)
db_node = DB_Node.EnterpriseNodeDB() db_node = DB_Node.EnterpriseNodeDB()
db_node.insert_node({ db_node.insert_node({

Loading…
Cancel
Save