Skip to content

Commit f40ce72

Browse files
authored
Improve backfill_changesets command (#685)
* Set backfill_changesets default behaviour to backfill the last day changesets * Fix test command arguments * Fix typo * Fix start_date and end_date access
1 parent d9b1beb commit f40ce72

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

osmchadjango/changeset/management/commands/backfill_changesets.py

+13-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import date
1+
from datetime import date, datetime, timedelta
22

33
from django.core.management.base import BaseCommand
44

@@ -11,19 +11,24 @@ class Command(BaseCommand):
1111
Start and end dates should be in YYYY-MM-DD format."""
1212

1313
def add_arguments(self, parser):
14-
parser.add_argument("start_date", nargs=1, type=str)
15-
parser.add_argument("end_date", nargs=1, type=str)
14+
parser.add_argument("--start_date", type=str)
15+
parser.add_argument("--end_date", type=str)
1616

1717
def handle(self, *args, **options):
18+
# if start_date is not defined, set it as yesterday
1819
try:
19-
end_date = date.fromisoformat(options["end_date"][0])
20+
start_date = date.fromisoformat(options["start_date"])
2021
except (ValueError, TypeError):
21-
end_date = date.today()
22+
start_date = date.today() - timedelta(days=1)
23+
# if end_date is not defined, set it as today
24+
try:
25+
end_date = date.fromisoformat(options["end_date"])
26+
except (ValueError, TypeError):
27+
end_date = datetime.now()
2228

2329
cl = Changeset.objects.filter(
24-
date__gte=date.fromisoformat(options["start_date"][0]),
25-
date__lte=end_date
26-
).values_list('id')
30+
date__gte=start_date, date__lte=end_date
31+
).values_list("id")
2732
cl = [c[0] for c in cl]
2833

2934
id = cl[len(cl) - 1]

osmchadjango/changeset/tests/test_management_commands.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,9 @@ def setUp(self):
111111
ChangesetFactory(id='1238', date=datetime(2021,1,3))
112112

113113
def test_backfill(self):
114-
call_command("backfill_changesets", '2021-01-01', '2021-01-04')
114+
call_command(
115+
"backfill_changesets", "--start_date=2021-01-01", "--end_date=2021-01-04"
116+
)
115117
cl = [i[0] for i in Changeset.objects.all().values_list('id')]
116118
self.assertEqual(len(cl), 5)
117119
self.assertIn(1235, cl)

0 commit comments

Comments
 (0)