Make robust against duplicate objects

This commit is contained in:
Philip Sargent 2023-07-25 18:55:42 +03:00
parent 3c78ab79ca
commit 7d4ca5dae2

View File

@ -311,11 +311,22 @@ class Entrance(TroggleModel):
def __str__(self): def __str__(self):
return str(self.slug) return str(self.slug)
def single(self, station):
try:
single = SurvexStation.objects.get(name = station)
return single
except:
stations = SurvexStation.objects.filter(name = station)
print(f" # MULTIPLE stations found with same name '{station}' in Entrance {self}:")
for s in stations:
print(f" # {s.id=} - {s.name} {s.latlong()}") # .id is Django internal field, not one of ours
return stations[0]
def exact_location(self): def exact_location(self):
return SurvexStation.objects.get(name = self.exact_station) return self.single(self.exact_station)
def other_location(self): def other_location(self):
return SurvexStation.objects.get(name = self.other_station) return self.single(self.other_station)
def find_location(self): def find_location(self):
r = {"": "To be entered ", "?": "To be confirmed:", "S": "", "L": "Lost:", "R": "Refindable:"}[self.findability] r = {"": "To be entered ", "?": "To be confirmed:", "S": "", "L": "Lost:", "R": "Refindable:"}[self.findability]
@ -376,7 +387,7 @@ class Entrance(TroggleModel):
return f[1] return f[1]
def tag(self): def tag(self):
return SurvexStation.objects.get(name = self.tag_station) return self.single(self.tag_station)
def needs_surface_work(self): def needs_surface_work(self):
return self.findability != "S" or not self.has_photo or self.marking != "T" return self.findability != "S" or not self.has_photo or self.marking != "T"