diff options
author | Philip Sargent <philip.sargent@klebos.com> | 2021-05-03 20:36:29 +0100 |
---|---|---|
committer | Philip Sargent <philip.sargent@klebos.com> | 2021-05-03 20:36:29 +0100 |
commit | fd95bb81985d51b8a231131aead9b8bc37b26a8d (patch) | |
tree | 5a83e5643c363a376f76dcfedc71b765fd6321d5 /core | |
parent | 9b9f6720e079669fd884d83f6b69833e20d03ff7 (diff) | |
download | troggle-fd95bb81985d51b8a231131aead9b8bc37b26a8d.tar.gz troggle-fd95bb81985d51b8a231131aead9b8bc37b26a8d.tar.bz2 troggle-fd95bb81985d51b8a231131aead9b8bc37b26a8d.zip |
split surveys->scans + drawings
Diffstat (limited to 'core')
-rw-r--r-- | core/TESTS/test_imports.py | 9 | ||||
-rw-r--r-- | core/views/drawings.py (renamed from core/views/surveys.py) | 39 | ||||
-rw-r--r-- | core/views/scans.py | 47 |
3 files changed, 56 insertions, 39 deletions
diff --git a/core/TESTS/test_imports.py b/core/TESTS/test_imports.py index 155851e..672f581 100644 --- a/core/TESTS/test_imports.py +++ b/core/TESTS/test_imports.py @@ -42,7 +42,7 @@ class SimpleTest(SimpleTestCase): from troggle.parsers.people import GetPersonExpeditionNameLookup from troggle.core.views.other import troggle404, frontpage from troggle.core.views.caves import ent, cavepage - from troggle.core.views import surveys, other, caves, statistics, survex + from troggle.core.views import scans, drawings, other, caves, statistics, survex def test_import_parsers_QMs(self): from troggle.core.models.caves import QM, Cave, LogbookEntry def test_import_parsers_people(self): @@ -61,7 +61,7 @@ class SimpleTest(SimpleTestCase): from troggle.core.models.troggle import Expedition from troggle.core.models.caves import CaveSlug, Cave, CaveAndEntrance, QM, EntranceSlug, Entrance, Area, SurvexStation from troggle.core.forms import CaveForm, CaveAndEntranceFormSet, EntranceForm, EntranceLetterForm - from troggle.core.views.login import login_required_if_public + from troggle.core.views.auth import login_required_if_public from django.contrib.auth.decorators import login_required from django.conf import settings def test_import_parsers_mix(self): @@ -70,7 +70,8 @@ class SimpleTest(SimpleTestCase): import troggle.logbooksdump import troggle.parsers.caves import troggle.parsers.people - import troggle.parsers.surveys + import troggle.parsers.drawings + import troggle.parsers.scans import troggle.parsers.logbooks import troggle.parsers.QMs import troggle.parsers.survex @@ -90,7 +91,7 @@ class SimpleTest(SimpleTestCase): from django.views.generic.base import RedirectView from django.views.generic.edit import UpdateView from django.views.generic.list import ListView - from troggle.core.views import surveys, other, caves, statistics, survex + from troggle.core.views import other, caves, statistics, survex from troggle.core.views.auth import expologin, expologout from troggle.core.views.caves import ent, cavepage from troggle.core.views.expo import expofiles_redirect, expofilessingle, expopage, editexpopage, mediapage, map, mapfile 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 }) |