diff options
Diffstat (limited to 'core/views')
-rw-r--r-- | core/views/drawings.py (renamed from core/views/surveys.py) | 39 | ||||
-rw-r--r-- | core/views/scans.py | 47 |
2 files changed, 51 insertions, 35 deletions
diff --git a/core/views/surveys.py b/core/views/drawings.py index 56168f6..7657d3d 100644 --- a/core/views/surveys.py +++ b/core/views/drawings.py @@ -2,51 +2,23 @@ import os, stat import re from pathlib import Path from urllib.parse import urljoin, unquote as urlunquote -from urllib.request import urlopen from django.conf import settings from django.shortcuts import render -from django.http import HttpResponse, Http404 +from django.http import HttpResponse -from troggle.core.models.survex import Wallet, SingleScan, SurvexBlock, DrawingFile +from troggle.core.models.survex import DrawingFile from troggle.core.views.expo import getmimetype -import parsers.surveys +#import parsers.surveys '''Some of these views serve files as binary blobs, and simply set the mime type based on the file extension, 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 +need to check if invalid query string is invalid, or produces multiple replies and render a user-friendly error page. ''' -def singlewallet(request, path): - #print [ s.walletname for s in Wallet.objects.all() ] - try: - wallet = Wallet.objects.get(walletname=urlunquote(path)) - return render(request, 'wallet.html', { 'wallet':wallet, 'settings': settings }) - except: - message = f'Scan folder error or not found \'{path}\' .' - return render(request, 'errors/generic.html', {'message': message}) - -def scansingle(request, path, file): - '''sends a single binary file to the user for display - browser decides how using mimetype - ''' - try: - wallet = Wallet.objects.get(walletname=urlunquote(path)) - singlescan = SingleScan.objects.get(wallet=wallet, name=file) - # print(" - scansingle {}:{}:{}:".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 allwallets(request): - manywallets = Wallet.objects.all() - return render(request, 'manywallets.html', { 'manywallets':manywallets, 'settings': settings }) - - def dwgdata(request): '''Report on all the drawing files in the system. These were loaded by parsing the entire directory tree ''' @@ -124,6 +96,3 @@ def dwgfileupload(request, path): message = "File size %d overwritten with size %d" % (orgsize, dwgfile.filesize) return HttpResponse(content=message, content_type="text/plain") - - - diff --git a/core/views/scans.py b/core/views/scans.py new file mode 100644 index 0000000..3acdbae --- /dev/null +++ b/core/views/scans.py @@ -0,0 +1,47 @@ +import os, stat +import re +from pathlib import Path +from urllib.parse import urljoin, unquote as urlunquote +from urllib.request import urlopen + +from django.conf import settings +from django.shortcuts import render +from django.http import HttpResponse + +from troggle.core.models.survex import Wallet, SingleScan +from troggle.core.views.expo import getmimetype +#import parsers.surveys + +'''one of these views serves files as binary blobs, and simply set the mime type based on the file extension, +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. +''' + +def singlewallet(request, path): + #print [ s.walletname for s in Wallet.objects.all() ] + try: + wallet = Wallet.objects.get(walletname=urlunquote(path)) + return render(request, 'wallet.html', { 'wallet':wallet, 'settings': settings }) + except: + message = f'Scan folder error or not found \'{path}\' .' + return render(request, 'errors/generic.html', {'message': message}) + +def scansingle(request, path, file): + '''sends a single binary file to the user for display - browser decides how using mimetype + ''' + try: + wallet = Wallet.objects.get(walletname=urlunquote(path)) + singlescan = SingleScan.objects.get(wallet=wallet, name=file) + # print(" - scansingle {}:{}:{}:".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 allwallets(request): + manywallets = Wallet.objects.all() + return render(request, 'manywallets.html', { 'manywallets':manywallets, 'settings': settings }) |