def test_delete_target( mock_database: VuforiaDatabase, vws_client: VWS, high_quality_image: io.BytesIO, ) -> None: """ It is possible to delete a target. """ runner = CliRunner() target_id = vws_client.add_target( name='x', width=1, image=high_quality_image, active_flag=True, application_metadata=None, ) assert vws_client.list_targets() == [target_id] commands = [ 'delete-target', '--target-id', target_id, '--server-access-key', mock_database.server_access_key, '--server-secret-key', mock_database.server_secret_key, ] vws_client.wait_for_target_processed(target_id=target_id) result = runner.invoke(vws_group, commands, catch_exceptions=False) assert result.exit_code == 0 assert result.stdout == '' assert vws_client.list_targets() == []
def test_inactive_project( self, inactive_vws_client: VWS, ) -> None: """ The project's active state does not affect the target list. """ # No exception is raised. inactive_vws_client.list_targets()
def _delete_all_targets(database_keys: VuforiaDatabase) -> None: """ Delete all targets. Args: database_keys: The credentials to the Vuforia target database to delete all targets in. """ vws_client = VWS( server_access_key=database_keys.server_access_key, server_secret_key=database_keys.server_secret_key, ) targets = vws_client.list_targets() for target in targets: vws_client.wait_for_target_processed(target_id=target) # Even deleted targets can be matched by a query for a few seconds so # we change the target to inactive before deleting it. try: vws_client.update_target(target_id=target, active_flag=False) except TargetStatusNotSuccess: pass vws_client.wait_for_target_processed(target_id=target) vws_client.delete_target(target_id=target)
def test_give_no_details(self, high_quality_image: io.BytesIO) -> None: """ It is possible to create a database without giving any data. """ databases_url = _EXAMPLE_URL_FOR_TARGET_MANAGER + '/databases' response = requests.post(url=databases_url, json={}) assert response.status_code == HTTPStatus.CREATED data = response.json() assert data['targets'] == [] assert data['state_name'] == 'WORKING' assert 'database_name' in data.keys() vws_client = VWS( server_access_key=data['server_access_key'], server_secret_key=data['server_secret_key'], ) cloud_reco_client = CloudRecoService( client_access_key=data['client_access_key'], client_secret_key=data['client_secret_key'], ) assert not vws_client.list_targets() assert not cloud_reco_client.query(image=high_quality_image)
def test_includes_targets( self, vws_client: VWS, target_id: str, ) -> None: """ Targets in the database are returned in the list. """ assert vws_client.list_targets() == [target_id]
def test_delete_target( self, vws_client: VWS, high_quality_image: io.BytesIO, ) -> None: """ It is possible to delete a target. """ target_id = vws_client.add_target( name='x', width=1, image=high_quality_image, active_flag=True, application_metadata=None, ) vws_client.wait_for_target_processed(target_id=target_id) assert target_id in vws_client.list_targets() vws_client.delete_target(target_id=target_id) assert target_id not in vws_client.list_targets()
def test_deleted( self, vws_client: VWS, target_id: str, ) -> None: """ Deleted targets are not returned in the list. """ vws_client.wait_for_target_processed(target_id=target_id) vws_client.delete_target(target_id=target_id) assert vws_client.list_targets() == []
def list_targets( server_access_key: str, server_secret_key: str, base_vws_url: str, ) -> None: """ List targets. \b See https://library.vuforia.com/articles/Solution/How-To-Use-the-Vuforia-Web-Services-API.html#How-To-Get-a-Target-List-for-a-Cloud-Database. """ vws_client = VWS( server_access_key=server_access_key, server_secret_key=server_secret_key, base_vws_url=base_vws_url, ) targets = vws_client.list_targets() yaml_list = yaml.dump(targets) click.echo(yaml_list)
def test_list_targets( self, vws_client: VWS, high_quality_image: io.BytesIO, ) -> None: """ It is possible to get a list of target IDs. """ id_1 = vws_client.add_target( name='x', width=1, image=high_quality_image, active_flag=True, application_metadata=None, ) id_2 = vws_client.add_target( name='a', width=1, image=high_quality_image, active_flag=True, application_metadata=None, ) assert sorted(vws_client.list_targets()) == sorted([id_1, id_2])
SERVER_ACCESS_KEY = os.environ['UPLOADER_SERVER_ACCESS_KEY'] SERVER_SECRET_KEY = os.environ['UPLOADER_SERVER_SECRET_KEY'] CLIENT_ACCESS_KEY = os.environ['UPLOADER_CLIENT_ACCESS_KEY'] CLIENT_SECRET_KEY = os.environ['UPLOADER_CLIENT_SECRET_KEY'] VWS_CLIENT = VWS( server_access_key=SERVER_ACCESS_KEY, server_secret_key=SERVER_SECRET_KEY, ) CLOUD_RECO_CLIENT = CloudRecoService( client_access_key=CLIENT_ACCESS_KEY, client_secret_key=CLIENT_SECRET_KEY, ) # checks if the database is empty: if it is, perform the initialisation LIST_OF_TARGETS = VWS_CLIENT.list_targets() if not LIST_OF_TARGETS: shutil.rmtree("/logos/") os.remove("existing_restaurants.txt") os.remove("imagehashes.txt") print("Database is empty, performing initialisation") initialise(VWS_CLIENT, HEADERS) else: # Find the new restaurants FILE = 'existing_restaurants.txt' NEW_RESTAURANTS_LIST = check_for_new_restaurants(HEADERS, FILE) # Get and save the new restaurants to the /new/ directory NEW_IMAGES = get_images(NEW_RESTAURANTS_LIST, HEADERS) path = "/new/" save_images(NEW_IMAGES, path)