from typing import Optional from labs.models import UserEvent, User, LabInstance def log_user_event( user: User, event_name: UserEvent.EventName, event_body: dict = {}, lab_instance: Optional[LabInstance] = None, lab_code: Optional[str] = None, event_source: UserEvent.EventSource = UserEvent.EventSource.BACKEND, ): if lab_instance is not None and not lab_code: lab_code = lab_instance.lab_code UserEvent.objects.create( user=user, event_name=event_name.value, event_body=event_body, lab_instance=lab_instance, lab_code=lab_code, event_source=event_source, )