"""Sample artifact content for the Settings -> Demo Data button.
Creates one artifact of every supported kind, owned by the requesting user,
tagged "demo", with source "demo".
"""
SOURCE = "demo"
TEXT_SAMPLES = [
(
"markdown",
"Seed: Markdown Sample",
"# Markdown Sample\n\nThis is a **seed** artifact demonstrating markdown rendering.\n\n- item one\n- item two\n",
"markdown",
),
(
"html_fragment",
"Seed: HTML Fragment Sample",
"
HTML Fragment
This is a seed HTML fragment artifact.
",
"html-fragment",
),
(
"html_full",
"Seed: Full HTML Sample",
"Seed Full HTML"
"Full HTML Doc
Seed artifact.
",
"html-full",
),
(
"deck",
"Seed: Deck Sample",
"Slide One
Seed deck artifact.
"
"",
"deck",
),
]
SEED_PNG_BYTES = bytes.fromhex(
"89504e470d0a1a0a0000000d494844520000000100000001080600000"
"01f15c4890000000a49444154789c6360000002000155e59a1a0000000049454e44ae426082"
)
SEED_PDF_BYTES = (
b"%PDF-1.1\n1 0 obj<>endobj\n"
b"2 0 obj<>endobj\n"
b"3 0 obj<>endobj\n"
b"trailer<>\n"
)
SEED_BIN_BYTES = b"\x00\x01\x02\x03seed-binary-data\xff\xfe"
BINARY_SAMPLES = [
("Seed: Image Sample", "seed_pixel.png", "image/png", SEED_PNG_BYTES, "image"),
("Seed: PDF Sample", "seed_doc.pdf", "application/pdf", SEED_PDF_BYTES, "pdf"),
("Seed: Binary Sample", "seed_data.bin", "application/octet-stream", SEED_BIN_BYTES, "binary"),
]
def create_demo_artifacts(user, request):
from django.core.files.uploadedfile import SimpleUploadedFile
from .views import create_binary_artifact, create_text_artifact
created = 0
for kind, title, content, tag in TEXT_SAMPLES:
data = {
"source": SOURCE,
"title": title,
"kind": kind,
"content": content,
"tags": ["demo", tag],
}
create_text_artifact(data, request, user)
created += 1
for title, filename, content_type, file_bytes, tag in BINARY_SAMPLES:
uploaded = SimpleUploadedFile(filename, file_bytes, content_type=content_type)
data = {
"source": SOURCE,
"title": title,
"file": uploaded,
"tags": ["demo", tag],
}
create_binary_artifact(data, user)
created += 1
return created