You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@airavata.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2023/06/05 22:25:00 UTC

[jira] [Commented] (AIRAVATA-3696) Defer instantiating output view providers until after Django apps are ready

    [ https://issues.apache.org/jira/browse/AIRAVATA-3696?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17729493#comment-17729493 ] 

ASF subversion and git services commented on AIRAVATA-3696:
-----------------------------------------------------------

Commit 1bebb7eb5253de3a1cedb57372380ceb98eb8d1b in airavata-django-portal's branch refs/heads/staging from Marcus Christie
[ https://gitbox.apache.org/repos/asf?p=airavata-django-portal.git;h=1bebb7eb ]

AIRAVATA-3696 instantiate output view providers in ready()


> 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
>            Priority: Major
>
> 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)