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
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
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)
def get_system_info(self, system, modified=None): data = system.to_json() devices = DeviceModel.from_system_key(system.key) return data, devices