in airavata_django_portal_sdk/views.py [0:0]
def download_experiments(request, download_id=None):
if request.method == 'POST':
serializer = serializers.MultiExperimentDownloadSerializer(data=request.data)
if serializer.is_valid():
download_id = str(uuid.uuid4())
request.session["download_experiments:" + download_id] = serializer.validated_data
download_url = reverse('airavata_django_portal_sdk:download_experiments',
args=[download_id])
return Response({"download_url": download_url})
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'GET' and download_id is not None:
download_key = f"download_experiments:{download_id}"
if download_key in request.session:
download_spec = request.session[download_key]
experiments = download_spec['experiments']
filename = download_spec.get("filename")
if filename is None:
filename = "experiments.zip"
filename = get_valid_filename(filename)
zipfile_entries = _get_experiment_directories_zipfile_entries(request, experiments)
return _create_zip_response(request, filename, zipfile_entries)
else:
return Response({"detail": "Not found."}, status=status.HTTP_404_NOT_FOUND)
else:
return Response({"detail": "Bad request"}, status=status.HTTP_400_BAD_REQUEST)