summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/forms.py7
-rw-r--r--core/models.py37
-rw-r--r--core/views_other.py94
-rw-r--r--flatpages/views.py2
-rw-r--r--localsettingsWSL.py8
-rw-r--r--urls.py6
6 files changed, 83 insertions, 71 deletions
diff --git a/core/forms.py b/core/forms.py
index 7816014..f86796a 100644
--- a/core/forms.py
+++ b/core/forms.py
@@ -65,7 +65,10 @@ class EntranceForm(ModelForm):
return self.cleaned_data
-
+# This next is called from the templates/edit_cave2.html template.
+# This is sufficeint to create an entire entry for for the cave fields automatically
+# http://localhost:8000/cave/new/
+# using django built-in stuff:
CaveAndEntranceFormSet = modelformset_factory(CaveAndEntrance, exclude=('cave',))
class EntranceLetterForm(ModelForm):
@@ -153,6 +156,8 @@ def get_name(pe):
return pe.person.first_name
class UploadFileForm(forms.Form):
+ """Only called by views_others.newFile() whhich seems to be only about logbook files.
+ """
# Because this has EXECUTABLE statements in its signature (the fields) they get
# executed when this module is LOADED. Which barfs horribly.
# so all replaced by an __init__ method instead.
diff --git a/core/models.py b/core/models.py
index cd6f1e2..eb8428d 100644
--- a/core/models.py
+++ b/core/models.py
@@ -34,21 +34,21 @@ def get_process_memory():
return usage[2]/1024.0
-def get_related_by_wikilinks(wiki_text):
- found=re.findall(settings.QM_PATTERN,wiki_text)
- res=[]
- for wikilink in found:
- qmdict={'urlroot':settings.URL_ROOT,'cave':wikilink[2],'year':wikilink[1],'number':wikilink[3]}
- try:
- cave_slugs = models_caves.CaveSlug.objects.filter(cave__kataster_number = qmdict['cave'])
- qm=QM.objects.get(found_by__cave_slug__in = cave_slugs,
- found_by__date__year = qmdict['year'],
- number = qmdict['number'])
- res.append(qm)
- except QM.DoesNotExist:
- print(('fail on '+str(wikilink)))
+# def get_related_by_wikilinks(wiki_text):
+ # found=re.findall(settings.QM_PATTERN,wiki_text)
+ # res=[]
+ # for wikilink in found:
+ # qmdict={'urlroot':settings.URL_ROOT,'cave':wikilink[2],'year':wikilink[1],'number':wikilink[3]}
+ # try:
+ # cave_slugs = models_caves.CaveSlug.objects.filter(cave__kataster_number = qmdict['cave'])
+ # qm=QM.objects.get(found_by__cave_slug__in = cave_slugs,
+ # found_by__date__year = qmdict['year'],
+ # number = qmdict['number'])
+ # res.append(qm)
+ # except QM.DoesNotExist:
+ # print(('fail on '+str(wikilink)))
- return res
+ # return res
try:
logging.basicConfig(level=logging.DEBUG,
@@ -72,6 +72,15 @@ class TroggleModel(models.Model):
abstract = True
class DataIssue(TroggleModel):
+ """When importing cave data any validation problems produce a message which is
+ recorded as a DataIssue. The django admin system automatically prodiuces a page listing
+ these at /admin/core/dataissue/
+ This is a use of the NOTIFICATION pattern:
+ https://martinfowler.com/eaaDev/Notification.html
+
+ And we need to use it to replace all assertions in the code too:
+ https://martinfowler.com/articles/replaceThrowWithNotification.html
+ """
date = models.DateTimeField(auto_now_add=True, blank=True)
parser = models.CharField(max_length=50, blank=True, null=True)
message = models.CharField(max_length=400, blank=True, null=True)
diff --git a/core/views_other.py b/core/views_other.py
index 10c1ec7..cc8fe3a 100644
--- a/core/views_other.py
+++ b/core/views_other.py
@@ -128,62 +128,62 @@ def ajax_QM_number(request):
return HttpResponse(res)
-def logbook_entry_suggestions(request):
- """
- Generates a html box with suggestions about what to do with QMs
- in logbook entry text.
- """
- unwiki_QM_pattern=r"(?P<whole>(?P<explorer_code>[ABC]?)(?P<cave>\d*)-?(?P<year>\d\d\d?\d?)-(?P<number>\d\d)(?P<grade>[ABCDXV]?))"
- unwiki_QM_pattern=re.compile(unwiki_QM_pattern)
- #wikilink_QM_pattern=settings.QM_PATTERN
+# def logbook_entry_suggestions(request):
+ # """
+ # Generates a html box with suggestions about what to do with QMs
+ # in logbook entry text.
+ # """
+ # unwiki_QM_pattern=r"(?P<whole>(?P<explorer_code>[ABC]?)(?P<cave>\d*)-?(?P<year>\d\d\d?\d?)-(?P<number>\d\d)(?P<grade>[ABCDXV]?))"
+ # unwiki_QM_pattern=re.compile(unwiki_QM_pattern)
+ # #wikilink_QM_pattern=settings.QM_PATTERN
- slug=request.POST['slug']
- date=request.POST['date']
- lbo=LogbookEntry.objects.get(slug=slug, date=date)
+ # slug=request.POST['slug']
+ # date=request.POST['date']
+ # lbo=LogbookEntry.objects.get(slug=slug, date=date)
- #unwiki_QMs=re.findall(unwiki_QM_pattern,lbo.text)
- unwiki_QMs=[m.groupdict() for m in unwiki_QM_pattern.finditer(lbo.text)]
+ # #unwiki_QMs=re.findall(unwiki_QM_pattern,lbo.text)
+ # unwiki_QMs=[m.groupdict() for m in unwiki_QM_pattern.finditer(lbo.text)]
- print(unwiki_QMs)
- for qm in unwiki_QMs:
- #try:
- if len(qm['year'])==2:
- if int(qm['year'])<50:
- qm['year']='20'+qm['year']
- else:
- qm['year']='19'+qm['year']
-
- if lbo.date.year!=int(qm['year']):
- try:
- lbo=LogbookEntry.objects.get(date__year=qm['year'],title__icontains="placeholder for QMs in")
- except:
- print(("failed to get placeholder for year "+str(qm['year'])))
+ # print(unwiki_QMs)
+ # for qm in unwiki_QMs:
+ # #try:
+ # if len(qm['year'])==2:
+ # if int(qm['year'])<50:
+ # qm['year']='20'+qm['year']
+ # else:
+ # qm['year']='19'+qm['year']
+
+ # if lbo.date.year!=int(qm['year']):
+ # try:
+ # lbo=LogbookEntry.objects.get(date__year=qm['year'],title__icontains="placeholder for QMs in")
+ # except:
+ # print(("failed to get placeholder for year "+str(qm['year'])))
- temp_QM=QM(found_by=lbo,number=qm['number'],grade=qm['grade'])
- temp_QM.grade=qm['grade']
- qm['wikilink']=temp_QM.wiki_link()
- #except:
- #print 'failed'
+ # temp_QM=QM(found_by=lbo,number=qm['number'],grade=qm['grade'])
+ # temp_QM.grade=qm['grade']
+ # qm['wikilink']=temp_QM.wiki_link()
+ # #except:
+ # #print 'failed'
- print(unwiki_QMs)
+ # print(unwiki_QMs)
- #wikilink_QMs=re.findall(wikilink_QM_pattern,lbo.text)
- attached_QMs=lbo.QMs_found.all()
- unmentioned_attached_QMs=''#not implemented, fill this in by subtracting wiklink_QMs from attached_QMs
+ # #wikilink_QMs=re.findall(wikilink_QM_pattern,lbo.text)
+ # attached_QMs=lbo.QMs_found.all()
+ # unmentioned_attached_QMs=''#not implemented, fill this in by subtracting wiklink_QMs from attached_QMs
- #Find unattached_QMs. We only look at the QMs with a proper wiki link.
- #for qm in wikilink_QMs:
- #Try to look up the QM.
+ # #Find unattached_QMs. We only look at the QMs with a proper wiki link.
+ # #for qm in wikilink_QMs:
+ # #Try to look up the QM.
- print('got 208')
- any_suggestions=True
- print('got 210')
- return render(request,'suggestions.html',
- {
- 'unwiki_QMs':unwiki_QMs,
- 'any_suggestions':any_suggestions
- })
+ # print('got 208')
+ # any_suggestions=True
+ # print('got 210')
+ # return render(request,'suggestions.html',
+ # {
+ # 'unwiki_QMs':unwiki_QMs,
+ # 'any_suggestions':any_suggestions
+ # })
print(" - newFile() is next in troggle/core/views_other.py")
diff --git a/flatpages/views.py b/flatpages/views.py
index 8194b37..475531f 100644
--- a/flatpages/views.py
+++ b/flatpages/views.py
@@ -85,7 +85,7 @@ def flatpage(request, path):
if m:
preheader, headerattrs, head, postheader, bodyattrs, body, postbody = m.groups()
else:
- return HttpResponse(html + "Page could not be split into header and body: parsing failed in flatpages.views.py")
+ return HttpResponse(html + "HTML Parsing failure: Page could not be split into header and body: failed in flatpages.views.py")
m = re.search(rb"<title>(.*)</title>", head, re.DOTALL + re.IGNORECASE)
if m:
title, = m.groups()
diff --git a/localsettingsWSL.py b/localsettingsWSL.py
index 09f5429..92fe3c1 100644
--- a/localsettingsWSL.py
+++ b/localsettingsWSL.py
@@ -24,16 +24,12 @@ print(" * importing troggle/localsettings.py")
# - we don't want to have to change the expo system password !
#-----------------------------------------------------------------
-SERVERPORT = '3777'
+SERVERPORT = '8000'
LIBDIR = '/mnt/d/CUCC-Expo/t37/lib/python3.7/'
-#LIBDIR = '/mnt/d/CUCC-Expo/deb37/lib/python3.7/'
-#LIBDIR = '/mnt/d/CUCC-Expo/t38/lib/python3.8/'
#LIBDIR = '/usr/lib/python3.8/'
REPOS_ROOT_PATH = '/mnt/d/CUCC-Expo/t37/'
-#REPOS_ROOT_PATH = '/mnt/d/CUCC-Expo/t38/'
-#REPOS_ROOT_PATH = '/mnt/d/CUCC-Expo/deb37/'
#REPOS_ROOT_PATH = '/mnt/d/CUCC-Expo/'
MEDIA_ROOT = REPOS_ROOT_PATH + 'troggle/media/'
@@ -43,7 +39,7 @@ MEDIA_URL = '/site_media/'
#STATIC_ROOT removed after merging content into MEDIA_ROOT. See urls.py & core/views_surveys.py
PUBLIC_SITE = True
-DEBUG = True
+DEBUG = True # Always keep this, even when on public server. Otherwise NO ERROR MESSAGES !
# executables:
CAVERN = 'cavern'
diff --git a/urls.py b/urls.py
index 8d20f68..a92a0ee 100644
--- a/urls.py
+++ b/urls.py
@@ -6,7 +6,7 @@ from django.contrib import admin
from django.urls import reverse, resolve
from troggle.core import views_other, views_caves, views_logbooks, views_statistics, views_survex, view_surveys
-from troggle.core.views_other import logbook_entry_suggestions
+#from troggle.core.views_other import logbook_entry_suggestions
from troggle.core.views_caves import ent, prospecting_image
from troggle.core.views_statistics import pathsreport, stats
from flatpages import views as flatviews
@@ -39,7 +39,7 @@ actualurlpatterns = [
url(r'^people/?$', views_logbooks.personindex, name="personindex"),
url(r'^newqmnumber/?$', views_other.ajax_QM_number, ),
- url(r'^lbo_suggestions/?$', logbook_entry_suggestions), #broken
+# url(r'^lbo_suggestions/?$', logbook_entry_suggestions), #broken, removed.
# url(r'^person/(?P<person_id>\d*)/?$', views_logbooks.person),
url(r'^person/(?P<first_name>[A-Z]*[a-z\-\'&;]*)[^a-zA-Z]*(?P<last_name>[a-z\-\']*[^a-zA-Z]*[A-Z]*[a-z\-&;]*)/?', views_logbooks.person, name="person"),
# url(r'^person/(\w+_\w+)$', views_logbooks.person, name="person"),
@@ -96,6 +96,8 @@ actualurlpatterns = [
url(r'^accounts/', include('registration.backends.default.urls')), # needed to log in!
# url(r'^profiles/', include('profiles.urls')), # not used ? Delete this entire app then.
+# url(r'^map/', .........), # Intercepted by Apache. Yields OpenStreetMap. Redirects to expoweb/map
+
url(r'^survexblock/(.+)$', views_caves.survexblock, name="survexblock"),
url(r'^survexfile/(?P<survex_file>.*?)\.svx$', views_survex.svx, name="svx"),
url(r'^survexfile/(?P<survex_file>.*?)\.3d$', views_survex.threed, name="threed"),