From f69c959f2a91555f4469050e2cd217e317d98d44 Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Wed, 19 Jul 2023 14:16:57 +0200 Subject: [PATCH] Use ns time for geojson and gzipped geojson mtime --- umap/tests/test_datalayer_views.py | 13 +++++++++++++ umap/utils.py | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/umap/tests/test_datalayer_views.py b/umap/tests/test_datalayer_views.py index e2c4e925..3693725e 100644 --- a/umap/tests/test_datalayer_views.py +++ b/umap/tests/test_datalayer_views.py @@ -1,4 +1,5 @@ import json +from pathlib import Path import pytest from django.core.files.base import ContentFile @@ -33,6 +34,17 @@ def test_get(client, settings, datalayer): assert j["type"] == "FeatureCollection" +def test_gzip_should_be_created_if_accepted(client, datalayer, map, post_data): + url = reverse("datalayer_view", args=(datalayer.pk,)) + response = client.get(url, headers={"ACCEPT_ENCODING": "gzip"}) + assert response.status_code == 200 + flat = datalayer.geojson.path + gzipped = datalayer.geojson.path + ".gz" + assert Path(flat).exists() + assert Path(gzipped).exists() + assert Path(flat).stat().st_mtime_ns == Path(gzipped).stat().st_mtime_ns + + def test_update(client, datalayer, map, post_data): url = reverse("datalayer_update", args=(map.pk, datalayer.pk)) client.login(username=map.owner.username, password="123123") @@ -49,6 +61,7 @@ def test_update(client, datalayer, map, post_data): j = json.loads(response.content.decode()) assert "id" in j assert datalayer.pk == j["id"] + assert Path(modified_datalayer.geojson.path).exists() def test_should_not_be_possible_to_update_with_wrong_map_id_in_url( diff --git a/umap/utils.py b/umap/utils.py index 0890dbfd..29417150 100644 --- a/umap/utils.py +++ b/umap/utils.py @@ -112,7 +112,7 @@ def gzip_file(from_path, to_path): with open(from_path, "rb") as f_in: with gzip.open(to_path, "wb") as f_out: f_out.writelines(f_in) - os.utime(to_path, (stat.st_mtime, stat.st_mtime)) + os.utime(to_path, ns=(stat.st_mtime_ns, stat.st_mtime_ns)) def is_ajax(request):