diff --git a/spotseeker_server/test/item/image_put.py b/spotseeker_server/test/item/image_put.py index 0c37427825e2e8d68581ff41a538ff3f3f342fbf..9dbf0dbe84def836fd334adf182d0656ba3ae3e0 100644 --- a/spotseeker_server/test/item/image_put.py +++ b/spotseeker_server/test/item/image_put.py @@ -24,7 +24,7 @@ from django.test.utils import override_settings from mock import patch from spotseeker_server import models -TEST_ROOT = abspath(dirname(__file__)) +IMAGE_ROOT = abspath(os.path.join(settings.BASE_DIR, "media")) @override_settings(SPOTSEEKER_AUTH_MODULE='spotseeker_server.auth.all_ok') @@ -35,8 +35,7 @@ class ItemImagePUTTest(TestCase): """ def setUp(self): - self.TEMP_DIR = tempfile.mkdtemp() - with self.settings(MEDIA_ROOT=self.TEMP_DIR): + with self.settings(MEDIA_ROOT=IMAGE_ROOT): spot = Spot.objects.create( name="This is a spot fot testing PUTting images") spot.save() @@ -51,7 +50,7 @@ class ItemImagePUTTest(TestCase): self.url = self.url # GIF - f = open("%s/../resources/test_gif.gif" % TEST_ROOT) + f = open("%s/test_gif.gif" % IMAGE_ROOT, 'rb') gif = self.item.itemimage_set.create( description="This is the GIF test", image=File(f)) @@ -61,7 +60,7 @@ class ItemImagePUTTest(TestCase): self.gif_url = "%s/image/%s" % (self.url, self.gif.pk) # JPEG - f = open("%s/../resources/test_jpeg.jpg" % TEST_ROOT) + f = open("%s/test_jpeg.jpg" % IMAGE_ROOT, 'rb') jpeg = self.item.itemimage_set.create( description="This is the JPEG test", image=File(f)) @@ -71,7 +70,7 @@ class ItemImagePUTTest(TestCase): self.jpeg_url = "%s/image/%s" % (self.url, self.jpeg.pk) # PNG - f = open("%s/../resources/test_png.png" % TEST_ROOT) + f = open("%s/test_png.png" % IMAGE_ROOT, 'rb') png = self.item.itemimage_set.create( description="This is the PNG test", image=File(f)) @@ -81,7 +80,7 @@ class ItemImagePUTTest(TestCase): self.png_url = "%s/image/%s" % (self.url, self.png.pk) def test_bad_url(self): - with self.settings(MEDIA_ROOT=self.TEMP_DIR): + with self.settings(MEDIA_ROOT=IMAGE_ROOT): c = Client() item = Item.objects.create(name="This is the wrong Item") @@ -92,7 +91,7 @@ class ItemImagePUTTest(TestCase): self.assertEqual(response.status_code, 404) def test_invalid_url(self): - with self.settings(MEDIA_ROOT=self.TEMP_DIR): + with self.settings(MEDIA_ROOT=IMAGE_ROOT): c = Client() bad_url = "%s/image/aa" % self.url response = c.put(bad_url, @@ -101,7 +100,7 @@ class ItemImagePUTTest(TestCase): self.assertEqual(response.status_code, 404) def test_invalid_id_too_high(self): - with self.settings(MEDIA_ROOT=self.TEMP_DIR): + with self.settings(MEDIA_ROOT=IMAGE_ROOT): c = Client() test_id = self.gif.pk + 10000 test_url = "%s/image/%s" % (self.url, test_id) @@ -111,13 +110,13 @@ class ItemImagePUTTest(TestCase): self.assertEqual(response.status_code, 404) def test_valid_same_type_with_etag(self): - with self.settings(MEDIA_ROOT=self.TEMP_DIR): + with self.settings(MEDIA_ROOT=IMAGE_ROOT): c = Client() response = c.get(self.jpeg_url) etag = response['etag'] - f = open("%s/../resources/test_jpeg2.jpg" % TEST_ROOT) - f2 = open("%s/../resources/test_jpeg.jpg" % TEST_ROOT) + f = open("%s/test_jpeg2.jpg" % IMAGE_ROOT, 'rb') + f2 = open("%s/test_jpeg.jpg" % IMAGE_ROOT, 'rb') new_jpeg_name = "testing PUT name: {0}".format(random.random()) @@ -125,7 +124,7 @@ class ItemImagePUTTest(TestCase): files={"description": new_jpeg_name, "image": f}, If_Match=etag) - f = open("%s/../resources/test_jpeg2.jpg" % TEST_ROOT) + f = open("%s/test_jpeg2.jpg" % IMAGE_ROOT, 'rb') self.assertEqual(response.status_code, 200) self.assertEqual(int(response["content-length"]), len(f.read())) @@ -134,14 +133,14 @@ class ItemImagePUTTest(TestCase): self.assertEqual(response["content-type"], "image/jpeg") def test_valid_different_image_type_valid_etag(self): - with self.settings(MEDIA_ROOT=self.TEMP_DIR): + with self.settings(MEDIA_ROOT=IMAGE_ROOT): c = Client() response = c.get(self.gif_url) etag = response["etag"] - f = open("%s/../resources/test_png.png" % TEST_ROOT) - f2 = open("%s/../resources/test_gif.gif" % TEST_ROOT) + f = open("%s/test_png.png" % IMAGE_ROOT, 'rb') + f2 = open("%s/test_gif.gif" % IMAGE_ROOT, 'rb') new_name = "testing PUT name: {0}".format(random.random()) @@ -152,7 +151,7 @@ class ItemImagePUTTest(TestCase): "boundary=--aklsjf--", If_Match=etag) self.assertEqual(response.status_code, 200) - f = open("%s/../resources/test_png.png" % TEST_ROOT) + f = open("%s/test_png.png" % IMAGE_ROOT, 'rb') # Just to be sure response = c.get(self.gif_url) @@ -163,18 +162,18 @@ class ItemImagePUTTest(TestCase): len(f2.read())) def test_invalid_image_type_valid_etag(self): - with self.settings(MEDIA_ROOT=self.TEMP_DIR): + with self.settings(MEDIA_ROOT=IMAGE_ROOT): c = Client() response = c.get(self.gif_url) etag = response["ETag"] - f = open("%s/../resources/test_png.png" % TEST_ROOT) - f2 = open("%s/../resources/test_gif.gif" % TEST_ROOT) + f = open("%s/test_png.png" % IMAGE_ROOT, 'rb') + f2 = open("%s/test_gif.gif" % IMAGE_ROOT, 'rb') new_name = "testing PUT name: {0}".format(random.random()) c = Client() - f = open("%s/../resources/fake_jpeg.jpg" % TEST_ROOT) + f = open("%s/fake_jpeg.jpg" % IMAGE_ROOT, 'rb') response = c.put(self.gif_url, files={"description": "This is a text file", "image": f}, @@ -184,10 +183,10 @@ class ItemImagePUTTest(TestCase): # Want this to be one of the first tests to run def test_a_valid_image_no_etag(self): - with self.settings(MEDIA_ROOT=self.TEMP_DIR): + with self.settings(MEDIA_ROOT=IMAGE_ROOT): c = Client() # GIF - f = open("%s/../resources/test_gif2.gif" % TEST_ROOT) + f = open("%s/test_gif2.gif" % IMAGE_ROOT, 'rb') new_gif_name = "testing PUT name: {0}".format(random.random()) response = c.put(self.gif_url, files={"description": new_gif_name, @@ -199,7 +198,7 @@ class ItemImagePUTTest(TestCase): self.assertEqual(updated_img.image, self.gif.image) # JPEG - f = open("%s/../resources/test_jpeg2.jpg" % TEST_ROOT) + f = open("%s/test_jpeg2.jpg" % IMAGE_ROOT, 'rb') new_jpeg_name = "testing PUT name: {0}".format(random.random()) response = c.put(self.gif_url, files={"description": new_jpeg_name, @@ -212,7 +211,7 @@ class ItemImagePUTTest(TestCase): self.jpeg.description) # PNG - f = open("%s/../resources/test_png2.png" % TEST_ROOT) + f = open("%s/test_png2.png" % IMAGE_ROOT, 'rb') new_png_name = "testing PUT name: {0}".format(random.random()) response = c.put(self.gif_url, files={"description": new_png_name, @@ -229,9 +228,6 @@ class ItemImagePUTTest(TestCase): self.assertNotEqual(os.fstat(f.fileno()).st_size, int(content_length)) - f = open("%s/../resources/test_gif.gif" % TEST_ROOT) + f = open("%s/test_gif.gif" % IMAGE_ROOT, 'rb') self.assertEqual(os.fstat(f.fileno()).st_size, int(content_length)) - - def tearDown(self): - shutil.rmtree(self.TEMP_DIR) diff --git a/spotseeker_server/urls.py b/spotseeker_server/urls.py index 659ff9122066ecf5c32b7fa66c36c667c7b0a4df..1c4ef59955efeda188cff536b340ee26796f98d9 100644 --- a/spotseeker_server/urls.py +++ b/spotseeker_server/urls.py @@ -65,6 +65,9 @@ urlpatterns = [ path('v1/spot/<int:spot_id>/image/<int:image_id>/thumb/constrain/<str:thumb_dimensions>', csrf_exempt(ThumbnailView().run), {'constrain': True}), + path('v1/spot/<int:spot_id>/image/<int:image_id>/thumb/', + csrf_exempt(ThumbnailView().run), + name='spot-image-thumb'), path('v1/spot/<int:spot_id>/image/<int:image_id>/thumb/<str:thumb_dimensions>', csrf_exempt(ThumbnailView().run), name='spot-image-thumb'), diff --git a/spotseeker_server/views/share_space.py b/spotseeker_server/views/share_space.py index 93e4c7bc1e99e4b346472cab1a4974a59c33dbf2..b60b4727fdf7153d70ed85e7c57486d798ba3611 100644 --- a/spotseeker_server/views/share_space.py +++ b/spotseeker_server/views/share_space.py @@ -98,7 +98,7 @@ class ShareSpaceView(RESTDispatch): path = getattr(settings, 'SS_APP_SPACE_PATH', '/space/{{ spot_id }}/{{ spot_name }}') - path = re.sub(r'{{\s*spot_id\s*}}', spot_id, path) + path = re.sub(r'{{\s*spot_id\s*}}', str(spot_id), path) path = \ re.sub(r'{{\s*spot_name\s*}}', urlquote(spot.name), path) hash_val = \