def serialize_full_device(orm_device, tenant, sensitive_data=False, status_cache=None): data = device_schema.dump(orm_device) data['attrs'] = {} for template in orm_device.templates: data['attrs'][template.id] = attr_list_schema.dump(template.attrs) if status_cache is None: status_cache = StatusMonitor.get_status(tenant, orm_device.id) data['status'] = status_cache.get(orm_device.id, 'offline') for override in orm_device.overrides: for attr in data['attrs'][override.attr.template_id]: if attr['id'] == override.aid: attr['static_value'] = override.static_value if sensitive_data: for psk_data in orm_device.pre_shared_keys: for template_id in data['attrs']: for attr in data['attrs'][template_id]: if attr['id'] == psk_data.attr_id: dec = decrypt(psk_data.psk) attr['static_value'] = dec.decode('ascii') return data
def serialize_full_device(orm_device, tenant, sensitive_data=False): data = device_schema.dump(orm_device) data['attrs'] = {} for template in orm_device.templates: data['attrs'][template.id] = attr_list_schema.dump(template.attrs) # Override device regular and metadata attributes serialize_override_attrs(orm_device.overrides, data['attrs']) if sensitive_data: for psk_data in orm_device.pre_shared_keys: for template_id in data['attrs']: for attr in data['attrs'][template_id]: if attr['id'] == psk_data.attr_id: dec = decrypt(psk_data.psk) attr['static_value'] = dec.decode('ascii') return data