Add project palette assets and overrides
This commit is contained in:
parent
8f09b7b47f
commit
b41180db08
17 changed files with 470 additions and 87 deletions
|
|
@ -416,6 +416,19 @@ class DocumentTests(TestCase):
|
|||
self.assertEqual({str(self.project.id)}, {r["project"] for r in rows})
|
||||
self.assertEqual({"c1"}, {r["cid"] for r in rows})
|
||||
|
||||
def test_saved_palettes_are_listed_as_assets(self):
|
||||
leaves = self.leaves()
|
||||
leaves["clip/c1/palette/night"] = [
|
||||
"^ ", "~:id", "~:night", "~:name", "Moonlit",
|
||||
"~:slots", ["~#list", [["^ ", "~:hex", "#001122"]]],
|
||||
]
|
||||
self.assertEqual(200, self.save(leaves).status_code)
|
||||
rows = self.client.get("/api/symbols").json()["palettes"]
|
||||
self.assertEqual(
|
||||
[("Moonlit", "night", "c1")],
|
||||
[(r["name"], r["palette"], r["cid"]) for r in rows],
|
||||
)
|
||||
|
||||
def test_a_document_comes_back_exactly(self):
|
||||
response = self.save()
|
||||
self.assertEqual(200, response.status_code, response.content)
|
||||
|
|
|
|||
|
|
@ -357,6 +357,7 @@ def footage_list(request):
|
|||
|
||||
|
||||
_SYMBOL_LEAF = re.compile(r"^clip/([^/]+)/symbol/([^/]+)$")
|
||||
_PALETTE_LEAF = re.compile(r"^clip/([^/]+)/palette/([^/]+)$")
|
||||
|
||||
|
||||
def _transit_fields(value, *keys):
|
||||
|
|
@ -391,7 +392,21 @@ def symbols(request):
|
|||
"frames": fields.get("frames"),
|
||||
})
|
||||
rows.sort(key=lambda r: (r["project_name"], r["project"], r["name"]))
|
||||
return JsonResponse({"symbols": rows})
|
||||
palettes = []
|
||||
for leaf in Leaf.objects.filter(path__contains="/palette/").select_related("project"):
|
||||
m = _PALETTE_LEAF.match(leaf.path)
|
||||
if not m:
|
||||
continue
|
||||
fields = _transit_fields(leaf.value, "name")
|
||||
palettes.append({
|
||||
"project": str(leaf.project_id),
|
||||
"project_name": leaf.project.name,
|
||||
"cid": m.group(1),
|
||||
"palette": m.group(2),
|
||||
"name": fields.get("name") or m.group(2).replace("~", "/"),
|
||||
})
|
||||
palettes.sort(key=lambda r: (r["project_name"], r["project"], r["name"]))
|
||||
return JsonResponse({"symbols": rows, "palettes": palettes})
|
||||
|
||||
|
||||
@require_http_methods(["GET", "PATCH"])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue