diff --git a/admin/create_secrets_files.py b/admin/create_secrets_files.py index 5582a4616..13d2310d0 100644 --- a/admin/create_secrets_files.py +++ b/admin/create_secrets_files.py @@ -19,6 +19,11 @@ from vws_web_tools import DatabaseDict, VuMarkDatabaseDict +VUMARK_TEMPLATE_SVG_FILE_PATH = Path(__file__).with_name( + name="vumark_template.svg", +) + + def _create_and_get_database_details( driver: "WebDriver", email_address: str, @@ -73,6 +78,7 @@ def _generate_secrets_file_content( database_details: "DatabaseDict", vumark_details: "VuMarkDatabaseDict", inactive_database_details: "DatabaseDict", + vumark_target_id: str, ) -> str: """Generate the content of a secrets file.""" return textwrap.dedent( @@ -90,12 +96,46 @@ def _generate_secrets_file_content( INACTIVE_VUFORIA_CLIENT_SECRET_KEY={inactive_database_details["client_secret_key"]} VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME={vumark_details["database_name"]} + VUMARK_VUFORIA_TARGET_ID={vumark_target_id} VUMARK_VUFORIA_SERVER_ACCESS_KEY={vumark_details["server_access_key"]} VUMARK_VUFORIA_SERVER_SECRET_KEY={vumark_details["server_secret_key"]} """, ) +def _create_and_get_vumark_target_id( + driver: "WebDriver", + vumark_database_name: str, + vumark_template_name: str, +) -> str: + """Upload a VuMark template and get its target ID.""" + vws_web_tools.upload_vumark_template( + driver=driver, + database_name=vumark_database_name, + svg_file_path=VUMARK_TEMPLATE_SVG_FILE_PATH, + template_name=vumark_template_name, + width=100.0, + ) + return vws_web_tools.get_vumark_target_id( + driver=driver, + database_name=vumark_database_name, + target_name=vumark_template_name, + ) + + +def _create_vuforia_resource_names() -> tuple[str, str, str, str]: + """Create names for Vuforia resources.""" + time = datetime.datetime.now(tz=datetime.UTC).strftime( + format="%Y-%m-%d-%H-%M-%S", + ) + return ( + f"my-license-{time}", + f"my-database-{time}", + f"my-vumark-database-{time}", + f"my-vumark-template-{time}", + ) + + def main() -> None: """Create secrets files.""" email_address = os.environ["VWS_EMAIL_ADDRESS"] @@ -132,12 +172,12 @@ def main() -> None: driver = vws_web_tools.create_chrome_driver() file = files_to_create[-1] sys.stdout.write(f"Creating database {file.name}\n") - time = datetime.datetime.now(tz=datetime.UTC).strftime( - format="%Y-%m-%d-%H-%M-%S", - ) - license_name = f"my-license-{time}" - database_name = f"my-database-{time}" - vumark_database_name = f"my-vumark-database-{time}" + ( + license_name, + database_name, + vumark_database_name, + vumark_template_name, + ) = _create_vuforia_resource_names() try: database_details = _create_and_get_database_details( @@ -168,6 +208,20 @@ def main() -> None: driver = None continue + try: + vumark_target_id = _create_and_get_vumark_target_id( + driver=driver, + vumark_database_name=vumark_database_name, + vumark_template_name=vumark_template_name, + ) + except TimeoutException: + sys.stderr.write( + "Timed out waiting for VuMark template upload after retries\n" + ) + driver.quit() + driver = None + continue + driver.quit() driver = None @@ -175,6 +229,7 @@ def main() -> None: database_details=database_details, vumark_details=vumark_details, inactive_database_details=inactive_database_details, + vumark_target_id=vumark_target_id, ) file.write_text(data=file_contents) sys.stdout.write(f"Created database {file.name}\n") diff --git a/admin/vumark_template.svg b/admin/vumark_template.svg new file mode 100644 index 000000000..3d3c3d89e --- /dev/null +++ b/admin/vumark_template.svg @@ -0,0 +1,4 @@ + + + + diff --git a/pyproject.toml b/pyproject.toml index d0c04be1a..83b732734 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -104,7 +104,7 @@ optional-dependencies.dev = [ "vulture==2.14", "vws-python==2026.2.15", "vws-test-fixtures==2023.3.5", - "vws-web-tools==2026.2.17", + "vws-web-tools==2026.2.17.1", "yamlfix==1.19.1", "zizmor==1.22.0", ] diff --git a/vuforia_secrets.env.example b/vuforia_secrets.env.example index 5e843a117..ea7273354 100644 --- a/vuforia_secrets.env.example +++ b/vuforia_secrets.env.example @@ -15,6 +15,7 @@ INACTIVE_VUFORIA_CLIENT_ACCESS_KEY= INACTIVE_VUFORIA_CLIENT_SECRET_KEY= VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME= +VUMARK_VUFORIA_TARGET_ID= VUMARK_VUFORIA_SERVER_ACCESS_KEY= VUMARK_VUFORIA_SERVER_SECRET_KEY=