37 lines
1011 B
Python
37 lines
1011 B
Python
|
|
from config.celery import app
|
||
|
|
|
||
|
|
from .services import CARD_BUILDERS, build_dashboard_payload_with_cache
|
||
|
|
|
||
|
|
|
||
|
|
@app.task(bind=True)
|
||
|
|
def generate_dashboard_data_task(self, sensor_id: str) -> dict:
|
||
|
|
total_cards = len(CARD_BUILDERS)
|
||
|
|
self.update_state(
|
||
|
|
state="PROGRESS",
|
||
|
|
meta={
|
||
|
|
"current": 0,
|
||
|
|
"total": total_cards,
|
||
|
|
"card": None,
|
||
|
|
"message": "loading sensor context",
|
||
|
|
},
|
||
|
|
)
|
||
|
|
payload = {}
|
||
|
|
dashboard_payload = build_dashboard_payload_with_cache(sensor_id)
|
||
|
|
|
||
|
|
for index, card_name in enumerate(CARD_BUILDERS.keys(), start=1):
|
||
|
|
self.update_state(
|
||
|
|
state="PROGRESS",
|
||
|
|
meta={
|
||
|
|
"current": index,
|
||
|
|
"total": total_cards,
|
||
|
|
"card": card_name,
|
||
|
|
"message": f"processing {card_name}",
|
||
|
|
},
|
||
|
|
)
|
||
|
|
payload[card_name] = dashboard_payload.get(card_name, {})
|
||
|
|
|
||
|
|
return {
|
||
|
|
"sensor_id": sensor_id,
|
||
|
|
"all_cards": payload,
|
||
|
|
}
|