Files
2026-08-19 08:04:59 +02:00

52 lines
1.5 KiB
Python

"""Read projections used by the demo API."""
from .models import Device, DeviceType, File, Manufacturer
def get_all_manufacturers() -> list[dict]:
return [item.to_json() for item in Manufacturer.objects.all()]
def get_all_device_types() -> list[dict]:
return [item.to_json() for item in DeviceType.objects.all()]
def get_all_devices() -> list[dict]:
devices = Device.objects.select_related(
"product", "product__manufacturer", "product__device_type"
)
return [
{
"id": device.id,
"manufacturer_name": device.product.manufacturer.name,
"device_type": device.product.device_type.device_type,
"device_name": device.product.product_name,
"serial": device.serial,
"comment": device.comment,
"created": device.created.isoformat(),
}
for device in devices
]
def get_device_by_id(device_id: int) -> dict:
device = Device.objects.select_related(
"product", "product__manufacturer", "product__device_type"
).get(id=device_id)
return device.to_json()
def get_files_by_device(device_id: int) -> list[dict]:
files = File.objects.filter(device_id=device_id).select_related("firmware")
return [
{
"id": file.id,
"filename": file.filename,
"ip": file.ip_address,
"state": file.status,
"upload": file.upload_time.isoformat(),
"firmware_version": file.firmware.version,
}
for file in files
]