diff --git a/core/TESTS/tests.py b/core/TESTS/tests.py index aed66bb..4d22596 100644 --- a/core/TESTS/tests.py +++ b/core/TESTS/tests.py @@ -345,9 +345,9 @@ class PageTests(TestCase): phmatch = re.search(ph, content) 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 - response = self.client.get('/tunneldataraw/') + response = self.client.get('/dwgdataraw/') self.assertEqual(response.status_code, 200) content = response.content.decode() ph = r"

Directory not found" @@ -387,9 +387,9 @@ class PageTests(TestCase): # self.assertEqual(response.status_code, 200) # 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 - # response = self.client.get('/tunneldataraw/107/107sketch-v2.xml') + # response = self.client.get('/dwgdataraw/107/107sketch-v2.xml') # if response.status_code != 200: # self.assertEqual(response.status_code, 302) # if response.status_code != 302: diff --git a/core/views/surveys.py b/core/views/surveys.py index 22be7ec..2737a05 100644 --- a/core/views/surveys.py +++ b/core/views/surveys.py @@ -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 by looking inside the file before being served. - need to check if inavlid query string is invalid, or produces multiple replies - and render a user-friendly error page. +need to check if inavlid query string is invalid, or produces multiple replies +and render a user-friendly error page. ''' def surveyscansfolder(request, path): #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 - return render(request, 'scansfolder.html', { 'scansfolder':scansfolder, 'settings': settings }) + try: + scansfolder = ScansFolder.objects.get(walletname=urlunquote(path)) + 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): - '''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 - singlescan = SingleScan.objects.get(scansfolder=scansfolder, name=file) - # print(" - surveyscansingle {}:{}:{}:".format(path, file, getmimetype(file))) - return HttpResponse(content=open(singlescan.ffile,"rb"), content_type=getmimetype(file)) # any type of image + try: + scansfolder = ScansFolder.objects.get(walletname=urlunquote(path)) + singlescan = SingleScan.objects.get(scansfolder=scansfolder, name=file) + # print(" - surveyscansingle {}:{}:{}:".format(path, file, getmimetype(file))) + 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): @@ -39,16 +47,23 @@ def surveyscansfolders(request): 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() - return render(request, 'tunnelfiles.html', { 'tunnelfiles':tunnelfiles, 'settings': settings }) + return render(request, 'dwgfiles.html', { 'tunnelfiles':tunnelfiles, 'settings': settings }) def dwgfilesingle(request, path): '''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 ''' - 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) try: # for display not download 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.") -def tunnelfileupload(request, path): - tunnelfile = TunnelFile.objects.get(tunnelpath=urlunquote(path)) # need to check if inavlid query string and produce friendly error +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 + 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) 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" diff --git a/templates/base.html b/templates/base.html index 31523d3..64ce3c6 100644 --- a/templates/base.html +++ b/templates/base.html @@ -32,7 +32,7 @@ Survex | All Survex | Scans | - Drawing files | + Drawings | 290 (FGH) | 291 (GSH) | 204 (Steinbrucken) | diff --git a/templates/tunnelfiles.html b/templates/dwgfiles.html similarity index 100% rename from templates/tunnelfiles.html rename to templates/dwgfiles.html diff --git a/templates/expowebbase.html b/templates/expowebbase.html index 6cdace4..8d762cd 100644 --- a/templates/expowebbase.html +++ b/templates/expowebbase.html @@ -18,7 +18,7 @@