diff --git a/passbook/oidc_provider/apps.py b/passbook/oidc_provider/apps.py index c6066356b..6f4259179 100644 --- a/passbook/oidc_provider/apps.py +++ b/passbook/oidc_provider/apps.py @@ -2,6 +2,7 @@ from logging import getLogger from django.apps import AppConfig +from django.db.utils import InternalError, OperationalError, ProgrammingError from django.urls import include, path LOGGER = getLogger(__name__) @@ -14,13 +15,16 @@ class PassbookOIDCProviderConfig(AppConfig): verbose_name = 'passbook OIDC Provider' def ready(self): - from Cryptodome.PublicKey import RSA - from oidc_provider.models import RSAKey - if not RSAKey.objects.exists(): - key = RSA.generate(2048) - rsakey = RSAKey(key=key.exportKey('PEM').decode('utf8')) - rsakey.save() - LOGGER.info("Created key") + try: + from Cryptodome.PublicKey import RSA + from oidc_provider.models import RSAKey + if not RSAKey.objects.exists(): + key = RSA.generate(2048) + rsakey = RSAKey(key=key.exportKey('PEM').decode('utf8')) + rsakey.save() + LOGGER.info("Created key") + except (OperationalError, ProgrammingError, InternalError): + pass from passbook.root import urls urls.urlpatterns.append( path('application/oidc/', include('oidc_provider.urls', namespace='oidc_provider')),