Exemple #1
0
    def associate_device(self, device, system):
        if device is None:
            abort(400)

        try:
            curr_system = device.system_key.get()
        except AttributeError:
            curr_system = None

        if system is None:
            abort(400, 'Invalid system.')

        if curr_system is not None:
            abort(401, 'Device already associated.')

        if not Owner.is_owner_of(current_user, system):
            abort(401)

        device.system_key = system.key
        device.put()

        devices = DeviceModel.from_system_key(system.key)
        if device not in devices:
            devices.append(device)
        return system, devices
Exemple #2
0
    def disassociate_device(self, device):
        if device.system_key is None:
            abort(400, 'Device already disassociated.')

        system = device.system_key.get()

        if not Owner.is_owner_of(current_user, system):
            abort(401)

        devices = DeviceModel.from_system_key(device.system_key)
        devices.remove(device)

        device.system_key = None
        device.put()
        return system, devices
Exemple #3
0
    def put(self, serial_number):
        data = request.get_json()
        if "system_id" in data:
            system, devices = self.update_device_association(
                serial_number, data)
        else:
            device = DeviceModel.from_serial_number(serial_number)
            if device is None:
                abort(400)

            try:
                device.update_from(data)
            except RuntimeError:
                abort(400)

            system = device.system_key.get()
            devices = DeviceModel.from_system_key(system.key)

        data, _ = self.get_system_info(system)
        data['devices'] = [d.to_json() for d in devices]
        return jsonify(data)
Exemple #4
0
 def get_system_info(self, system, modified=None):
     data = system.to_json()
     devices = DeviceModel.from_system_key(system.key)
     return data, devices