Esempio n. 1
0
    def test_device_not_found(self):
        response = self.client.get('/ping',
                                   headers={
                                       'Firmware-Version': '1',
                                       'Device-ID': 'ABC'
                                   })
        self.assert404(response)

        device = Device(device_id='ABC', receiver_id='CBA').save()
        response = self.client.get('/ping',
                                   headers={
                                       'Firmware-Version': '1',
                                       'Device-ID': device.device_id
                                   })
        self.assert200(response)
        try:
            data = json.loads(response.data)
            self.assertFalse('message' in data)
        except ValueError:
            self.assertTrue(False, "The ping request didn't return json")

        device.messages = [Message(message='This is a test')]
        device.save()

        response = self.client.get('/ping',
                                   headers={
                                       'Firmware-Version': '1',
                                       'Device-ID': device.device_id
                                   })
        self.assert200(response)
        try:
            data = json.loads(response.data)
            self.assertEqual(data['message'], 'This is a test')
        except ValueError:
            self.assertTrue(False, "The ping request didn't return json")
Esempio n. 2
0
def connect_device():
    mac = request.form['scanned']
    user = current_user
    # add device into database if not added before
    if not Device.objects(mac=mac).first():
        device = Device(mac=mac, owner=User.objects(email=user.email).first())
        device.save()
    result = app.hub.connectDevice(mac)
    return json.dumps({'success': result}), 200, {
        'ContentType': 'application/json'
    }
Esempio n. 3
0
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