Skip to content

Commit 482af40

Browse files
committed
Target locations are stored differently for Lacey grids
1 parent a7399cf commit 482af40

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

src/murfey/client/contexts/spa_metadata.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,19 @@ def _foil_hole_positions(xml_path: Path, grid_square: int) -> Dict[str, FoilHole
2121
for_parsing = xml.read()
2222
data = xmltodict.parse(for_parsing)
2323
data = data["GridSquareXml"]
24-
serialization_array = data["TargetLocations"]["TargetLocationsEfficient"][
25-
"a:m_serializationArray"
26-
]
24+
if "TargetLocationsEfficient" in data["TargetLocations"].keys():
25+
# Grids with regular foil holes
26+
serialization_array = data["TargetLocations"]["TargetLocationsEfficient"][
27+
"a:m_serializationArray"
28+
]
29+
elif "TargetLocations" in data["TargetLocations"].keys():
30+
# Lacey grids
31+
serialization_array = data["TargetLocations"]["TargetLocations"][
32+
"a:m_serializationArray"
33+
]
34+
else:
35+
logger.warning(f"Target locations not found for {str(xml_path)}")
36+
return {}
2737
required_key = ""
2838
for key in serialization_array.keys():
2939
if key.startswith("b:KeyValuePairOfintTargetLocation"):

src/murfey/util/spa_metadata.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,20 @@ def foil_hole_data(xml_path: Path, foil_hole: int, grid_square: int) -> FoilHole
157157
for_parsing = xml.read()
158158
data = xmltodict.parse(for_parsing)
159159
data = data["GridSquareXml"]
160-
serialization_array = data["TargetLocations"]["TargetLocationsEfficient"][
161-
"a:m_serializationArray"
162-
]
160+
if "TargetLocationsEfficient" in data["TargetLocations"].keys():
161+
# Grids with regular foil holes
162+
serialization_array = data["TargetLocations"]["TargetLocationsEfficient"][
163+
"a:m_serializationArray"
164+
]
165+
elif "TargetLocations" in data["TargetLocations"].keys():
166+
# Lacey grids
167+
serialization_array = data["TargetLocations"]["TargetLocations"][
168+
"a:m_serializationArray"
169+
]
170+
else:
171+
logger.warning(f"Target locations not found for {str(xml_path)}")
172+
return FoilHoleInfo(id=foil_hole, grid_square_id=grid_square)
173+
163174
if len(serialization_array.keys()) == 0:
164175
return FoilHoleInfo(id=foil_hole, grid_square_id=grid_square)
165176
for key in serialization_array.keys():

0 commit comments

Comments
 (0)