summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@klebos.com>2021-05-03 20:36:29 +0100
committerPhilip Sargent <philip.sargent@klebos.com>2021-05-03 20:36:29 +0100
commitfd95bb81985d51b8a231131aead9b8bc37b26a8d (patch)
tree5a83e5643c363a376f76dcfedc71b765fd6321d5 /core
parent9b9f6720e079669fd884d83f6b69833e20d03ff7 (diff)
downloadtroggle-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.py9
-rw-r--r--core/views/drawings.py (renamed from core/views/surveys.py)39
-rw-r--r--core/views/scans.py47
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 })