Skip to content

apps

django_spire.contrib.sync.apps

log = logging.getLogger(__name__) module-attribute

SyncableAppMixin

get_m2m_models

Source code in django_spire/contrib/sync/apps.py
def get_m2m_models(self) -> list[type[SyncableMixin]]:
    return []

get_syncable_models

Source code in django_spire/contrib/sync/apps.py
def get_syncable_models(self) -> list[type[SyncableMixin]]:
    message = f'{type(self).__name__} must implement get_syncable_models()'
    raise NotImplementedError(message)

ready

Source code in django_spire/contrib/sync/apps.py
def ready(self) -> None:
    super().ready()

    from django_spire.contrib.sync import HybridLogicalClock  # noqa: PLC0415
    from django_spire.contrib.sync.django import (  # noqa: PLC0415
        SyncableMixin,
        build_graph,
        register_m2m_signals,
        seed_clock,
    )
    from django_spire.contrib.sync.django.signals import (  # noqa: PLC0415
        register_delete_signals,
    )

    syncable_models = self.get_syncable_models()

    clock = HybridLogicalClock()
    SyncableMixin.configure(clock)

    build_graph(syncable_models)

    with contextlib.suppress(OperationalError, ProgrammingError):
        seed_clock(clock, syncable_models)

    register_delete_signals(syncable_models)

    m2m_models = self.get_m2m_models()

    if m2m_models:
        register_m2m_signals(m2m_models)

SyncConfig

Bases: AppConfig

default_auto_field = 'django.db.models.BigAutoField' class-attribute instance-attribute

label = 'sync' class-attribute instance-attribute

name = 'django_spire.contrib.sync' class-attribute instance-attribute