Represent tracing media as symbols and add pool thumbnails

This commit is contained in:
Olive Vaughn 2026-10-04 00:02:12 -04:00
parent 551d572347
commit 17e1b4f403
49 changed files with 1777 additions and 864 deletions

View file

@ -34,7 +34,7 @@ from django.core.management import call_command
from django.test import TestCase, override_settings
from clips import blobs, extraction
from clips.models import Analysis, Block, Blob, Clip, Footage, Leaf, Project, Revision, Sound, Source
from clips.models import Analysis, Block, Blob, Clip, Footage, Image, Leaf, Project, Revision, Sound, Source
BLOB_DIR = tempfile.mkdtemp(prefix="arthur-test-blobs-")
@ -446,7 +446,7 @@ class DocumentTests(TestCase):
self.assertEqual(5, len(response.json()["written"]))
loaded = self.client.get(f"/api/projects/{self.project.id}").json()
self.assertEqual(5, loaded["schema_version"])
self.assertEqual(6, loaded["schema_version"])
self.assertEqual(1, len(loaded["clips"]))
clip = loaded["clips"][0]
self.assertEqual("c1", clip["cid"])
@ -828,6 +828,32 @@ class UploadTests(TestCase):
self.assertEqual(200, again.status_code)
self.assertEqual(1, Sound.objects.count())
def test_an_uploaded_still_is_an_image_named_by_its_bytes(self):
payload = png(17, 5)
uploaded = self.client.post("/api/images", {
"file": SimpleUploadedFile("sheet.png", payload, content_type="image/png")})
self.assertEqual(201, uploaded.status_code, uploaded.content)
image = uploaded.json()
self.assertEqual(("sheet.png", 17, 5), (image["label"], image["width"], image["height"]))
self.assertEqual(f"/blob/{image['digest']}", image["url"])
self.assertEqual(payload, b"".join(self.client.get(image["url"]).streaming_content))
self.assertEqual([image], self.client.get("/api/images").json()["images"])
again = self.client.post("/api/images", {
"file": SimpleUploadedFile("again.png", payload, content_type="image/png")})
self.assertEqual(200, again.status_code)
self.assertEqual(1, Image.objects.count())
renamed = self.client.patch(f"/api/images/{image['id']}",
json.dumps({"label": "model sheet"}),
content_type="application/json")
self.assertEqual("model sheet", renamed.json()["label"])
def test_a_file_that_is_not_a_picture_is_not_an_image(self):
refused = self.client.post("/api/images", {
"file": SimpleUploadedFile("notes.txt", b"not a picture", content_type="text/plain")})
self.assertEqual(400, refused.status_code)
def test_a_file_without_audio_is_not_a_sound(self):
refused = self.client.post("/api/sounds", {
"file": SimpleUploadedFile("notes.txt", b"not audio", content_type="text/plain")})