# (c) cavaliba.com - data - apps.py


from django.apps import AppConfig


class AppDataConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "app_data"

    def ready(self):
        """Connect telemetry receivers to the Django auth login and request signals."""

        from django.contrib.auth.signals import user_logged_in, user_login_failed
        from django.core.signals import (
            got_request_exception,
            request_finished,
            request_started,
        )

        from app_data.telemetry import (
            on_request_exception,
            on_request_finished,
            on_request_started,
            on_user_logged_in,
            on_user_login_failed,
        )

        user_logged_in.connect(on_user_logged_in, dispatch_uid="cavaliba_telemetry_login")
        user_login_failed.connect(
            on_user_login_failed, dispatch_uid="cavaliba_telemetry_login_failed"
        )

        # response time and counter flush, without a middleware
        request_started.connect(on_request_started, dispatch_uid="cavaliba_telemetry_start")
        request_finished.connect(on_request_finished, dispatch_uid="cavaliba_telemetry_finish")
        got_request_exception.connect(
            on_request_exception, dispatch_uid="cavaliba_telemetry_exception"
        )
