# -*- coding: utf-8 -*- import logging from sqlalchemy import Column, Integer, String, DateTime, func from sqlalchemy.ext.declarative import declarative_base from website.db_mysql import get_session from website.util import shortuuid from website.db.enterprise_entity import EnterpriseEntityDB from website.db.enterprise_node import EnterpriseNodeDB Base = declarative_base() class EnterpriseDevice(Base): __tablename__ = 'enterprise_device' id = Column(Integer, primary_key=True) suid = Column(String(length=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, default=func.now()) update_time = Column(DateTime, default=func.now()) 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 device["suid"] = shortuuid.ShortUUID().random(10) 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