更新代码

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 = [
# ("/", handler.Handler),

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

@ -1 +1,93 @@
# -*- 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.handler import APIHandler, authenticated
from website.util import shortuuid
from website.handlers.enterprise_device import db as DB_Device
class DeviceClassificationAddHandler(APIHandler):
"""
@ -94,39 +94,155 @@ class DeviceClassificationDeleteHandler(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
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()
class DeviceEditHandler(APIHandler):
"""
- 描述企业节点编辑设备
- 请求方式post
- 请求参数
>- device_id, int, 设备id
>- name, string, 设备名称
>- addr, string, 设备位置
>- classification string, 设备分类的short uuid
>- device_model, string, 设备型号
>- param, string, 设备参数
>- comment, string, 备注
- 返回值
"""
@authenticated
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()
class DeviceDeleteHandler(APIHandler):
"""
### /enterprise/entity/nodes/device/delete
- 描述企业节点删除设备
- 请求方式post
- 请求参数
>- node_id, int
>- device_id, int, 设备id
- 返回值
"""
@authenticated
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()
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
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()

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import logging
from website.db import get_session
from website.db import get_session, to_json
from sqlalchemy import text
class EnterpriseEntityDB(object):
@ -9,8 +9,10 @@ class EnterpriseEntityDB(object):
pass
def select_entity_suid(self, entity_id: int) -> str:
def get_entity_suid(self, entity_id: int) -> str:
with get_session() as session:
res = session.execute(text("select suid from enterprise where id=: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 website.db import get_session, to_json_list
from website.db import get_session, to_json_list, to_json
"""
CREATE TABLE `enterprise_node` (
@ -120,3 +120,11 @@ class EnterpriseNodeDB(object):
param = {"id": node_id}
session.execute(text(sql), param)
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, "参数错误")
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.insert_node({

Loading…
Cancel
Save