diff options
author | Sam Wenham <sam@wenhams.co.uk> | 2019-07-16 00:07:37 +0100 |
---|---|---|
committer | Sam Wenham <sam@wenhams.co.uk> | 2019-07-16 00:07:37 +0100 |
commit | 08a41941f9e2b35b16548624d5070216dd933f79 (patch) | |
tree | cfd0bd7dfc68c77cf66d92d72b6d1d74e6155880 /core/views_survex.py | |
parent | a26109cb3006dd64e1bec38100397ad636813e98 (diff) | |
download | troggle-08a41941f9e2b35b16548624d5070216dd933f79.tar.gz troggle-08a41941f9e2b35b16548624d5070216dd933f79.tar.bz2 troggle-08a41941f9e2b35b16548624d5070216dd933f79.zip |
Part one of getting troggle to work with django 1.10
Major rework of how survex is processed
Diffstat (limited to 'core/views_survex.py')
-rw-r--r-- | core/views_survex.py | 81 |
1 files changed, 46 insertions, 35 deletions
diff --git a/core/views_survex.py b/core/views_survex.py index 1e6c1bf..2582e40 100644 --- a/core/views_survex.py +++ b/core/views_survex.py @@ -1,7 +1,8 @@ from django import forms from django.http import HttpResponseRedirect, HttpResponse -from django.shortcuts import render_to_response, render -from django.core.context_processors import csrf +from django.shortcuts import render +from django.views.decorators import csrf +from django.views.decorators.csrf import csrf_protect from django.http import HttpResponse, Http404 import re import os @@ -39,9 +40,9 @@ survextemplatefile = """; Locn: Totes Gebirge, Austria - Loser/Augst-Eck Plateau *data passage station left right up down ignoreall 1 [L] [R] [U] [D] comment -*end [surveyname]""" - - +*end [surveyname]""" + + def ReplaceTabs(stext): res = [ ] nsl = 0 @@ -110,7 +111,7 @@ class SvxForm(forms.Form): log = re.sub("(?s).*?(Survey contains)", "\\1", log) return log - +@csrf_protect def svx(request, survex_file): # get the basic data from the file given in the URL dirname = os.path.split(survex_file)[0] @@ -173,10 +174,10 @@ def svx(request, survex_file): 'difflist': difflist, 'logmessage':logmessage, 'form':form} - vmap.update(csrf(request)) + # vmap.update(csrf(request)) if outputtype == "ajax": - return render_to_response('svxfiledifflistonly.html', vmap) - return render_to_response('svxfile.html', vmap) + return render(request, 'svxfiledifflistonly.html', vmap) + return render(request, 'svxfile.html', vmap) def svxraw(request, survex_file): svx = open(os.path.join(settings.SURVEX_DATA, survex_file+".svx"), "rb") @@ -200,19 +201,19 @@ def threed(request, survex_file): log = open(settings.SURVEX_DATA + survex_file + ".log", "rb") return HttpResponse(log, content_type="text") + def log(request, survex_file): process(survex_file) log = open(settings.SURVEX_DATA + survex_file + ".log", "rb") return HttpResponse(log, content_type="text") + def err(request, survex_file): process(survex_file) err = open(settings.SURVEX_DATA + survex_file + ".err", "rb") return HttpResponse(err, content_type="text") - - def identifycavedircontents(gcavedir): # find the primary survex file in each cave directory name = os.path.split(gcavedir)[1] @@ -252,37 +253,49 @@ def identifycavedircontents(gcavedir): if primesvx: subsvx.insert(0, primesvx) return subdirs, subsvx - - + # direct local non-database browsing through the svx file repositories # perhaps should use the database and have a reload button for it def survexcaveslist(request): - cavesdir = os.path.join(settings.SURVEX_DATA, "caves-1623") - #cavesdircontents = { } - - onefilecaves = [ ] - multifilecaves = [ ] - subdircaves = [ ] + kat_areas = settings.KAT_AREAS + + fnumlist = [] + + kat_areas = ['1623'] + + for area in kat_areas: + print(area) + cavesdir = os.path.join(settings.SURVEX_DATA, "caves-%s" % area) + print(cavesdir) + #cavesdircontents = { } + fnumlist += [ (-int(re.match(r"\d*", f).group(0) or "0"), f, area) for f in os.listdir(cavesdir) ] + print(fnumlist) + print(len(fnumlist)) # first sort the file list - fnumlist = [ (-int(re.match(r"\d*", f).group(0) or "0"), f) for f in os.listdir(cavesdir) ] fnumlist.sort() + onefilecaves = [ ] + multifilecaves = [ ] + subdircaves = [ ] + print(fnumlist) # go through the list and identify the contents of each cave directory - for num, cavedir in fnumlist: + for num, cavedir, area in fnumlist: if cavedir in ["144", "40"]: continue - + + cavesdir = os.path.join(settings.SURVEX_DATA, "caves-%s" % area) + gcavedir = os.path.join(cavesdir, cavedir) if os.path.isdir(gcavedir) and cavedir[0] != ".": subdirs, subsvx = identifycavedircontents(gcavedir) survdirobj = [ ] for lsubsvx in subsvx: - survdirobj.append(("caves-1623/"+cavedir+"/"+lsubsvx, lsubsvx)) + survdirobj.append(("caves-" + area + "/"+cavedir+"/"+lsubsvx, lsubsvx)) # caves with subdirectories if subdirs: @@ -292,7 +305,7 @@ def survexcaveslist(request): assert not dsubdirs lsurvdirobj = [ ] for lsubsvx in dsubsvx: - lsurvdirobj.append(("caves-1623/"+cavedir+"/"+subdir+"/"+lsubsvx, lsubsvx)) + lsurvdirobj.append(("caves-" + area + "/"+cavedir+"/"+subdir+"/"+lsubsvx, lsubsvx)) subsurvdirs.append((lsurvdirobj[0], lsurvdirobj[1:])) subdircaves.append((cavedir, (survdirobj[0], survdirobj[1:]), subsurvdirs)) @@ -304,24 +317,22 @@ def survexcaveslist(request): #print("survdirobj = ") #print(survdirobj) onefilecaves.append(survdirobj[0]) - - return render_to_response('svxfilecavelist.html', {'settings': settings, "onefilecaves":onefilecaves, "multifilecaves":multifilecaves, "subdircaves":subdircaves }) - - - + return render(request, 'svxfilecavelist.html', {"onefilecaves":onefilecaves, "multifilecaves":multifilecaves, "subdircaves":subdircaves }) # parsing all the survex files of a single cave and showing that it's consistent and can find all the files and people # doesn't use recursion. just writes it twice def survexcavesingle(request, survex_cave): breload = False - cave = Cave.objects.get(kataster_number=survex_cave) + cave = Cave.objects.filter(kataster_number=survex_cave) + if len(cave) < 1: + cave = Cave.objects.filter(unofficial_number=survex_cave) + if breload: parsers.survex.ReloadSurvexCave(survex_cave) - return render_to_response('svxcavesingle.html', {'settings': settings, "cave":cave }) + if len(cave) > 0: + return render(request, 'svxcavesingle.html', {"cave":cave[0] }) + else: + return render(request, 'svxcavesingle.html', {"cave":cave }) - - - - |