summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/models/survex.py14
-rw-r--r--core/views/surveys.py12
-rw-r--r--parsers/survex.py4
-rw-r--r--parsers/surveys.py36
-rw-r--r--requirements.txt4
-rw-r--r--requirements3.2.txt10
-rw-r--r--templates/base.html2
-rw-r--r--templates/dwgfiles.html4
-rw-r--r--templates/expowebbase.html2
-rw-r--r--templates/manywallets.html8
-rw-r--r--templates/svxcaveseveral.html4
-rw-r--r--templates/svxcavesingle.html4
-rw-r--r--templates/wallet.html (renamed from templates/scansfolder.html)6
-rw-r--r--urls.py6
14 files changed, 64 insertions, 52 deletions
diff --git a/core/models/survex.py b/core/models/survex.py
index 6d662e9..b30f231 100644
--- a/core/models/survex.py
+++ b/core/models/survex.py
@@ -114,7 +114,7 @@ class SurvexBlock(models.Model):
survexfile = models.ForeignKey("SurvexFile", blank=True, null=True,on_delete=models.SET_NULL)
survexpath = models.CharField(max_length=200) # the path for the survex stations
- scansfolder = models.ForeignKey("Wallet", null=True,on_delete=models.SET_NULL)
+ scanswallet = models.ForeignKey("Wallet", null=True,on_delete=models.SET_NULL)
legsall = models.IntegerField(null=True) # summary data for this block
legslength = models.FloatField(null=True)
@@ -180,24 +180,24 @@ class Wallet(models.Model):
ordering = ('walletname',)
def get_absolute_url(self):
- return urljoin(settings.URL_ROOT, reverse('scanswallet', kwargs={"path":re.sub("#", "%23", self.walletname)}))
+ return urljoin(settings.URL_ROOT, reverse('singlewallet', kwargs={"path":re.sub("#", "%23", self.walletname)}))
def __str__(self):
return str(self.walletname) + " (Survey Scans Folder)"
class SingleScan(models.Model):
- ffile = models.CharField(max_length=200)
- name = models.CharField(max_length=200)
- scansfolder = models.ForeignKey("Wallet", null=True,on_delete=models.SET_NULL)
+ ffile = models.CharField(max_length=200)
+ name = models.CharField(max_length=200)
+ wallet = models.ForeignKey("Wallet", null=True,on_delete=models.SET_NULL)
class Meta:
ordering = ('name',)
def get_absolute_url(self):
- return urljoin(settings.URL_ROOT, reverse('scansingle', kwargs={"path":re.sub("#", "%23", self.scansfolder.walletname), "file":self.name}))
+ return urljoin(settings.URL_ROOT, reverse('scansingle', kwargs={"path":re.sub("#", "%23", self.wallet.walletname), "file":self.name}))
def __str__(self):
- return "Survey Scan Image: " + str(self.name) + " in " + str(self.scansfolder)
+ return "Survey Scan Image: " + str(self.name) + " in " + str(self.wallet)
class DrawingFile(models.Model):
dwgpath = models.CharField(max_length=200)
diff --git a/core/views/surveys.py b/core/views/surveys.py
index 952aa77..56168f6 100644
--- a/core/views/surveys.py
+++ b/core/views/surveys.py
@@ -20,11 +20,11 @@ need to check if inavlid query string is invalid, or produces multiple replies
and render a user-friendly error page.
'''
-def scanswallet(request, path):
+def singlewallet(request, path):
#print [ s.walletname for s in Wallet.objects.all() ]
try:
- scansfolder = Wallet.objects.get(walletname=urlunquote(path))
- return render(request, 'scansfolder.html', { 'scansfolder':scansfolder, 'settings': settings })
+ 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})
@@ -33,8 +33,8 @@ def scansingle(request, path, file):
'''sends a single binary file to the user for display - browser decides how using mimetype
'''
try:
- scansfolder = Wallet.objects.get(walletname=urlunquote(path))
- singlescan = SingleScan.objects.get(scansfolder=scansfolder, name=file)
+ 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:
@@ -42,7 +42,7 @@ def scansingle(request, path, file):
return render(request, 'errors/generic.html', {'message': message})
-def scanswallets(request):
+def allwallets(request):
manywallets = Wallet.objects.all()
return render(request, 'manywallets.html', { 'manywallets':manywallets, 'settings': settings })
diff --git a/parsers/survex.py b/parsers/survex.py
index 9686b2e..ea1e061 100644
--- a/parsers/survex.py
+++ b/parsers/survex.py
@@ -86,7 +86,7 @@ class LoadingSurvex():
"""A 'survex block' is a *begin...*end set of cave data.
A survex file can contain many begin-end blocks, which can be nested, and which can *include
other survex files.
- A 'scansfolder' is what we today call a "survey scans folder" or a "wallet".
+ A 'scanswallet' is what we today call a "survey scans folder" or a "wallet".
"""
rx_begin = re.compile(r'(?i)begin')
rx_end = re.compile(r'(?i)end$')
@@ -475,7 +475,7 @@ class LoadingSurvex():
DataIssue.objects.create(parser='survex', message=message)
manywallets = Wallet.objects.filter(walletname=refscan)
if manywallets:
- survexblock.scansfolder = manywallets[0] # this is a ForeignKey field
+ survexblock.scanswallet = manywallets[0] # this is a ForeignKey field
print(manywallets[0])
survexblock.save()
if len(manywallets) > 1:
diff --git a/parsers/surveys.py b/parsers/surveys.py
index cfe8db9..f9ca56a 100644
--- a/parsers/surveys.py
+++ b/parsers/surveys.py
@@ -58,10 +58,10 @@ def GetListDir(sdir):
return res
-def LoadListScansFile(scansfolder):
+def LoadListScansFile(wallet):
gld = [ ]
# flatten out any directories in these wallet folders - should not be any
- for (fyf, ffyf, fisdiryf) in GetListDir(scansfolder.fpath):
+ for (fyf, ffyf, fisdiryf) in GetListDir(wallet.fpath):
if fisdiryf:
gld.extend(GetListDir(ffyf))
else:
@@ -70,7 +70,7 @@ def LoadListScansFile(scansfolder):
c=0
for (fyf, ffyf, fisdiryf) in gld:
if re.search(r"\.(?:png|jpg|jpeg|pdf|svg|gif)(?i)$", fyf):
- singlescan = SingleScan(ffile=ffyf, name=fyf, scansfolder=scansfolder)
+ singlescan = SingleScan(ffile=ffyf, name=fyf, wallet=wallet)
singlescan.save()
c+=1
if c>=10:
@@ -107,35 +107,35 @@ def LoadListScans():
print("%s" % f, end=' ')
for fy, ffy, fisdiry in GetListDir(ff):
if fisdiry:
- scansfolder = Wallet(fpath=ffy, walletname=fy)
- scansfolder.save()
- LoadListScansFile(scansfolder)
+ wallet = Wallet(fpath=ffy, walletname=fy)
+ wallet.save()
+ LoadListScansFile(wallet)
# do the
elif f != "thumbs":
- scansfolder = Wallet(fpath=ff, walletname=f)
- scansfolder.save()
- LoadListScansFile(scansfolder)
+ wallet = Wallet(fpath=ff, walletname=f)
+ wallet.save()
+ LoadListScansFile(wallet)
def find_tunnel_scan(dwgfile, path):
'''Is given a line of text 'path' which may or may not contain a recognisable name of a scanned file
which we have already seen when we imported all the files we could find in the surveyscans direstories
'''
- scansfolder, scansfile = None, None
+ wallet, scansfile = None, None
mscansdir = re.search(r"(\d\d\d\d#X?\d+\w?|1995-96kh|92-94Surveybookkh|1991surveybook|smkhs)/(.*?(?:png|jpg|pdf|jpeg))$", path)
if mscansdir:
- scansfolderl = Wallet.objects.filter(walletname=mscansdir.group(1))
+ scanswalletl = Wallet.objects.filter(walletname=mscansdir.group(1))
# This should properly detect if a list of folders is returned and do something sensible, not just pick the first.
- if len(scansfolderl):
- scansfolder = scansfolderl[0]
- if len(scansfolderl) > 1:
+ if len(scanswalletl):
+ wallet = scanswalletl[0]
+ if len(scanswalletl) > 1:
message = "! More than one scan FOLDER matches filter query. [{}]: {} {} {} {}".format(scansfilel[0], mscansdir.group(1), mscansdir.group(2), dwgfile.dwgpath, path)
print(message)
DataIssue.objects.create(parser='Tunnel', message=message)
- if scansfolder:
- scansfilel = scansfolder.singlescan_set.filter(name=mscansdir.group(2))
+ if wallet:
+ scansfilel = wallet.singlescan_set.filter(name=mscansdir.group(2))
if len(scansfilel):
if len(scansfilel) > 1:
message = "! More than one image FILENAME matches filter query. [{}]: {} {} {} {}".format(scansfilel[0], mscansdir.group(1), mscansdir.group(2), dwgfile.dwgpath, path)
@@ -143,8 +143,8 @@ def find_tunnel_scan(dwgfile, path):
DataIssue.objects.create(parser='Tunnel', message=message)
scansfile = scansfilel[0]
- if scansfolder:
- dwgfile.manywallets.add(scansfolder)
+ if wallet:
+ dwgfile.manywallets.add(wallet)
if scansfile:
dwgfile.scans.add(scansfile)
diff --git a/requirements.txt b/requirements.txt
index a7a7711..cba36bf 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,8 +1,10 @@
+asgiref==3.3.4
confusable-homoglyphs==3.2.0
-Django==2.2.19
+Django==2.2.20
docutils==0.14
gunicorn==20.1.0
Pillow==5.4.1
pytz==2019.1
sqlparse==0.2.4
+typing-extensions==3.7.4.3
Unidecode==1.0.23
diff --git a/requirements3.2.txt b/requirements3.2.txt
new file mode 100644
index 0000000..06995ab
--- /dev/null
+++ b/requirements3.2.txt
@@ -0,0 +1,10 @@
+asgiref==3.3.4
+confusable-homoglyphs==3.2.0
+Django==3.2
+docutils==0.14
+gunicorn==20.1.0
+Pillow==5.4.1
+pytz==2019.1
+sqlparse==0.2.4
+typing-extensions==3.7.4.3
+Unidecode==1.0.23
diff --git a/templates/base.html b/templates/base.html
index 0ae254d..c10f2ab 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -31,7 +31,7 @@
<a href="{% url "survexcavessingle" "204" %}">Survex-204</a> |
<a href="/survexfile/">Survex</a> |
<a href="{% url "survexcaveslist" %}">All Survex</a> |
- <a href="{% url "scanswallets" %}">Scans</a> |
+ <a href="{% url "allwallets" %}">Scans</a> |
<a href="{% url "dwgdata" %}">Drawings</a> |
<a href="/1623/290/290.html">290 (FGH)</a> |
<a href="/1623/291/291">291 (GSH)</a> |
diff --git a/templates/dwgfiles.html b/templates/dwgfiles.html
index a89bca3..d850976 100644
--- a/templates/dwgfiles.html
+++ b/templates/dwgfiles.html
@@ -17,8 +17,8 @@
<td align="right" style="padding:2px">{{dwgfile.npaths}}</td>
<td style="padding:2px">
- {% for scansfolder in dwgfile.manywallets.all %}
- <a href="{{scansfolder.get_absolute_url}}">{{scansfolder.walletname}}</a>
+ {% for scanswallet in dwgfile.manywallets.all %}
+ <a href="{{scanswallet.get_absolute_url}}">{{scanswallet.walletname}}</a>
{% endfor %}
</td>
diff --git a/templates/expowebbase.html b/templates/expowebbase.html
index 5261e8a..097c4e0 100644
--- a/templates/expowebbase.html
+++ b/templates/expowebbase.html
@@ -17,7 +17,7 @@
{% if cavepage %}
<ul>
<li><a href="{% url "survexcaveslist" %}">All Survex</a></li>
-<li><a href="{% url "scanswallets" %}">Scans</a></li>
+<li><a href="{% url "allwallets" %}">Scans</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/291/291.svx" %}">291</a></li>
diff --git a/templates/manywallets.html b/templates/manywallets.html
index fd63bcc..d841398 100644
--- a/templates/manywallets.html
+++ b/templates/manywallets.html
@@ -13,12 +13,12 @@ hand-drawn passage sections are drawn. These hand-drawn passages will eventually
traced to produce Tunnel or Therion drawings and eventually the final complete cave survey.
<table width=95%>
<tr><th>Scans folder</th><th>Files</th><th>Survex blocks</th></tr>
-{% for scansfolder in manywallets %}
+{% for scanswallet in manywallets %}
<tr>
- <td style="padding:2px"><a href="{{scansfolder.get_absolute_url}}">{{scansfolder.walletname}}</a></td>
- <td align="right" style="padding:2px">{{scansfolder.singlescan_set.all|length}}</td>
+ <td style="padding:2px"><a href="{{scanswallet.get_absolute_url}}">{{scanswallet.walletname}}</a></td>
+ <td align="right" style="padding:2px">{{scanswallet.singlescan_set.all|length}}</td>
<td style="padding:2px">
- {% for survexblock in scansfolder.survexblock_set.all %}
+ {% for survexblock in scanswallet.survexblock_set.all %}
<a href="{% url "svx" survexblock.survexfile.path %}">{{survexblock}}</a>
{% endfor %}
</td>
diff --git a/templates/svxcaveseveral.html b/templates/svxcaveseveral.html
index a0e2f97..b6b7f14 100644
--- a/templates/svxcaveseveral.html
+++ b/templates/svxcaveseveral.html
@@ -89,8 +89,8 @@
</td>
<!-- Scans -->
<td>
- {% if survexblock.scansfolder %}
- <b><a href="{{survexblock.scansfolder.get_absolute_url}}">{{survexblock.scansfolder.walletname}}</a></b>
+ {% if survexblock.scanswallet %}
+ <b><a href="{{survexblock.scanswallet.get_absolute_url}}">{{survexblock.scanswallet.walletname}}</a></b>
{% endif %}
</td>
</tr>
diff --git a/templates/svxcavesingle.html b/templates/svxcavesingle.html
index a17231d..bf7faef 100644
--- a/templates/svxcavesingle.html
+++ b/templates/svxcavesingle.html
@@ -89,8 +89,8 @@ to go to a form to correct the online data.
</td>
<!-- Scans -->
<td>
- {% if survexblock.scansfolder %}
- <b><a href="{{survexblock.scansfolder.get_absolute_url}}">{{survexblock.scansfolder.walletname}}</a></b>
+ {% if survexblock.scanswallet %}
+ <b><a href="{{survexblock.scanswallet.get_absolute_url}}">{{survexblock.scanswallet.walletname}}</a></b>
{% endif %}
</td>
</tr>
diff --git a/templates/scansfolder.html b/templates/wallet.html
index a15f054..7301ce3 100644
--- a/templates/scansfolder.html
+++ b/templates/wallet.html
@@ -6,9 +6,9 @@
{% block content %}
-<h3>Survey Scans in: {{scansfolder.walletname}}</h3>
+<h3>Survey Scans in: {{wallet.walletname}}</h3>
<table>
-{% for singlescan in scansfolder.singlescan_set.all %}
+{% for singlescan in wallet.singlescan_set.all %}
<tr>
<td class="singlescan"><a href="{{singlescan.get_absolute_url}}">{{singlescan.name}}</a></td>
<td>
@@ -23,7 +23,7 @@
<h3>Survex surveys referring to this wallet</h3>
<table>
-{% for survexblock in scansfolder.survexblock_set.all %}
+{% for survexblock in wallet.survexblock_set.all %}
<tr>
<td><a href="{% url "svx" survexblock.survexfile.path %}">{{survexblock}}</a></td>
</tr>
diff --git a/urls.py b/urls.py
index 33146cc..227f66d 100644
--- a/urls.py
+++ b/urls.py
@@ -9,7 +9,7 @@ from django.contrib import auth
from django.urls import reverse, resolve
from troggle.core.views import caves, statistics, survex
-from troggle.core.views.surveys import scansingle, scanswallet, scanswallets, dwgdata, dwgfilesingle, dwgfileupload
+from troggle.core.views.surveys import scansingle, singlewallet, allwallets, dwgdata, dwgfilesingle, dwgfileupload
from troggle.core.views.other import troggle404, frontpage, todos, controlpanel, frontpage, scanupload
from troggle.core.views.other import downloadlogbook, ajax_QM_number, downloadQMs
from troggle.core.views.caves import ent, cavepage
@@ -141,8 +141,8 @@ trogglepatterns = [
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'^survey_scans/$', scanswallets, name="scanswallets"),
- re_path(r'^survey_scans/(?P<path>[^/]+)/$', scanswallet, name="scanswallet"),
+ re_path(r'^survey_scans/$', allwallets, name="allwallets"),
+ re_path(r'^survey_scans/(?P<path>[^/]+)/$', singlewallet, name="singlewallet"),
re_path(r'^survey_scans/(?P<path>[^/]+)/(?P<file>[^/]+)$',
scansingle, name="scansingle"),