Skip to content

Commit 0826fc0

Browse files
committed
Use upload_vumark_template for VuMark target ID
1 parent dfd5e04 commit 0826fc0

File tree

3 files changed

+87
-7
lines changed

3 files changed

+87
-7
lines changed

admin/create_secrets_files.py

Lines changed: 85 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import datetime
77
import os
88
import sys
9+
import tempfile
910
import textwrap
1011
from pathlib import Path
1112
from typing import TYPE_CHECKING
@@ -32,6 +33,15 @@
3233
reraise=True,
3334
)
3435

36+
VUMARK_TEMPLATE_SVG = textwrap.dedent(
37+
text="""\
38+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512">
39+
<rect x="0" y="0" width="512" height="512" fill="#ffffff" />
40+
<circle cx="256" cy="256" r="144" fill="#000000" />
41+
</svg>
42+
""",
43+
)
44+
3545

3646
def _create_and_get_database_details(
3747
driver: "WebDriver",
@@ -87,6 +97,7 @@ def _generate_secrets_file_content(
8797
database_details: "DatabaseDict",
8898
vumark_details: "VuMarkDatabaseDict",
8999
inactive_database_details: "DatabaseDict",
100+
vumark_target_id: str,
90101
) -> str:
91102
"""Generate the content of a secrets file."""
92103
return textwrap.dedent(
@@ -104,12 +115,65 @@ def _generate_secrets_file_content(
104115
INACTIVE_VUFORIA_CLIENT_SECRET_KEY={inactive_database_details["client_secret_key"]}
105116
106117
VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME={vumark_details["database_name"]}
118+
VUMARK_VUFORIA_TARGET_ID={vumark_target_id}
107119
VUMARK_VUFORIA_SERVER_ACCESS_KEY={vumark_details["server_access_key"]}
108120
VUMARK_VUFORIA_SERVER_SECRET_KEY={vumark_details["server_secret_key"]}
109121
""",
110122
)
111123

112124

125+
def _create_and_get_vumark_target_id(
126+
driver: "WebDriver",
127+
vumark_database_name: str,
128+
vumark_template_name: str,
129+
) -> str:
130+
"""Upload a VuMark template and get its target ID."""
131+
with tempfile.TemporaryDirectory() as temporary_directory:
132+
svg_file_path = Path(temporary_directory) / "template.svg"
133+
svg_file_path.write_text(
134+
data=VUMARK_TEMPLATE_SVG,
135+
encoding="utf-8",
136+
)
137+
upload_result = RETRY_ON_TIMEOUT(vws_web_tools.upload_vumark_template)(
138+
driver=driver,
139+
database_name=vumark_database_name,
140+
svg_file_path=svg_file_path,
141+
template_name=vumark_template_name,
142+
width=100.0,
143+
)
144+
145+
if isinstance(upload_result, str):
146+
return upload_result
147+
148+
if isinstance(upload_result, dict):
149+
target_id = upload_result.get("target_id")
150+
if isinstance(target_id, str):
151+
return target_id
152+
153+
target_id = getattr(upload_result, "target_id", None)
154+
if isinstance(target_id, str):
155+
return target_id
156+
157+
msg = (
158+
"Expected `upload_vumark_template` to return a target ID. "
159+
"Upgrade `vws-web-tools` to a version that returns one."
160+
)
161+
raise RuntimeError(msg)
162+
163+
164+
def _create_vuforia_resource_names() -> tuple[str, str, str, str]:
165+
"""Create names for Vuforia resources."""
166+
time = datetime.datetime.now(tz=datetime.UTC).strftime(
167+
format="%Y-%m-%d-%H-%M-%S",
168+
)
169+
return (
170+
f"my-license-{time}",
171+
f"my-database-{time}",
172+
f"my-vumark-database-{time}",
173+
f"my-vumark-template-{time}",
174+
)
175+
176+
113177
def main() -> None:
114178
"""Create secrets files."""
115179
email_address = os.environ["VWS_EMAIL_ADDRESS"]
@@ -146,12 +210,12 @@ def main() -> None:
146210
driver = vws_web_tools.create_chrome_driver()
147211
file = files_to_create[-1]
148212
sys.stdout.write(f"Creating database {file.name}\n")
149-
time = datetime.datetime.now(tz=datetime.UTC).strftime(
150-
format="%Y-%m-%d-%H-%M-%S",
151-
)
152-
license_name = f"my-license-{time}"
153-
database_name = f"my-database-{time}"
154-
vumark_database_name = f"my-vumark-database-{time}"
213+
(
214+
license_name,
215+
database_name,
216+
vumark_database_name,
217+
vumark_template_name,
218+
) = _create_vuforia_resource_names()
155219

156220
try:
157221
database_details = _create_and_get_database_details(
@@ -182,13 +246,28 @@ def main() -> None:
182246
driver = None
183247
continue
184248

249+
try:
250+
vumark_target_id = _create_and_get_vumark_target_id(
251+
driver=driver,
252+
vumark_database_name=vumark_database_name,
253+
vumark_template_name=vumark_template_name,
254+
)
255+
except TimeoutException:
256+
sys.stderr.write(
257+
"Timed out waiting for VuMark template upload after retries\n"
258+
)
259+
driver.quit()
260+
driver = None
261+
continue
262+
185263
driver.quit()
186264
driver = None
187265

188266
file_contents = _generate_secrets_file_content(
189267
database_details=database_details,
190268
vumark_details=vumark_details,
191269
inactive_database_details=inactive_database_details,
270+
vumark_target_id=vumark_target_id,
192271
)
193272
file.write_text(data=file_contents)
194273
sys.stdout.write(f"Created database {file.name}\n")

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ optional-dependencies.dev = [
104104
"vulture==2.14",
105105
"vws-python==2026.2.15",
106106
"vws-test-fixtures==2023.3.5",
107-
"vws-web-tools==2026.2.16.1",
107+
"vws-web-tools==2026.2.17",
108108
"yamlfix==1.19.1",
109109
"zizmor==1.22.0",
110110
]

vuforia_secrets.env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ INACTIVE_VUFORIA_CLIENT_ACCESS_KEY=<INACTIVE_CLIENT_ACCESS_KEY>
1515
INACTIVE_VUFORIA_CLIENT_SECRET_KEY=<INACTIVE_CLIENT_SECRET_KEY>
1616

1717
VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME=<VUMARK_DATABASE_NAME>
18+
VUMARK_VUFORIA_TARGET_ID=<SHARED_VUMARK_TARGET_ID>
1819

1920
VUMARK_VUFORIA_SERVER_ACCESS_KEY=<VUMARK_SERVER_ACCESS_KEY>
2021
VUMARK_VUFORIA_SERVER_SECRET_KEY=<VUMARK_SERVER_SECRET_KEY>

0 commit comments

Comments
 (0)