diff --git a/archive/frames/models.py b/archive/frames/models.py index cf82174..d34d70b 100644 --- a/archive/frames/models.py +++ b/archive/frames/models.py @@ -205,7 +205,10 @@ def filename(self): @cached_property def url(self): - path = get_file_store_path(self.filename, self.frame.get_header_dict()) + metadata = self.frame.get_header_dict() + metadata['size'] = self.size + metadata['frame_basename'] = self.frame.basename + path = get_file_store_path(self.filename, metadata) file_store = FileStoreFactory.get_file_store_class()() return file_store.get_url(path, self.key, expiration=3600 * 48) diff --git a/archive/frames/tests/factories.py b/archive/frames/tests/factories.py index d2759fc..5cc7a36 100644 --- a/archive/frames/tests/factories.py +++ b/archive/frames/tests/factories.py @@ -193,6 +193,7 @@ class Meta: model = Thumbnail size = factory.fuzzy.FuzzyChoice(['small', 'medium', 'large']) - filename = factory.fuzzy.FuzzyText(length=10, suffix='.jpg') + basename = factory.fuzzy.FuzzyText(length=10) + extension = factory.fuzzy.FuzzyChoice(['.jpeg', '.jpg']) key = factory.fuzzy.FuzzyText(length=32) frame = factory.SubFactory('archive.frames.tests.factories.FrameFactory') diff --git a/archive/frames/tests/test_views.py b/archive/frames/tests/test_views.py index 422c753..0eed4bb 100644 --- a/archive/frames/tests/test_views.py +++ b/archive/frames/tests/test_views.py @@ -791,12 +791,12 @@ def setUp(self): def test_get_thumbnail(self): response = self.client.get(reverse('thumbnail-detail', args=(self.thumbnail.id,))) - self.assertEqual(response.json()['filename'], self.thumbnail.filename) + self.assertEqual(response.json()['basename'], self.thumbnail.basename) def test_get_thumbnail_list(self): response = self.client.get(reverse('thumbnail-list')) self.assertEqual(len(response.json()), 5) - self.assertContains(response, self.thumbnails[0].filename) + self.assertContains(response, self.thumbnails[0].basename) def test_get_thumbnail_list_filtered_by_frame_attribute(self): response = self.client.get(reverse('thumbnail-list') + '?proposal_id=' + self.thumbnails[0].frame.proposal_id) diff --git a/archive/frames/views.py b/archive/frames/views.py index 2ca9204..4cae0bc 100644 --- a/archive/frames/views.py +++ b/archive/frames/views.py @@ -466,9 +466,9 @@ def retrieve(self, request, *args, **kwargs): return Response(instance.as_dict()) def create(self, request): - filename = request.data.get('filename') + basename = request.data.get('basename') logger_tags = {'tags': { - 'filename': filename, + 'filename': basename, 'request_id': request.data.get('request_id') }} logger.info('Got request to process thumbnail', extra=logger_tags) @@ -485,7 +485,7 @@ def create(self, request): if thumbnail_serializer.is_valid(): # remove the version set as this version does not correspond to the frame object, but rather the thumbnail. del frame_serializer.validated_data['version_set'] - frame = frame_serializer.save() + frame = frame_serializer.save(basename=request.data['frame_basename']) thumbnail = thumbnail_serializer.save(frame=frame) logger_tags['tags']['id'] = thumbnail.id