diff --git a/vrobbler/apps/locations/models.py b/vrobbler/apps/locations/models.py index b195774..76a4226 100644 --- a/vrobbler/apps/locations/models.py +++ b/vrobbler/apps/locations/models.py @@ -27,12 +27,6 @@ class GeoLocation(ScrobblableMixin): 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 @@ -55,23 +49,23 @@ class GeoLocation(ScrobblableMixin): logger.error("No lat or lon keys in data dict") return - data_dict["lat"] = float(data_dict.get("lat", "")) - data_dict["lon"] = float(data_dict.get("lon", "")) - data_dict["altitude"] = float(data_dict.get("alt", "")) + if len(str(data_dict["lat"])) > 8: + data_dict["lat"] = float(str(data_dict.get("lat", ""))[:-3]) + if len(str(data_dict["lon"])) > 8: + data_dict["lon"] = float(str(data_dict.get("lon", ""))[:-3]) + data_dict["altitude"] = float(str(data_dict.get("alt", ""))[:-3]) location = cls.objects.filter( - truncated_lat=float(str(data_dict.get("lat", ""))[:-3]), - truncated_lon=float(str(data_dict.get("lon", ""))[:-3]), - altitude=data_dict.get("alt"), + lat=data_dict.get("lat"), + lon=data_dict.get("lon"), + altitude=data_dict.get("altitude"), ).first() if not location: 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"), + altitude=data_dict.get("altitude"), ) return location diff --git a/vrobbler/apps/scrobbles/models.py b/vrobbler/apps/scrobbles/models.py index 2547f45..157de1e 100644 --- a/vrobbler/apps/scrobbles/models.py +++ b/vrobbler/apps/scrobbles/models.py @@ -630,14 +630,8 @@ class Scrobble(TimeStampedModel): if self.media_obj.__class__.__name__ in ["GeoLocation"]: logger.info(f"Calculate proximity to last scrobble") if self.previous: - same_lat = ( - self.previous.media_obj.truncated_lat - == self.media_obj.truncated_lat - ) - same_lon = ( - self.previous.media_obj.truncated_lon - == self.media_obj.truncated_lon - ) + same_lat = self.previous.media_obj.lat == self.media_obj.lat + same_lon = self.previous.media_obj.lon == self.media_obj.lon if same_lat and same_lon: # We have moved logger.info("Yes - We're in the same place!") updatable = True