diff --git a/kfet/auth/apps.py b/kfet/auth/apps.py index d91931f5..d822c80f 100644 --- a/kfet/auth/apps.py +++ b/kfet/auth/apps.py @@ -10,5 +10,22 @@ class KFetAuthConfig(AppConfig): def ready(self): from . import signals # noqa - from .utils import setup_kfet_generic_user - post_migrate.connect(setup_kfet_generic_user, sender=self) + post_migrate.connect(finish_setup_kfet_generic_user, sender=self) + + +def finish_setup_kfet_generic_user(sender, apps, **kwargs): + from kfet.models import Account + from .utils import setup_kfet_generic_user + # Even if no kfetauth migration has been applied, the post_migrate signal + # is issued for KFetAuthConfig. + # Before finishing setup of the kfet generic user, check dependencies are + # ready: kfet.Account model and gestion.Profile (old schema may not use + # this model). + try: + apps.get_model('kfet', 'Account') + apps.get_model('gestion', 'Profile') + Account.objects.get_generic() + except (LookupError, Account.DoesNotExist): + return + + setup_kfet_generic_user() diff --git a/kfet/auth/utils.py b/kfet/auth/utils.py index 053e5798..f4979fef 100644 --- a/kfet/auth/utils.py +++ b/kfet/auth/utils.py @@ -15,7 +15,7 @@ def get_kfet_generic_user(): return Account.objects.get_generic().user -def setup_kfet_generic_user(**kwargs): +def setup_kfet_generic_user(): """ First steps of setup of the kfet generic user are done in a migration, as it is more robust against database schema changes.