Пример #1
0
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
Пример #2
0
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