You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2022/08/29 18:51:16 UTC

[airavata-django-portal] 04/11: AIRAVATA-3649 Only include queueSettingsCalculatorId if it exists

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

commit 2d355f570f87306560f6169de0d2f7dbc4d2eb1d
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Thu Aug 25 14:57:06 2022 -0400

    AIRAVATA-3649 Only include queueSettingsCalculatorId if it exists
    
    This is to gracefully handle situation where queue
    settings calculator is unavailable (for example, if it isn't installed).
---
 django_airavata/apps/api/serializers.py | 10 ++++++++--
 django_airavata/apps/api/views.py       |  8 ++++----
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index 5ed02848..6618f9e4 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -60,7 +60,11 @@ from airavata.model.workspace.ttypes import (
     NotificationPriority,
     Project
 )
-from airavata_django_portal_sdk import experiment_util, user_storage
+from airavata_django_portal_sdk import (
+    experiment_util,
+    queue_settings_calculators,
+    user_storage
+)
 from django.conf import settings
 from django.contrib.auth import get_user_model
 from django.urls import reverse
@@ -344,7 +348,9 @@ class ApplicationInterfaceDescriptionSerializer(
         application_settings, created = models.ApplicationSettings.objects.get_or_create(
             application_module_id=application_module_id)
         representation["showQueueSettings"] = application_settings.show_queue_settings
-        representation["queueSettingsCalculatorId"] = application_settings.queue_settings_calculator_id
+        # check that queue_settings_calculator_id exists
+        if queue_settings_calculators.exists(application_settings.queue_settings_calculator_id):
+            representation["queueSettingsCalculatorId"] = application_settings.queue_settings_calculator_id
         return representation
 
     def create(self, validated_data):
diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index f1d8d6e0..051ba669 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -25,7 +25,7 @@ from airavata.model.group.ttypes import ResourcePermissionType
 from airavata.model.user.ttypes import Status
 from airavata_django_portal_sdk import (
     experiment_util,
-    queue_settings,
+    queue_settings_calculators,
     user_storage
 )
 from django.conf import settings
@@ -1872,10 +1872,10 @@ class QueueSettingsCalculatorViewSet(mixins.ListModelMixin, mixins.RetrieveModel
     serializer_class = serializers.QueueSettingsCalculatorSerializer
 
     def get_list(self):
-        return queue_settings.get_all()
+        return queue_settings_calculators.get_all()
 
     def get_instance(self, lookup_value):
-        calcs = queue_settings.get_all()
+        calcs = queue_settings_calculators.get_all()
         calc = [calc for calc in calcs if calc.id == lookup_value]
         if len(calc) == 0:
             return None
@@ -1887,5 +1887,5 @@ class QueueSettingsCalculatorViewSet(mixins.ListModelMixin, mixins.RetrieveModel
         serializer = self.get_serializer(data=request.data)
         serializer.is_valid(raise_exception=True)
         experiment_model = serializer.save()
-        result = queue_settings.calculate_queue_settings(pk, request, experiment_model)
+        result = queue_settings_calculators.calculate_queue_settings(pk, request, experiment_model)
         return Response(result)