This is an automated email from the ASF dual-hosted git repository.
machristie pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git
The following commit(s) were added to refs/heads/develop by this push:
new 1bebb7eb AIRAVATA-3696 instantiate output view providers in ready()
1bebb7eb is described below
commit 1bebb7eb5253de3a1cedb57372380ceb98eb8d1b
Author: Marcus Christie <[email protected]>
AuthorDate: Thu Apr 27 10:20:42 2023 -0400
AIRAVATA-3696 instantiate output view providers in ready()
---
django_airavata/apps/api/apps.py | 6 ++++++
django_airavata/apps/api/output_views.py | 11 +++++++----
django_airavata/settings.py | 4 ----
3 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/django_airavata/apps/api/apps.py b/django_airavata/apps/api/apps.py
index a9c0abb2..b95d88e4 100644
--- a/django_airavata/apps/api/apps.py
+++ b/django_airavata/apps/api/apps.py
@@ -1,4 +1,5 @@
from django.apps import AppConfig
+from pkg_resources import iter_entry_points
class ApiConfig(AppConfig):
@@ -7,3 +8,8 @@ class ApiConfig(AppConfig):
def ready(self):
from . import signals # noqa
+ from . import output_views
+
+ # Load and create instances of each output view provider
+ for entry_point in
iter_entry_points(group='airavata.output_view_providers'):
+ output_views.OUTPUT_VIEW_PROVIDERS[entry_point.name] =
entry_point.load()()
diff --git a/django_airavata/apps/api/output_views.py
b/django_airavata/apps/api/output_views.py
index 46531bb7..69040df5 100644
--- a/django_airavata/apps/api/output_views.py
+++ b/django_airavata/apps/api/output_views.py
@@ -16,6 +16,9 @@ logger = logging.getLogger(__name__)
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+# This is populated by apps.ApiConfig.ready()
+OUTPUT_VIEW_PROVIDERS = {}
+
class DefaultViewProvider:
display_type = 'default'
@@ -83,8 +86,8 @@ def get_output_views(request, experiment,
application_interface=None):
if output_view_provider_id in DEFAULT_VIEW_PROVIDERS:
output_view_provider = DEFAULT_VIEW_PROVIDERS[
output_view_provider_id]
- elif output_view_provider_id in settings.OUTPUT_VIEW_PROVIDERS:
- output_view_provider = settings.OUTPUT_VIEW_PROVIDERS[
+ elif output_view_provider_id in OUTPUT_VIEW_PROVIDERS:
+ output_view_provider = OUTPUT_VIEW_PROVIDERS[
output_view_provider_id]
else:
logger.warning("Unable to find output view provider with "
@@ -111,8 +114,8 @@ def _get_output_view_provider(output_view_provider_id):
if output_view_provider_id in DEFAULT_VIEW_PROVIDERS:
return DEFAULT_VIEW_PROVIDERS[output_view_provider_id]
- elif output_view_provider_id in settings.OUTPUT_VIEW_PROVIDERS:
- return settings.OUTPUT_VIEW_PROVIDERS[output_view_provider_id]
+ elif output_view_provider_id in OUTPUT_VIEW_PROVIDERS:
+ return OUTPUT_VIEW_PROVIDERS[output_view_provider_id]
def _get_output_view_providers(experiment_output, application_interface):
diff --git a/django_airavata/settings.py b/django_airavata/settings.py
index 0e293a9b..1508324e 100644
--- a/django_airavata/settings.py
+++ b/django_airavata/settings.py
@@ -638,7 +638,3 @@ dynamic_apps.load(INSTALLED_APPS, "airavata.djangoapp")
# Merge WEBPACK_LOADER settings from custom Django apps
settings_module = sys.modules[__name__]
dynamic_apps.merge_settings(settings_module)
-
-OUTPUT_VIEW_PROVIDERS = {}
-for entry_point in iter_entry_points(group='airavata.output_view_providers'):
- OUTPUT_VIEW_PROVIDERS[entry_point.name] = entry_point.load()()