0001-base_adresse-don-t-clear-streets-if-file-is-empty-20.patch
passerelle/apps/base_adresse/models.py | ||
---|---|---|
176 | 176 |
if ban_file.status_code != 200: |
177 | 177 |
continue |
178 | 178 | |
179 |
line = _not_found = object() |
|
179 | 180 |
for line in bz2.decompress(ban_file.content).splitlines(): |
180 | 181 |
street_info = json.loads(line) |
181 | 182 |
if street_info['type'] == 'street' and street_info['postcode'].startswith(zipcodes): |
... | ... | |
191 | 192 |
street[0].type = street_info['type'] |
192 | 193 |
street[0].citycode = street_info['citycode'] |
193 | 194 |
street[0].save() |
195 |
if line is _not_found: |
|
196 |
raise Exception('bano file is empty') |
|
194 | 197 | |
195 | 198 |
self.get_streets_queryset().filter(last_update__lt=start_update).delete() |
196 | 199 |
tests/test_jobs.py | ||
---|---|---|
17 | 17 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2') |
18 | 18 |
mocked_get.return_value = utils.FakedResponse(content=open(filepath).read(), status_code=200) |
19 | 19 | |
20 |
freezer.move_to('2019-01-01 00:00:00') |
|
20 | 21 |
job = base_adresse.add_job('update_streets_data') |
21 | 22 |
assert job.status == 'registered' |
22 | 23 | |
... | ... | |
24 | 25 |
assert Job.objects.get(id=job.id).status == 'completed' |
25 | 26 |
assert StreetModel.objects.count() == 3 |
26 | 27 | |
28 |
# don't delete streets if bano file is empty |
|
29 |
mocked_get.return_value = utils.FakedResponse(content='', status_code=200) |
|
30 |
freezer.move_to('2019-01-01 12:00:00') |
|
31 |
job = base_adresse.add_job('update_streets_data') |
|
32 |
assert job.status == 'registered' |
|
33 | ||
34 |
base_adresse.jobs() |
|
35 |
assert Job.objects.get(id=job.id).status == 'failed' |
|
36 |
assert Job.objects.get(id=job.id).status_details == {'error_summary': 'Exception: bano file is empty'} |
|
37 |
assert ResourceLog.objects.all().count() == 1 |
|
38 |
assert ResourceLog.objects.all()[0].message == ( |
|
39 |
'error running update_streets_data job (bano file is empty)') |
|
40 |
assert StreetModel.objects.count() == 3 |
|
41 | ||
42 |
mocked_get.return_value = utils.FakedResponse(content=open(filepath).read(), status_code=200) |
|
43 | ||
27 | 44 |
StreetModel.objects.all().delete() |
28 | 45 | |
29 | 46 |
ResourceLog.objects.all().delete() |
30 |
- |