Skip to content

Commit 79bad8d

Browse files
committed
Merge origin/main into adamtheturtle/vumark-api-test
2 parents 381878f + a12c022 commit 79bad8d

File tree

4 files changed

+101
-31
lines changed

4 files changed

+101
-31
lines changed

admin/create_secrets_files.py

Lines changed: 96 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
1919
from vws_web_tools import DatabaseDict, VuMarkDatabaseDict
2020

2121

22+
VUMARK_TEMPLATE_SVG_FILE_PATH = Path(__file__).with_name(
23+
name="vumark_template.svg",
24+
)
25+
26+
2227
def _create_and_get_database_details(
2328
driver: "WebDriver",
2429
email_address: str,
@@ -73,6 +78,7 @@ def _generate_secrets_file_content(
7378
database_details: "DatabaseDict",
7479
vumark_details: "VuMarkDatabaseDict",
7580
inactive_database_details: "DatabaseDict",
81+
vumark_target_id: str,
7682
) -> str:
7783
"""Generate the content of a secrets file."""
7884
return textwrap.dedent(
@@ -90,12 +96,90 @@ def _generate_secrets_file_content(
9096
INACTIVE_VUFORIA_CLIENT_SECRET_KEY={inactive_database_details["client_secret_key"]}
9197
9298
VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME={vumark_details["database_name"]}
99+
VUMARK_VUFORIA_TARGET_ID={vumark_target_id}
93100
VUMARK_VUFORIA_SERVER_ACCESS_KEY={vumark_details["server_access_key"]}
94101
VUMARK_VUFORIA_SERVER_SECRET_KEY={vumark_details["server_secret_key"]}
95102
""",
96103
)
97104

98105

106+
def _create_and_get_vumark_target_id(
107+
driver: "WebDriver",
108+
vumark_database_name: str,
109+
vumark_template_name: str,
110+
) -> str:
111+
"""Upload a VuMark template and get its target ID."""
112+
vws_web_tools.upload_vumark_template(
113+
driver=driver,
114+
database_name=vumark_database_name,
115+
svg_file_path=VUMARK_TEMPLATE_SVG_FILE_PATH,
116+
template_name=vumark_template_name,
117+
width=100.0,
118+
)
119+
return vws_web_tools.get_vumark_target_id(
120+
driver=driver,
121+
database_name=vumark_database_name,
122+
target_name=vumark_template_name,
123+
)
124+
125+
126+
def _create_vuforia_resource_names() -> tuple[str, str, str, str]:
127+
"""Create names for Vuforia resources."""
128+
time = datetime.datetime.now(tz=datetime.UTC).strftime(
129+
format="%Y-%m-%d-%H-%M-%S",
130+
)
131+
return (
132+
f"my-license-{time}",
133+
f"my-database-{time}",
134+
f"my-vumark-database-{time}",
135+
f"my-vumark-template-{time}",
136+
)
137+
138+
139+
def _create_shared_vumark_resources(
140+
email_address: str,
141+
password: str,
142+
) -> tuple["VuMarkDatabaseDict", str]:
143+
"""Create shared VuMark resources used by all generated secrets
144+
files.
145+
"""
146+
shared_vumark_details: VuMarkDatabaseDict | None = None
147+
shared_vumark_target_id: str | None = None
148+
149+
while shared_vumark_details is None or shared_vumark_target_id is None:
150+
vumark_driver = vws_web_tools.create_chrome_driver()
151+
(
152+
_license_name,
153+
_database_name,
154+
vumark_database_name,
155+
vumark_template_name,
156+
) = _create_vuforia_resource_names()
157+
try:
158+
vws_web_tools.log_in(
159+
driver=vumark_driver,
160+
email_address=email_address,
161+
password=password,
162+
)
163+
vws_web_tools.wait_for_logged_in(driver=vumark_driver)
164+
shared_vumark_details = _create_and_get_vumark_details(
165+
driver=vumark_driver,
166+
vumark_database_name=vumark_database_name,
167+
)
168+
shared_vumark_target_id = _create_and_get_vumark_target_id(
169+
driver=vumark_driver,
170+
vumark_database_name=vumark_database_name,
171+
vumark_template_name=vumark_template_name,
172+
)
173+
except TimeoutException:
174+
sys.stderr.write(
175+
"Timed out waiting for shared VuMark setup/details after "
176+
"retries\n"
177+
)
178+
vumark_driver.quit()
179+
180+
return shared_vumark_details, shared_vumark_target_id
181+
182+
99183
def main() -> None:
100184
"""Create secrets files."""
101185
email_address = os.environ["VWS_EMAIL_ADDRESS"]
@@ -129,43 +213,25 @@ def main() -> None:
129213
sys.stdout.write("No secrets files need to be created.\n")
130214
return
131215

132-
shared_vumark_details: VuMarkDatabaseDict | None = None
133-
134-
while shared_vumark_details is None:
135-
vumark_driver = vws_web_tools.create_chrome_driver()
136-
time = datetime.datetime.now(tz=datetime.UTC).strftime(
137-
format="%Y-%m-%d-%H-%M-%S",
216+
shared_vumark_details, shared_vumark_target_id = (
217+
_create_shared_vumark_resources(
218+
email_address=email_address,
219+
password=password,
138220
)
139-
vumark_database_name = f"my-vumark-database-{time}"
140-
try:
141-
vws_web_tools.log_in(
142-
driver=vumark_driver,
143-
email_address=email_address,
144-
password=password,
145-
)
146-
vws_web_tools.wait_for_logged_in(driver=vumark_driver)
147-
shared_vumark_details = _create_and_get_vumark_details(
148-
driver=vumark_driver,
149-
vumark_database_name=vumark_database_name,
150-
)
151-
except TimeoutException:
152-
sys.stderr.write(
153-
"Timed out waiting for shared VuMark setup/details after "
154-
"retries\n"
155-
)
156-
vumark_driver.quit()
221+
)
157222

158223
driver: WebDriver | None = None
159224
while files_to_create:
160225
if driver is None:
161226
driver = vws_web_tools.create_chrome_driver()
162227
file = files_to_create[-1]
163228
sys.stdout.write(f"Creating database {file.name}\n")
164-
time = datetime.datetime.now(tz=datetime.UTC).strftime(
165-
format="%Y-%m-%d-%H-%M-%S",
166-
)
167-
license_name = f"my-license-{time}"
168-
database_name = f"my-database-{time}"
229+
(
230+
license_name,
231+
database_name,
232+
_vumark_database_name,
233+
_vumark_template_name,
234+
) = _create_vuforia_resource_names()
169235

170236
try:
171237
database_details = _create_and_get_database_details(
@@ -190,6 +256,7 @@ def main() -> None:
190256
database_details=database_details,
191257
vumark_details=shared_vumark_details,
192258
inactive_database_details=inactive_database_details,
259+
vumark_target_id=shared_vumark_target_id,
193260
)
194261
file.write_text(data=file_contents)
195262
sys.stdout.write(f"Created database {file.name}\n")

admin/vumark_template.svg

Lines changed: 4 additions & 0 deletions
Loading

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.17",
107+
"vws-web-tools==2026.2.17.1",
108108
"yamlfix==1.19.1",
109109
"zizmor==1.22.0",
110110
]

vuforia_secrets.env.example

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ INACTIVE_VUFORIA_SERVER_SECRET_KEY=<INACTIVE_SERVER_SECRET_KEY>
1414
INACTIVE_VUFORIA_CLIENT_ACCESS_KEY=<INACTIVE_CLIENT_ACCESS_KEY>
1515
INACTIVE_VUFORIA_CLIENT_SECRET_KEY=<INACTIVE_CLIENT_SECRET_KEY>
1616

17-
# Shared across all generated secrets files.
1817
VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME=<SHARED_VUMARK_DATABASE_NAME>
1918

2019
VUMARK_VUFORIA_SERVER_ACCESS_KEY=<SHARED_VUMARK_SERVER_ACCESS_KEY>

0 commit comments

Comments
 (0)