From dcab792313fd67cfebd924329e53d1ac54e1be31 Mon Sep 17 00:00:00 2001
From: Parbhat Puri <parbhatpuri17@gmail.com>
Date: Wed, 15 May 2019 12:42:55 +0000
Subject: [PATCH] Check submission while generating URLs

---
 opentech/apply/funds/models/mixins.py |  8 +++++++-
 opentech/apply/funds/views.py         |  8 +-------
 opentech/storage_backends.py          | 18 ++++++++----------
 3 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/opentech/apply/funds/models/mixins.py b/opentech/apply/funds/models/mixins.py
index 6ca8ac3e0..388e23849 100644
--- a/opentech/apply/funds/models/mixins.py
+++ b/opentech/apply/funds/models/mixins.py
@@ -15,7 +15,13 @@ from opentech.apply.stream_forms.files import StreamFieldFile
 __all__ = ['AccessFormData']
 
 
-submission_storage = get_storage_class(getattr(settings, 'PRIVATE_FILE_STORAGE', None))()
+private_file_storage = getattr(settings, 'PRIVATE_FILE_STORAGE', None)
+submission_storage_class = get_storage_class(private_file_storage)
+
+if private_file_storage:
+    submission_storage = submission_storage_class(is_submission=True)
+else:
+    submission_storage = submission_storage_class()
 
 
 class UnusedFieldException(Exception):
diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py
index f263fef55..8b9b7f7d3 100644
--- a/opentech/apply/funds/views.py
+++ b/opentech/apply/funds/views.py
@@ -62,13 +62,7 @@ from .tables import (
 from .workflow import STAGE_CHANGE_ACTIONS, PHASES_MAPPING, review_statuses
 from .permissions import is_user_has_access_to_view_submission
 
-private_file_storage = getattr(settings, 'PRIVATE_FILE_STORAGE', None)
-submission_storage_class = get_storage_class(private_file_storage)
-
-if private_file_storage:
-    submission_storage = submission_storage_class(internal_url=False)
-else:
-    submission_storage = submission_storage_class()
+submission_storage = get_storage_class(getattr(settings, 'PRIVATE_FILE_STORAGE', None))
 
 
 class BaseAdminSubmissionsTable(SingleTableMixin, FilterView):
diff --git a/opentech/storage_backends.py b/opentech/storage_backends.py
index d8404ca5a..3a347b4cb 100644
--- a/opentech/storage_backends.py
+++ b/opentech/storage_backends.py
@@ -29,20 +29,18 @@ class PrivateMediaStorage(S3Boto3Storage):
     file_overwrite = False
     querystring_auth = True
     url_protocol = 'https:'
-    internal_url = True
+    is_submission = False
 
     def url(self, name, parameters=None, expire=None):
-        if self.internal_url:
+        if self.is_submission:
             try:
                 name_parts = name.split('/')
-                # Create and return internal URL only for submissions
-                if name_parts[0] == 'submission':
-                    return reverse(
-                        'apply:submissions:private_media_redirect', kwargs={
-                            'submission_id': name_parts[1], 'field_id': name_parts[2],
-                            'file_name': name_parts[3]
-                        }
-                    )
+                return reverse(
+                    'apply:submissions:private_media_redirect', kwargs={
+                        'submission_id': name_parts[1], 'field_id': name_parts[2],
+                        'file_name': name_parts[3]
+                    }
+                )
             except IndexError:
                 pass
 
-- 
GitLab