[locations] Make finding proximity locations easier

This commit is contained in:
2024-02-18 11:39:37 -05:00
parent f4d00b4a22
commit 605435b9ea
2 changed files with 6 additions and 4 deletions

View File

@ -107,18 +107,19 @@ class GeoLocation(ScrobblableMixin):
return has_moved return has_moved
def named_in_proximity(self): def named_in_proximity(self, named=True) -> models.QuerySet:
lat_min = Decimal(self.lat) - GEOLOC_PROXIMITY lat_min = Decimal(self.lat) - GEOLOC_PROXIMITY
lat_max = Decimal(self.lat) + GEOLOC_PROXIMITY lat_max = Decimal(self.lat) + GEOLOC_PROXIMITY
lon_min = Decimal(self.lon) - GEOLOC_PROXIMITY lon_min = Decimal(self.lon) - GEOLOC_PROXIMITY
lon_max = Decimal(self.lon) + GEOLOC_PROXIMITY lon_max = Decimal(self.lon) + GEOLOC_PROXIMITY
is_title_null = not named
return GeoLocation.objects.filter( return GeoLocation.objects.filter(
title__isnull=False, title__isnull=is_title_null,
lat__lte=lat_max, lat__lte=lat_max,
lat__gte=lat_min, lat__gte=lat_min,
lon__lte=lon_max, lon__lte=lon_max,
lon__gte=lon_min, lon__gte=lon_min,
).first() )
class RawGeoLocation(TimeStampedModel): class RawGeoLocation(TimeStampedModel):

View File

@ -838,7 +838,8 @@ class Scrobble(TimeStampedModel):
) )
scrobble.stop(force_finish=True) scrobble.stop(force_finish=True)
if existing_location := location.named_in_proximity(): if existing_locations := location.named_in_proximity():
existing_location = existing_locations.first()
logger.info( logger.info(
f"[scrobbling] moved to {location.id} but named location {existing_location.id} found, using it instead" f"[scrobbling] moved to {location.id} but named location {existing_location.id} found, using it instead"
) )