예제 #1
0
def save_device():
    """读取设备"""
    with open("./utils/devices.json") as file:
        rows = json.load(file)
        for r in rows:
            resp = map.googleToBaidu(r[2], r[1])
            #print(resp)
            device = Device(sn=r[0],
                            google_lng=r[2],
                            google_lat=r[1],
                            baidu_lng=resp["result"][0]["x"],
                            baidu_lat=resp["result"][0]["y"])
            db.session.add(device)
        db.session.commit()
    def populate(self):
        # devices
        device1 = Device(device_id="1")
        device2 = Device(device_id="2")
        device3 = Device(device_id="3")
        device4 = Device(device_id="4")

        # GSM events
        event1 = GsmEvent(date=datetime.now() + timedelta(days=-2))
        event2 = GsmEvent(date=datetime.now())
        event3 = GsmEvent(date=datetime.now())

        device1.events = [event1, event2]
        device2.events = [event3]
        device3.events = []

        db.session.add(device1)
        db.session.add(device2)
        db.session.add(device3)
        db.session.add(device4)
        db.session.add(event1)
        db.session.add(event2)
        db.session.add(event3)
        db.session.commit()
예제 #3
0
def check_and_save(device_dict):
    device = device_dict
    print(device)
    # 获取数据库ID
    datacenter_name = device.get('datacneter_name')
    area_name = device.get('area_name')
    cabinet_sn = device.get('cabinet_sn')
    start_u = device.get('start_u')
    device_contract_order = device.get('device_contract_order')
    secure_contract_orders = device.get('secure_contract_orders')
    device['secure_contracts'] = []
    passwords = device.get('passwords')
    pop_list = [
        'datacenter_name', 'area_name', 'cabinet_sn', 'start_u',
        'device_contract_order', 'secure_contract_orders', 'passwords'
    ]
    if cabinet_sn:
        cabinet = Cabinet.query.filter_by(cabinet_sn=cabinet_sn).one_or_none()
        if not cabinet:
            print('找不到指定的机柜')
            raise Exception("找不到指定的机柜")
        if datacenter_name:
            datacenter = cabinet.room.building.datacenter
            if datacenter.datacenter_name != datacenter_name:
                print("+" * 100, "\n", datacenter.datacenter_name)
                print('指定机柜不在指定的数据中心内')
                raise Exception("指定机柜不在指定的数据中心内")
            else:
                device['datacenter_id'] = datacenter.id
        if start_u:
            start_u = cabinet.u_ids.filter_by(up=start_u).one_or_none()
            if not start_u:
                print('没有指定的起始U位')
                raise Exception('没有指定的起始U位')
            device['start_u_id'] = start_u.id
    else:
        if datacenter_name:
            datacenter = DataCenter.query.filter_by(
                datacenter_name=datacenter_name).one_or_none()
            print("*" * 100, "\n", datacenter.datacenter_name)
            if not datacenter:
                print('不存在指定的数据中心')
                raise Exception("不存在指定的数据中心")
            device['datacenter_id'] = datacenter.id
        if area_name:
            net_area = NetArea.query.filter_by(
                area_name=area_name).one_or_none()
            if not net_area:
                print('不存在指定的网络区域')
                raise Exception("不存在指定的网络区域")
    if device_contract_order:
        print(device_contract_order)
        contract = DeviceContract.query.filter_by(
            contract_order=device_contract_order).one_or_none()
        if not contract:
            print("不存在设备合同:%s" % device_contract_order)
            raise Exception("不存在设备合同:%s" % device_contract_order)
        device['device_contract_id'] = contract.id

    # 将所需要维保合同对象添加到字典中
    for secure_order in secure_contract_orders:
        contract = ContractSecure.query.filter_by(
            contract_order=secure_order).one_or_none()
        if not contract:
            print("不存在设备合同:%s" % secure_order)
            raise Exception("不存在设备合同:%s" % secure_order)
        device['secure_contracts'].append(contract)
    # print(device)
    # 删除创建设备数据库对象不需要的字段
    res_dict = {}
    for key in device.keys():
        print('1', key)
        if key not in pop_list:
            print('2', key)
            res_dict[key] = device[key]
    print(res_dict)
    device_db = Device(**res_dict)
    db.session.add(device_db)
    # 创建密码表记录
    for password in passwords:
        password['device'] = device_db
        passwd_db = DevicePasswd(**password)
        db.session.add(passwd_db)