Marcus Christie created AIRAVATA-3696:
-----------------------------------------
Summary: Defer instantiating output view providers until after
Django apps are ready
Key: AIRAVATA-3696
URL: https://issues.apache.org/jira/browse/AIRAVATA-3696
Project: Airavata
Issue Type: Bug
Components: Django Portal
Reporter: Marcus Christie
Assignee: Marcus Christie
Currently in settings.py all output view providers are instantiated. However,
they might import code that transitively imports Django models which is not
allowed in Django until all apps have been loaded (see
https://docs.djangoproject.com/en/3.2/ref/applications/#initialization-process).
A better approach would be to instantiate the output view providers in the
ApiConfig.ready().
{code}
File
"/Users/machrist/Airavata/django/django_airavata_gateway/django_airavata/settings.py",
line 644, in <module>
OUTPUT_VIEW_PROVIDERS[entry_point.name] = entry_point.load()()
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/pkg_resources/__init__.py",
line 2517, in load
return self.resolve()
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/pkg_resources/__init__.py",
line 2523, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File
"/Users/machrist/Airavata/django/regsnp-django-app/regsnp_django_app/output_views.py",
line 32, in <module>
from airavata_django_portal_sdk import urls
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/airavata_django_portal_sdk/urls.py",
line 6, in <module>
from . import views
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/airavata_django_portal_sdk/views.py",
line 16, in <module>
from rest_framework.decorators import api_view
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/rest_framework/decorators.py",
line 13, in <module>
from rest_framework.views import APIView
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/rest_framework/views.py",
line 17, in <module>
from rest_framework.schemas import DefaultSchema
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/rest_framework/schemas/__init__.py",
line 33, in <module>
authentication_classes=api_settings.DEFAULT_AUTHENTICATION_CLASSES,
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/rest_framework/settings.py",
line 225, in __getattr__
val = perform_import(val, attr)
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/rest_framework/settings.py",
line 168, in perform_import
return [import_from_string(item, setting_name) for item in val]
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/rest_framework/settings.py",
line 168, in <listcomp>
return [import_from_string(item, setting_name) for item in val]
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/rest_framework/settings.py",
line 177, in import_from_string
return import_string(val)
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/django/utils/module_loading.py",
line 17, in import_string
module = import_module(module_path)
File
"/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/importlib/__init__.py",
line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File
"/Users/machrist/Airavata/django/django_airavata_gateway/django_airavata/apps/api/authentication.py",
line 6, in <module>
from django_airavata.apps.auth import utils
File
"/Users/machrist/Airavata/django/django_airavata_gateway/django_airavata/apps/auth/utils.py",
line 14, in <module>
from . import models
File
"/Users/machrist/Airavata/django/django_airavata_gateway/django_airavata/apps/auth/models.py",
line 17, in <module>
class EmailVerification(models.Model):
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/django/db/models/base.py",
line 108, in __new__
app_config = apps.get_containing_app_config(module)
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/django/apps/registry.py",
line 253, in get_containing_app_config
self.check_apps_ready()
File
"/Users/machrist/Airavata/django/django_airavata_gateway/venv/lib/python3.10/site-packages/django/apps/registry.py",
line 136, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)