Source code for ferrosoft.apps.dataimport.websocket.consumer

from django.template.loader import render_to_string

from ferrosoft.apps.dataimport.websocket.updater import ImportJobUIUpdater
from ferrosoft.apps.date_time import now_utc
from ferrosoft.apps.ferrobase.consumers import UIEventsConsumer
from ferrosoft.apps.ferrobase.services.taskqueue import background_task_tenant


[docs] class ImportJobUIEventsConsumer(UIEventsConsumer): def __init__(self, *args, **kwargs): super().__init__(ImportJobUIUpdater, *args, **kwargs)
[docs] def receive_json_tenant_context(self, content: dict): match content.get("action", ""): case "start_import": self._start_import()
[docs] def pass_on(self, event): self.send_json(event)
def _start_import(self): background_task_tenant( "ferrosoft.apps.dataimport.queue.process_import_job", self.entity_id, ) self.send_json( { "state": "import_started", "content": render_to_string( "dataimport/job/import-started.html", context={ "now": now_utc(), }, ), } )