import os from django.contrib import messages from django.conf import settings from django.views.generic.base import TemplateView from django.http import FileResponse , HttpResponsePermanentRedirect from django.urls import reverse import os.path as ospath from os import makedirs from tempfile import gettempdir from .formats import * from .convert import reindex_data # Get temporary file storage UPLOAD_PATH = gettempdir() DATA_PATH = ospath.join(ospath.dirname(__file__), '..') if not ospath.exists(DATA_PATH): makedirs(DATA_PATH) def get_datafile(fmt): return ospath.join( DATA_PATH, fmt['folder'], fmt['filename'] + '.' + fmt['extension'] ) # Data update tracking c_progress = 0 c_filename = "" class HomePageView(TemplateView): template_name = "app/index.html" def get_context_data(self, **kwargs): fmts = DATAFORMATS for f in fmts: f['ready'] = ospath.isfile(get_datafile(f)) context = super().get_context_data(**kwargs) return context class OfflinePageView(TemplateView): template_name = "app/offline.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) return context class DemoPageView(TemplateView): template_name = "app/demo.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) return context class ReindexPageView(TemplateView): template_name = "app/demo.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) return context def post(self, request, **kwargs): global c_progress c_progress = 0 global c_filename c_filename = "" reindex_data() messages.add_message(request, messages.INFO, 'Search engine refresh complete') print("Search engine reindexed") return HttpResponsePermanentRedirect(reverse('admin:index')) def send_from_file(request, filename): request_for = '' if request.path.startswith('/geodata'): request_for = 'geodata' elif request.path.startswith('/data'): request_for = 'data' file_path = ospath.join(DATA_PATH, request_for, filename) file_to_send = open(file_path, 'rb') response = FileResponse(file_to_send) return response