Add truncated lat lon to model

This commit is contained in:
2023-11-24 19:17:43 +01:00
parent bbaa8fa078
commit 7a6bd169bf
2 changed files with 39 additions and 10 deletions

View File

@ -20,11 +20,19 @@ class GeoLocation(ScrobblableMixin):
uuid = models.UUIDField(default=uuid4, editable=False, **BNULL)
lat = models.FloatField()
lon = models.FloatField()
truncated_lat = models.FloatField(**BNULL)
truncated_lon = models.FloatField(**BNULL)
altitude = models.FloatField(**BNULL)
class Meta:
unique_together = [["lat", "lon", "altitude"]]
def save(self, *args, **kwargs):
if not self.truncated_lat or not self.truncated_lon:
self.truncated_lat = float(str(self.lat)[:-3])
self.truncated_lon = float(str(self.lon)[:-3])
super(GeoLocation, self).save(*args, **kwargs)
def __str__(self):
if self.title:
return self.title
@ -36,14 +44,6 @@ class GeoLocation(ScrobblableMixin):
"locations:geo_location_detail", kwargs={"slug": self.uuid}
)
@property
def truncated_lat(self):
return float(str(self.lat)[:-3])
@property
def truncated_lan(self):
return float(str(self.lon)[:-3])
@classmethod
def find_or_create(cls, data_dict: Dict) -> "GeoLocation":
"""Given a data dict from GPSLogger, does the heavy lifting of looking up
@ -60,8 +60,8 @@ class GeoLocation(ScrobblableMixin):
data_dict["altitude"] = float(data_dict.get("alt", ""))
location = cls.objects.filter(
lat=data_dict.get("lat"),
lon=data_dict.get("lon"),
truncated_lat=float(str(data_dict.get("lat", ""))[:-3]),
truncated_lon=float(str(data_dict.get("lon", ""))[:-3]),
altitude=data_dict.get("alt"),
).first()
@ -69,6 +69,8 @@ class GeoLocation(ScrobblableMixin):
location = cls.objects.create(
lat=data_dict.get("lat"),
lon=data_dict.get("lon"),
truncated_lat=float(str(data_dict.get("lat", ""))[:-3]),
truncated_lon=float(str(data_dict.get("lon", ""))[:-3]),
altitude=data_dict.get("alt"),
)
return location