Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions src/vws/reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,20 @@ class TargetSummaryReport:
total_recos: int
current_month_recos: int
previous_month_recos: int


@dataclass
class TargetRecord:
"""
A target summary record.

See
https://library.vuforia.com/articles/Solution/How-To-Use-the-Vuforia-Web-Services-API#How-To-Retrieve-a-Target-Record.
"""

target_id: str
active_flag: bool
name: str
width: float
tracking_rating: int
reco_rating: str
14 changes: 12 additions & 2 deletions src/vws/vws.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from vws.exceptions import TargetProcessingTimeout
from vws.reports import (
DatabaseSummaryReport,
TargetRecord,
TargetStatuses,
TargetSummaryReport,
)
Expand Down Expand Up @@ -213,7 +214,7 @@ def add_target(

return str(response.json()['target_id'])

def get_target_record(self, target_id: str) -> Dict[str, Union[str, int]]:
def get_target_record(self, target_id: str) -> TargetRecord:
"""
Get a given target's target record from the Target Management System.

Expand Down Expand Up @@ -243,7 +244,16 @@ def get_target_record(self, target_id: str) -> Dict[str, Union[str, int]]:
expected_result_code='Success',
)

return dict(response.json()['target_record'])
target_record_dict = dict(response.json()['target_record'])
target_record = TargetRecord(
target_id=target_record_dict['target_id'],
active_flag=target_record_dict['active_flag'],
name=target_record_dict['name'],
width=target_record_dict['width'],
tracking_rating=target_record_dict['tracking_rating'],
reco_rating=target_record_dict['reco_rating'],
)
return target_record

def _wait_for_target_processed(
self,
Expand Down
31 changes: 16 additions & 15 deletions tests/test_vws.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from vws.exceptions import TargetProcessingTimeout
from vws.reports import (
DatabaseSummaryReport,
TargetRecord,
TargetStatuses,
TargetSummaryReport,
)
Expand Down Expand Up @@ -57,9 +58,9 @@ def test_add_target(
active_flag=active_flag,
)
target_record = vws_client.get_target_record(target_id=target_id)
assert target_record['name'] == name
assert target_record['width'] == width
assert target_record['active_flag'] is active_flag
assert target_record.name == name
assert target_record.width == width
assert target_record.active_flag is active_flag
vws_client.wait_for_target_processed(target_id=target_id)
matching_targets = cloud_reco_client.query(image=high_quality_image)
if active_flag:
Expand Down Expand Up @@ -267,16 +268,16 @@ def test_get_target_record(
)

result = vws_client.get_target_record(target_id=target_id)
expected_target_record = TargetRecord(
target_id=target_id,
active_flag=True,
name='x',
width=1,
tracking_rating=-1,
reco_rating='',
)

expected_keys = {
'target_id',
'active_flag',
'name',
'width',
'tracking_rating',
'reco_rating',
}
assert set(result.keys()) == expected_keys
assert result == expected_target_record


class TestWaitForTargetProcessed:
Expand Down Expand Up @@ -531,9 +532,9 @@ def test_update_target(
)

target_details = vws_client.get_target_record(target_id=target_id)
assert target_details['name'] == new_name
assert target_details['width'] == new_width
assert not target_details['active_flag']
assert target_details.name == new_name
assert target_details.width == new_width
assert not target_details.active_flag

def test_no_fields_given(
self,
Expand Down