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+
2227def _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+
99183def 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 " )
0 commit comments