Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gateway/api/authentication.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@


logger = logging.getLogger("gateway.authentication")
PUBLIC_ENDPOINTS = ["catalog", "swagger"]
PUBLIC_ENDPOINTS = ["swagger"]


# This logic needs to be reviewed as it can be simplified
Expand Down
104 changes: 0 additions & 104 deletions gateway/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@
import logging
from typing import Tuple, Union
from django.conf import settings
from django.contrib.auth.models import Group, Permission
from django.db.models import Q
from rest_framework import serializers
from api.services.arguments_storage import ArgumentsStorage

Expand Down Expand Up @@ -330,105 +328,3 @@ class RuntimeJobSerializer(serializers.ModelSerializer):

class Meta:
model = RuntimeJob


class CatalogProviderSerializer(serializers.ModelSerializer):
"""
Serializer for the Provider model in the Catalog View.
"""

class Meta:
model = Provider


class ListCatalogSerializer(serializers.ModelSerializer):
"""
List Serializer for the Catalog View.
"""

provider = CatalogProviderSerializer()
available = serializers.SerializerMethodField()

class Meta:
model = Program

def get_available(self, obj):
"""
This method populates available field.
If the user has RUN PERMISSION in any of its groups
available field will be True. If not, will be False.
"""
user = self.context.get("user", None)

if user is None:
logger.debug(
"User not authenticated in ListCatalogSerializer return available to False"
)
return False

# This will be refactorize it when we implement repository architecture
# pylint: disable=duplicate-code
run_program_permission = Permission.objects.get(codename=RUN_PROGRAM_PERMISSION)

user_criteria = Q(user=user)
run_permission_criteria = Q(permissions=run_program_permission)
user_groups_with_run_permissions = Group.objects.filter(
user_criteria & run_permission_criteria
)

return obj.instances.filter(
id__in=[group.id for group in user_groups_with_run_permissions]
).exists()


class RetrieveCatalogSerializer(serializers.ModelSerializer):
"""
Retrieve Serializer for the Catalog View.
"""

provider = CatalogProviderSerializer()
available = serializers.SerializerMethodField()

class Meta:
model = Program

def to_representation(self, instance):
representation = super().to_representation(instance)

json_additional_info = {}
if instance.additional_info is not None:
try:
json_additional_info = json.loads(instance.additional_info)
except json.decoder.JSONDecodeError:
logger.error("JSONDecodeError loading instance.additional_info")

representation["additional_info"] = json_additional_info
return representation

def get_available(self, obj):
"""
This method populates available field.
If the user has RUN PERMISSION in any of its groups
available field will be True. If not, will be False.
"""
user = self.context.get("user", None)

if user is None:
logger.debug(
"User not authenticated in ListCatalogSerializer return available to False"
)
return False

# This will be refactorize it when we implement repository architecture
# pylint: disable=duplicate-code
run_program_permission = Permission.objects.get(codename=RUN_PROGRAM_PERMISSION)

user_criteria = Q(user=user)
run_permission_criteria = Q(permissions=run_program_permission)
user_groups_with_run_permissions = Group.objects.filter(
user_criteria & run_permission_criteria
)

return obj.instances.filter(
id__in=[group.id for group in user_groups_with_run_permissions]
).exists()
49 changes: 0 additions & 49 deletions gateway/api/v1/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,52 +233,3 @@ class RuntimeJobSerializer(serializers.RuntimeJobSerializer):

class Meta(serializers.RuntimeJobSerializer.Meta):
fields = ["job", "runtime_job"]


class CatalogProviderSerializer(serializers.CatalogProviderSerializer):
"""
Serializer for the Provider model in the Catalog View.
"""

class Meta(serializers.CatalogProviderSerializer.Meta):
fields = ["name", "readable_name", "url", "icon_url"]


class ListCatalogSerializer(serializers.ListCatalogSerializer):
"""
List Serializer for the Catalog View.
"""

provider = CatalogProviderSerializer()

class Meta(serializers.ListCatalogSerializer.Meta):
fields = [
"id",
"title",
"readable_title",
"type",
"description",
"provider",
"available",
]


class RetrieveCatalogSerializer(serializers.RetrieveCatalogSerializer):
"""
Retrieve Serializer for the Catalog View.
"""

provider = CatalogProviderSerializer()

class Meta(serializers.RetrieveCatalogSerializer.Meta):
fields = [
"id",
"title",
"readable_title",
"type",
"description",
"documentation_url",
"provider",
"available",
"additional_info",
]
5 changes: 0 additions & 5 deletions gateway/api/v1/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,5 @@ def import_dir(directory: str, base_module: str):
v1_views.JobViewSet,
basename=v1_views.JobViewSet.BASE_NAME,
)
router.register(
r"catalog",
v1_views.CatalogViewSet,
basename=v1_views.CatalogViewSet.BASE_NAME,
)

urlpatterns = RouteRegistry.get() + router.urls
1 change: 0 additions & 1 deletion gateway/api/v1/views/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,5 @@
Specification for V1 version of the API.
"""

from .catalog import CatalogViewSet
from .jobs import JobViewSet
from .programs import ProgramViewSet
61 changes: 0 additions & 61 deletions gateway/api/v1/views/catalog.py

This file was deleted.

1 change: 0 additions & 1 deletion gateway/api/views/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,5 @@
Version views inherit from the different views.
"""

from .catalog import CatalogViewSet
from .jobs import JobViewSet
from .programs import ProgramViewSet
Loading
Loading