summaryrefslogtreecommitdiffstats
path: root/core/views_survex.py
diff options
context:
space:
mode:
authorSam Wenham <sam@wenhams.co.uk>2019-07-16 00:07:37 +0100
committerSam Wenham <sam@wenhams.co.uk>2019-07-16 00:07:37 +0100
commit08a41941f9e2b35b16548624d5070216dd933f79 (patch)
treecfd0bd7dfc68c77cf66d92d72b6d1d74e6155880 /core/views_survex.py
parenta26109cb3006dd64e1bec38100397ad636813e98 (diff)
downloadtroggle-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.py81
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 })
-
-
-
-