def clean_device(device: dict): """Removes values that are not supposed to be sent, like materialized or readonly ones.""" schema = current_app.config['DOMAIN'][Naming.resource(device['@type'])]['schema'] _id = device['_id'] for field in copy.copy(device): if '_' in field or not {'materialized', 'readonly'}.isdisjoint(set(schema[field].keys())): del device[field] device['url'] = DeviceDomain.url_agent_for(AccountDomain.get_requested_database(), _id)
def clean_device(device: dict): """Removes values that are not supposed to be sent, like materialized or readonly ones.""" schema = current_app.config['DOMAIN'][Naming.resource( device['@type'])]['schema'] _id = device['_id'] for field in copy.copy(device): if '_' in field or not {'materialized', 'readonly'}.isdisjoint( set(schema[field].keys())): del device[field] device['url'] = DeviceDomain.url_agent_for( AccountDomain.get_requested_database(), _id)
def generate_returned_same_as(self): """ Populates self.returned_same_as with a dict where the URL of devices in the caller agent as keys and a copy of 'sameAs' in this agent. This value will be returned to the caller agent (see :py:func:`ereuse_devicehub.resources.event.device.migrate.hooks.return_same_as`) which can use it to update its 'sameAs' values with new references. """ for device, url in zip([self.device] + self.components, self.urls): device = DeviceDomain.get_one(device['_id']) same_as = set(device['sameAs']) same_as.remove(url) same_as.add( DeviceDomain.url_agent_for( AccountDomain.get_requested_database(), device['_id'])) self.returned_same_as[url] = list(same_as)