Skip to content

Commit 5d65844

Browse files
committed
fix date issue with backfill_changesets
1 parent f2ec5ab commit 5d65844

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

osmchadjango/changeset/management/commands/backfill_changesets.py

+22-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from datetime import date, datetime, timedelta
2+
from django.utils.timezone import make_aware, get_default_timezone
23

34
from django.core.management.base import BaseCommand
45

@@ -17,26 +18,37 @@ def add_arguments(self, parser):
1718
def handle(self, *args, **options):
1819
# if start_date is not defined, set it as yesterday
1920
try:
20-
start_date = date.fromisoformat(options["start_date"])
21+
start_date = datetime.strptime(options["start_date"], "%Y-%m-%d")
2122
except (ValueError, TypeError):
22-
start_date = date.today() - timedelta(days=1)
23+
start_date = datetime.now() - timedelta(days=1)
24+
2325
# if end_date is not defined, set it as today
2426
try:
25-
end_date = date.fromisoformat(options["end_date"])
27+
end_date = datetime.strptime(options["end_date"], "%Y-%m-%d")
2628
except (ValueError, TypeError):
2729
end_date = datetime.now()
2830

31+
# Convert to timezone-aware datetime
32+
start_date = make_aware(start_date, timezone=get_default_timezone())
33+
end_date = make_aware(end_date, timezone=get_default_timezone())
34+
35+
# Query the Changeset table using timezone-aware datetimes
2936
cl = Changeset.objects.filter(
3037
date__gte=start_date, date__lte=end_date
31-
).values_list("id")
32-
cl = [c[0] for c in cl]
38+
).values_list("id", flat=True)
39+
40+
if not cl:
41+
self.stdout.write("No missing changesets found in the given date range.")
42+
return
43+
44+
id = max(cl) # Last ID in the list
45+
final = min(cl) # First ID in the list
3346

34-
id = cl[len(cl) - 1]
35-
final = cl[0]
36-
while id < final:
47+
while id >= final:
3748
if id not in cl:
3849
try:
3950
create_changeset(id)
4051
except Exception as e:
41-
self.stdout.write("Failed to import changeset {}: {}".format(id, e))
42-
id = id + 1
52+
self.stdout.write(f"Failed to import changeset {id}: {e}")
53+
id -= 1
54+

0 commit comments

Comments
 (0)