Skip to content

Commit 9c994e1

Browse files
committed
Change latitude/longitude to float and remove rounding
1 parent d1ec973 commit 9c994e1

3 files changed

Lines changed: 14 additions & 29 deletions

File tree

backend/market/migrations/0005_sublet_true_latitude_sublet_true_longitude.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,11 @@ class Migration(migrations.Migration):
1313
migrations.AddField(
1414
model_name="sublet",
1515
name="latitude",
16-
field=models.DecimalField(
17-
blank=True, decimal_places=6, max_digits=9, null=True
18-
),
16+
field=models.FloatField(blank=True, null=True),
1917
),
2018
migrations.AddField(
2119
model_name="sublet",
2220
name="longitude",
23-
field=models.DecimalField(
24-
blank=True, decimal_places=6, max_digits=9, null=True
25-
),
21+
field=models.FloatField(blank=True, null=True),
2622
),
2723
]

backend/market/models.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,8 @@ class Sublet(Listing):
134134
start_date = models.DateField()
135135
end_date = models.DateField()
136136

137-
latitude = models.DecimalField(
138-
max_digits=9, decimal_places=6, null=True, blank=True)
139-
longitude = models.DecimalField(
140-
max_digits=9, decimal_places=6, null=True, blank=True)
137+
latitude = models.FloatField(null=True, blank=True)
138+
longitude = models.FloatField(null=True, blank=True)
141139

142140

143141
def clean(self):
@@ -151,8 +149,8 @@ def _calculate_approximate_location(self, latitude, longitude):
151149
if latitude is None or longitude is None:
152150
return None, None
153151

154-
lat_str = f"{float(latitude):.6f}"
155-
lon_str = f"{float(longitude):.6f}"
152+
lat_str = f"{float(latitude):.9f}"
153+
lon_str = f"{float(longitude):.9f}"
156154
seed = hashlib.md5(f"{lat_str}{lon_str}".encode()).hexdigest()
157155

158156
offset_factor = int(seed[:8], 16) / 0xFFFFFFFF
@@ -163,8 +161,8 @@ def _calculate_approximate_location(self, latitude, longitude):
163161
lat_offset = offset_distance * math.sin(angle)
164162
lon_offset = offset_distance * math.cos(angle)
165163

166-
approx_lat = Decimal(str(float(latitude) + lat_offset))
167-
approx_lon = Decimal(str(float(longitude) + lon_offset))
164+
approx_lat = float(latitude) + lat_offset
165+
approx_lon = float(longitude) + lon_offset
168166
return approx_lat, approx_lon
169167

170168
@property

backend/market/serializers.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from decimal import ROUND_DOWN, Decimal
21

32
from django.contrib.auth import get_user_model
43
from django.core.exceptions import ValidationError as ModelValidationError
@@ -110,12 +109,12 @@ class Meta:
110109

111110
def get_latitude(self, obj):
112111
if obj.approximate_latitude:
113-
return round(float(obj.approximate_latitude), 6)
112+
return float(obj.approximate_latitude)
114113
return None
115114

116115
def get_longitude(self, obj):
117116
if obj.approximate_longitude:
118-
return round(float(obj.approximate_longitude), 6)
117+
return float(obj.approximate_longitude)
119118
return None
120119

121120
# Unified serializer for all listing types (Items and Sublets); used for CRUD operations
@@ -277,11 +276,9 @@ def _create_sublet(self, validated_data, additional_data):
277276

278277

279278
if latitude is not None:
280-
latitude = Decimal(str(latitude)).quantize(
281-
Decimal("0.000001"), rounding=ROUND_DOWN)
279+
latitude = float(latitude)
282280
if longitude is not None:
283-
longitude = Decimal(str(longitude)).quantize(
284-
Decimal("0.000001"), rounding=ROUND_DOWN)
281+
longitude = float(longitude)
285282

286283
sublet = Sublet.objects.create(
287284
street_address=additional_data.get("street_address"),
@@ -348,15 +345,9 @@ def _update_sublet(self, instance, additional_data):
348345
if field in additional_data:
349346
setattr(sublet, field, additional_data[field])
350347
if "latitude" in additional_data:
351-
latitude = Decimal(str(additional_data["latitude"])).quantize(
352-
Decimal("0.000001"), rounding=ROUND_DOWN
353-
)
354-
sublet.latitude = latitude
348+
sublet.latitude = float(additional_data["latitude"])
355349
if "longitude" in additional_data:
356-
longitude = Decimal(str(additional_data["longitude"])).quantize(
357-
Decimal("0.000001"), rounding=ROUND_DOWN
358-
)
359-
sublet.longitude = longitude
350+
sublet.longitude = float(additional_data["longitude"])
360351
sublet.full_clean()
361352
sublet.save()
362353

0 commit comments

Comments
 (0)