Source code for irodsinfo.views_api

"""REST API views for the irodsinfo app"""

import logging

from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView

# Projectroles dependency
from projectroles.plugins import get_backend_api

from irodsinfo.views import IrodsConfigMixin


logger = logging.getLogger(__name__)


[docs]class IrodsEnvRetrieveAPIView(IrodsConfigMixin, APIView): """ Retrieve iRODS environment file for the current user. **URL:** ``/irods/api/environment`` **Methods:** ``GET`` **Returns:** - ``irods_environment``: iRODS client environment (dict) """ permission_classes = [IsAuthenticated] def get(self, request, *args, **kwargs): """Get iRODS environment file""" try: irods_backend = get_backend_api('omics_irods') if not irods_backend: return Response( {'detail': 'iRODS backend not enabled'}, status=404 ) env = self.get_irods_client_env(request.user, irods_backend) return Response({'irods_environment': env}) except Exception as ex: logger.error('iRODS config retrieval failed: {}'.format(ex)) return Response( {'detail': 'iRODS config retrieval failed'}, status=400 )