[locations] Make finding proximity locations easier
This commit is contained in:
@ -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):
|
||||||
|
|||||||
@ -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"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user