diff --git a/.gitignore b/.gitignore index 2dd0996e..6f13c869 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ dist/ .env .venv/ +.idea diff --git a/umap/urls.py b/umap/urls.py index 0d4d3157..2b391e0b 100644 --- a/umap/urls.py +++ b/umap/urls.py @@ -80,6 +80,11 @@ i18n_urls += decorated_patterns( views.DataLayerVersion.as_view(), name="datalayer_version", ), + re_path( + r"^datalayer/download/(?P[\d]+)/(?P[_\w]+.geojson)$", + views.DataLayerDownloadVersion.as_view(), + name="datalayer_version", + ), ) i18n_urls += decorated_patterns( [ensure_csrf_cookie], diff --git a/umap/views.py b/umap/views.py index 55c0c74a..2d0e638d 100644 --- a/umap/views.py +++ b/umap/views.py @@ -721,6 +721,7 @@ class DataLayerView(GZipMixin, BaseDetailView): response = HttpResponse(f.read(), content_type="application/geo+json") response["Last-Modified"] = self.last_modified response["Content-Length"] = statobj.st_size + return response @@ -731,6 +732,20 @@ class DataLayerVersion(DataLayerView): root=settings.MEDIA_ROOT, path=self.object.get_version_path(self.kwargs["name"]), ) + +class DataLayerDownloadVersion(DataLayerView): + def render_to_response(self, context, **response_kwargs): + + + filename = os.path.basename(self.path) + + with open(self.path, 'rb') as f: + response = HttpResponse(f, content_type='application/geo+json') + + response['Content-Disposition'] = f'attachment; filename="{filename}"' + + return response + class DataLayerCreate(FormLessEditMixin, GZipMixin, CreateView):