From 97988256334a43a949528cc7fd219e210c5636ad Mon Sep 17 00:00:00 2001 From: bmartel Date: Mon, 21 Aug 2023 16:36:15 -0400 Subject: [PATCH] fix: LSDV-5486: Double encoding issue with file proxy urls (#4663) --- label_studio/tasks/models.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/label_studio/tasks/models.py b/label_studio/tasks/models.py index 1795053987b..193bf4f03f2 100644 --- a/label_studio/tasks/models.py +++ b/label_studio/tasks/models.py @@ -7,8 +7,9 @@ import datetime import numbers import time +import base64 -from urllib.parse import urljoin, quote +from urllib.parse import urljoin from django.conf import settings from django.contrib.auth.models import AnonymousUser @@ -249,7 +250,11 @@ def resolve_uri(self, task_data, project): protected_data = {} for key, value in task_data.items(): if isinstance(value, str) and string_is_url(value): - path = reverse('projects-file-proxy', kwargs={'pk': project.pk}) + '?url=' + quote(value) + path = ( + reverse('projects-file-proxy', kwargs={'pk': project.pk}) + + '?url=' + + base64.urlsafe_b64encode(value.encode()).decode() + ) value = urljoin(settings.HOSTNAME, path) protected_data[key] = value return protected_data