def handle_sync_workshop(socket, message): workshop_code = message['workshop_code'] workshop_query = Workshop.select().where(Workshop.code == workshop_code) workshop = workshop_query[0] devices = Device.select().where(Device.workshop == workshop) device_list = '' for device in devices: device_list = '%s|%s' % (device_list, device.code) j_workshop = { 'name': workshop.name, 'code': workshop.code, 'device_list': device_list } return 0, j_workshop
def handle_sync_workshop_list(socket, message): workshops = Workshop.select() workshop_list = [] for workshop in workshops: devices = Device.select().where(Device.workshop == workshop) device_list = '' for device in devices: device_list = '%s|%s' % (device_list, device.code) workshop_list.append({ 'name': workshop.name, 'code': workshop.code, 'device_list': device_list }) return 0, workshop_list
def handle_sync_device(socket, message): device_code = message['device_code'] device_query = Device.select().where(Device.code == device_code) device = device_query[0] j_device = { 'code': device.code, 'name': device.name, 'model': device.model, 'system': device.system, 'distribution_cabinet': device.distribution_cabinet, 'local_control_panel': device.local_control_panel, 'dcs_cabinet': device.dcs_cabinet, 'forward_device': device.forward_device, 'backward_device': device.backward_device, 'legend': device.legend, 'workshop': device.workshop.code, } return 0, j_device
def get_all_dev_packages(): ret = [] devs = (Device.select()) ipreader = geolite2.reader() for dev in devs: devpacks = get_dev_packages(dev) devpacks = list(devpacks) if len(devpacks) == 0: continue match = None try: match = ipreader.get(str(dev.ext_ip).strip()) except Exception as ex: logging.warning(ex) pass country = '' city = '' if match is not None: country = match['country']['iso_code'] if 'country' in match else '' city = match['city']['names']['en'] if 'city' in match else '' pkgs = [] for x in devpacks: try: pkgs.append(__format_package(x.package, x.version)) except Package.DoesNotExist: pkgs.append(__format_device_without_package(dev)) continue ret.append({ 'device': { 'id': dev.id, 'serial': dev.serial, 'ip': dev.ext_ip, "lan_ip": dev.lan_ip, 'country': country, 'city': city, 'mac': dev.wifi_mac, 'last_noticed': dev.last_noticed, 'last_updated': dev.last_updated }, 'packages': pkgs }) # ipreader.close() return ret
def notice_device_app(dev: Device, pkg, ver): matching_devs = (Device.select().where(Device.serial == dev.serial)) # Device doesn't exist if len(matching_devs) == 0: dev.save() else: print("Updating device with info: ") print(dev) # Device exists match = matching_devs[0] match.imei = dev.imei match.wifi_mac = dev.wifi_mac match.ext_ip = dev.ext_ip match.lan_ip = dev.lan_ip match.last_noticed = datetime.datetime.now() Device.update( imei=dev.imei, wifi_mac=dev.wifi_mac, ext_ip=dev.ext_ip, lan_ip=dev.lan_ip, last_noticed=match.last_noticed).where(id == dev.id).execute() # match.update() dev = match pkgs = Package.select().where(Package.name == pkg) if len(pkgs) == 0: package = Package() package.name = pkg package.version = ver package.save() else: package = pkgs[0] existing_devpacks = DevicePackage.select().where( (DevicePackage.device == dev) & (DevicePackage.package == package)) if len(existing_devpacks) == 0: DevicePackage.create(device=dev, package=package, version=ver) else: for dpk in existing_devpacks: dpk.version = ver DevicePackage.update(version=ver).where(id == dpk.id).execute() return dev