renaming 'tunnel' to 'dwg' in urls and views

This commit is contained in:
Philip Sargent 2021-04-20 23:57:19 +01:00
parent bad5484d12
commit 8f0e7435d6
6 changed files with 53 additions and 31 deletions

View File

@ -345,9 +345,9 @@ class PageTests(TestCase):
phmatch = re.search(ph, content) phmatch = re.search(ph, content)
self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph +"'") self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph +"'")
def test_page_tunneldataraw_empty(self): def test_page_dwgdataraw_empty(self):
# this gets an empty page as the database has not been loaded # this gets an empty page as the database has not been loaded
response = self.client.get('/tunneldataraw/') response = self.client.get('/dwgdataraw/')
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
content = response.content.decode() content = response.content.decode()
ph = r"<h1>Directory not found" ph = r"<h1>Directory not found"
@ -387,9 +387,9 @@ class PageTests(TestCase):
# self.assertEqual(response.status_code, 200) # self.assertEqual(response.status_code, 200)
# self.assertEqual(len(response.content), 823304) # fails, but is working manually! # self.assertEqual(len(response.content), 823304) # fails, but is working manually!
# def test_page_tunneldataraw_107sketch_xml(self): # def test_page_dwgdataraw_107sketch_xml(self):
# # this has an error as the database has not been loaded yet in the tests # # this has an error as the database has not been loaded yet in the tests
# response = self.client.get('/tunneldataraw/107/107sketch-v2.xml') # response = self.client.get('/dwgdataraw/107/107sketch-v2.xml')
# if response.status_code != 200: # if response.status_code != 200:
# self.assertEqual(response.status_code, 302) # self.assertEqual(response.status_code, 302)
# if response.status_code != 302: # if response.status_code != 302:

View File

@ -16,22 +16,30 @@ import parsers.surveys
as does the urls.py dispatcher which sends them here. Here they should actually have the filetype checked as does the urls.py dispatcher which sends them here. Here they should actually have the filetype checked
by looking inside the file before being served. by looking inside the file before being served.
need to check if inavlid query string is invalid, or produces multiple replies need to check if inavlid query string is invalid, or produces multiple replies
and render a user-friendly error page. and render a user-friendly error page.
''' '''
def surveyscansfolder(request, path): def surveyscansfolder(request, path):
#print [ s.walletname for s in ScansFolder.objects.all() ] #print [ s.walletname for s in ScansFolder.objects.all() ]
scansfolder = ScansFolder.objects.get(walletname=urlunquote(path)) # need to check if inavlid query string and produce friendly error try:
scansfolder = ScansFolder.objects.get(walletname=urlunquote(path))
return render(request, 'scansfolder.html', { 'scansfolder':scansfolder, 'settings': settings }) return render(request, 'scansfolder.html', { 'scansfolder':scansfolder, 'settings': settings })
except:
message = f'Scan folder error or not found \'{path}\' .'
return render(request, 'errors/generic.html', {'message': message})
def surveyscansingle(request, path, file): def surveyscansingle(request, path, file):
'''sends a single binary file to the user, '''sends a single binary file to the user for display - browser decides how using mimetype
''' '''
scansfolder = ScansFolder.objects.get(walletname=urlunquote(path)) # need to check if inavlid query string and produce friendly error try:
scansfolder = ScansFolder.objects.get(walletname=urlunquote(path))
singlescan = SingleScan.objects.get(scansfolder=scansfolder, name=file) singlescan = SingleScan.objects.get(scansfolder=scansfolder, name=file)
# print(" - surveyscansingle {}:{}:{}:".format(path, file, getmimetype(file))) # print(" - surveyscansingle {}:{}:{}:".format(path, file, getmimetype(file)))
return HttpResponse(content=open(singlescan.ffile,"rb"), content_type=getmimetype(file)) # any type of image return HttpResponse(content=open(singlescan.ffile,"rb"), content_type=getmimetype(file)) # any type of image
except:
message = f'Scan folder or scan item error or not found \'{path}\' and \'{file}\'.'
return render(request, 'errors/generic.html', {'message': message})
def surveyscansfolders(request): def surveyscansfolders(request):
@ -39,16 +47,23 @@ def surveyscansfolders(request):
return render(request, 'manyscansfolders.html', { 'manyscansfolders':manyscansfolders, 'settings': settings }) return render(request, 'manyscansfolders.html', { 'manyscansfolders':manyscansfolders, 'settings': settings })
def tunneldata(request): def dwgdata(request):
'''Report on all the drawing files in the system. These were loaded by parsing the entire directory tree
'''
tunnelfiles = TunnelFile.objects.all() tunnelfiles = TunnelFile.objects.all()
return render(request, 'tunnelfiles.html', { 'tunnelfiles':tunnelfiles, 'settings': settings }) return render(request, 'dwgfiles.html', { 'tunnelfiles':tunnelfiles, 'settings': settings })
def dwgfilesingle(request, path): def dwgfilesingle(request, path):
'''sends a single binary file to the user, We should have a renderer that syntax-colours this Tunnel xml '''sends a single binary file to the user, We should have a renderer that syntax-colours this Tunnel xml
but it might be a Therion file but it might be a Therion file
''' '''
tunnelfile = TunnelFile.objects.get(tunnelpath=urlunquote(path)) # need to check if invalid query string and produce friendly error try:
tunnelfile = TunnelFile.objects.get(tunnelpath=urlunquote(path))
except:
message = f'Drawing file error or not found \'{path}\' .'
return render(request, 'errors/generic.html', {'message': message})
tfile = Path(settings.TUNNEL_DATA, tunnelfile.tunnelpath) tfile = Path(settings.TUNNEL_DATA, tunnelfile.tunnelpath)
try: # for display not download try: # for display not download
return HttpResponse(content=open(tfile, errors='strict'), content_type="text/xhtml") return HttpResponse(content=open(tfile, errors='strict'), content_type="text/xhtml")
@ -63,12 +78,18 @@ def dwgfilesingle(request, path):
return HttpResponse(content="Unable to understand the encoding for this file: not UTF-8 nor iso-8859-1, or some other read error happened.") return HttpResponse(content="Unable to understand the encoding for this file: not UTF-8 nor iso-8859-1, or some other read error happened.")
def tunnelfileupload(request, path): def dwgfileupload(request, path):
'''uploads a drawing file, but where is the Form? This just processes POST info. Apparently unfinished?
'''
try:
tunnelfile = TunnelFile.objects.get(tunnelpath=urlunquote(path)) # need to check if inavlid query string and produce friendly error tunnelfile = TunnelFile.objects.get(tunnelpath=urlunquote(path)) # need to check if inavlid query string and produce friendly error
except:
message = f'Drawing file error or not found \'{path}\' .'
return render(request, 'errors/generic.html', {'message': message})
tfile = Path(settings.TUNNEL_DATA, tunnelfile.tunnelpath) tfile = Path(settings.TUNNEL_DATA, tunnelfile.tunnelpath)
project, user, password, tunnelversion = request.POST["tunnelproject"], request.POST["tunneluser"], request.POST["tunnelpassword"], request.POST["tunnelversion"] project, user, password, tunnelversion = request.POST["tunnelproject"], request.POST["tunneluser"], request.POST["tunnelpassword"], request.POST["tunnelversion"]
print((project, user, tunnelversion)) print(project, user, tunnelversion)
if not (len(list(request.FILES.values())) == 1): # "only one file to upload" if not (len(list(request.FILES.values())) == 1): # "only one file to upload"

View File

@ -32,7 +32,7 @@
<a href="/survexfile/">Survex</a> | <a href="/survexfile/">Survex</a> |
<a href="{% url "survexcaveslist" %}">All Survex</a> | <a href="{% url "survexcaveslist" %}">All Survex</a> |
<a href="{% url "surveyscansfolders" %}">Scans</a> | <a href="{% url "surveyscansfolders" %}">Scans</a> |
<a href="{% url "tunneldata" %}">Drawing files</a> | <a href="{% url "dwgdata" %}">Drawings</a> |
<a href="/1623/290/290.html">290 (FGH)</a> | <a href="/1623/290/290.html">290 (FGH)</a> |
<a href="/1623/291/291">291 (GSH)</a> | <a href="/1623/291/291">291 (GSH)</a> |
<a href="/1623/204/204.html">204 (Steinbrucken)</a> | <a href="/1623/204/204.html">204 (Steinbrucken)</a> |

View File

@ -18,7 +18,7 @@
<ul> <ul>
<li><a href="{% url "survexcaveslist" %}">All Survex</a></li> <li><a href="{% url "survexcaveslist" %}">All Survex</a></li>
<li><a href="{% url "surveyscansfolders" %}">Scans</a></li> <li><a href="{% url "surveyscansfolders" %}">Scans</a></li>
<li><a href="{% url "tunneldata" %}">Tunneldata</a></li> <li><a href="{% url "dwgdata" %}">Drawings</a></li>
<li><a href="{% url "survexcavessingle" "caves-1623/290/290.svx" %}">290</a></li> <li><a href="{% url "survexcavessingle" "caves-1623/290/290.svx" %}">290</a></li>
<li><a href="{% url "survexcavessingle" "caves-1623/291/291.svx" %}">291</a></li> <li><a href="{% url "survexcavessingle" "caves-1623/291/291.svx" %}">291</a></li>
<li><a href="{% url "survexcavessingle" "caves-1626/359/359.svx" %}">359</a></li> <li><a href="{% url "survexcavessingle" "caves-1626/359/359.svx" %}">359</a></li>

21
urls.py
View File

@ -7,7 +7,8 @@ from django.contrib import admin
from django.contrib import auth from django.contrib import auth
from django.urls import reverse, resolve from django.urls import reverse, resolve
from troggle.core.views import surveys, other, caves, statistics, survex from troggle.core.views import other, caves, statistics, survex
from troggle.core.views.surveys import surveyscansingle, surveyscansfolder, surveyscansfolders, dwgdata, dwgfilesingle, dwgfileupload
from troggle.core.views.other import troggle404, frontpage from troggle.core.views.other import troggle404, frontpage
from troggle.core.views.caves import ent, cavepage from troggle.core.views.caves import ent, cavepage
from troggle.core.views.logbooks import get_logbook_entries, logbookentry, logbookSearch from troggle.core.views.logbooks import get_logbook_entries, logbookentry, logbookSearch
@ -135,18 +136,18 @@ trogglepatterns = [
re_path(r'^survexfile/caves$', survex.survexcaveslist, name="survexcaveslist"), # auto slash not working re_path(r'^survexfile/caves$', survex.survexcaveslist, name="survexcaveslist"), # auto slash not working
re_path(r'^survexfile/(?P<survex_cave>.*)$', survex.survexcavesingle, name="survexcavessingle"), re_path(r'^survexfile/(?P<survex_cave>.*)$', survex.survexcavesingle, name="survexcavessingle"),
re_path(r'^survey_scans/$', surveys.surveyscansfolders, name="surveyscansfolders"), re_path(r'^survey_scans/$', surveyscansfolders, name="surveyscansfolders"),
re_path(r'^survey_scans/(?P<path>[^/]+)/$', surveys.surveyscansfolder, name="surveyscansfolder"), re_path(r'^survey_scans/(?P<path>[^/]+)/$', surveyscansfolder, name="surveyscansfolder"),
re_path(r'^survey_scans/(?P<path>[^/]+)/(?P<file>[^/]+)$', re_path(r'^survey_scans/(?P<path>[^/]+)/(?P<file>[^/]+)$',
surveys.surveyscansingle, name="surveyscansingle"), surveyscansingle, name="surveyscansingle"),
# The tunnel and therion drawings files pages # The tunnel and therion drawings files pages
re_path(r'^tunneldata/$', surveys.tunneldata, name="tunneldata"), re_path(r'^dwgdata/$', dwgdata, name="dwgdata"),
re_path(r'^tunneldataraw/(?P<path>.+?\.xml)$', surveys.dwgfilesingle, name="dwgfilesingle"), re_path(r'^dwgdataraw/(?P<path>.+?\.xml)$', dwgfilesingle, name="dwgfilesingle"),
re_path(r'^tunneldataraw/(?P<path>.+?\.th)$', surveys.dwgfilesingle, name="dwgfilesingle"), re_path(r'^dwgdataraw/(?P<path>.+?\.th)$', dwgfilesingle, name="dwgfilesingle"),
re_path(r'^tunneldataraw/(?P<path>.+?\.th2)$', surveys.dwgfilesingle, name="dwgfilesingle"), re_path(r'^dwgdataraw/(?P<path>.+?\.th2)$', dwgfilesingle, name="dwgfilesingle"),
# re_path(r'^tunneldatainfo/(?P<path>.+?\.xml)$', surveys.tunnelfileinfo, name="tunnelfileinfo"), # parses tunnel for info # re_path(r'^dwgdatainfo/(?P<path>.+?\.xml)$', dwgfileinfo, name="dwgfileinfo"), # parses tunnel for info
re_path(r'^tunneldataraw/(?P<path>.+?\.xml)/upload$', surveys.tunnelfileupload, name="tunnelfileupload"), re_path(r'^dwgdataraw/(?P<path>.+?\.xml)/upload$', dwgfileupload, name="dwgfileupload"), # Not working
# QMs pages - must precede other /caves pages # QMs pages - must precede other /caves pages