diff --git a/core/TESTS/tests.py b/core/TESTS/tests.py index 852fb08..96d726f 100644 --- a/core/TESTS/tests.py +++ b/core/TESTS/tests.py @@ -40,7 +40,7 @@ class SimpleTest(SimpleTestCase): import troggle.core.models_caves as models_caves import troggle.core.models_survex as models_survex from troggle.parsers.people import GetPersonExpeditionNameLookup - from troggle.core.views_caves import MapLocations + from troggle.core.views.caves import MapLocations def test_import_parsers_QMs(self): from troggle.core.models_caves import QM, Cave, LogbookEntry from utils import save_carefully @@ -56,7 +56,7 @@ class SimpleTest(SimpleTestCase): def test_import_core_views_caves(self): from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import get_object_or_404, render - import troggle.core.views_expo + import troggle.core.views.expo from troggle.core.models import Expedition from troggle.core.models_caves import CaveSlug, Cave, CaveAndEntrance, QM, EntranceSlug, Entrance, Area, SurvexStation from troggle.core.forms import CaveForm, CaveAndEntranceFormSet, VersionControlCommentForm, EntranceForm, EntranceLetterForm diff --git a/core/admin.py b/core/admin.py index 3cb8d86..5f62fbd 100644 --- a/core/admin.py +++ b/core/admin.py @@ -4,7 +4,7 @@ from django.forms import ModelForm from django.http import HttpResponse from django.core import serializers -from troggle.core.views_other import downloadLogbook +from troggle.core.views.other import downloadLogbook from troggle.core.models import Person, PersonExpedition, Expedition, DataIssue from troggle.core.models_caves import Cave, Area, Entrance, CaveAndEntrance, LogbookEntry, PersonTrip, QM from troggle.core.models_survex import SurvexBlock, SurvexPersonRole, SurvexStation, ScansFolder, SingleScan diff --git a/core/forms.py b/core/forms.py index f86796a..d3941b0 100644 --- a/core/forms.py +++ b/core/forms.py @@ -156,7 +156,7 @@ 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. + """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. diff --git a/core/views.py b/core/views.py deleted file mode 100644 index b74b709..0000000 --- a/core/views.py +++ /dev/null @@ -1,8 +0,0 @@ -# primary namespace - -from . import view_surveys -from . import views_caves -from . import views_survex -from . import views_logbooks -from . import views_other -from . import views_statistics diff --git a/core/views/__init__.py b/core/views/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/views_caves.py b/core/views/caves.py similarity index 100% rename from core/views_caves.py rename to core/views/caves.py diff --git a/core/views_expo.py b/core/views/expo.py similarity index 99% rename from core/views_expo.py rename to core/views/expo.py index 49f8bc7..4ca6f22 100644 --- a/core/views_expo.py +++ b/core/views/expo.py @@ -15,7 +15,7 @@ import django.forms as forms from troggle.helper import login_required_if_public from troggle.core.models_caves import Cave -import troggle.core.views_caves +import troggle.core.views.caves import troggle.settings as settings '''Formerly a separate package 'flatpages' written by Martin Green 2011. @@ -69,7 +69,7 @@ def expowebpage(request, expowebpath, path): if m: preheader, headerattrs, head, postheader, bodyattrs, body, postbody = m.groups() else: - return HttpResponse(html + "HTML Parsing failure: Page could not be split into header and body: failed in expowebpage in views_expo.py") + return HttpResponse(html + "HTML Parsing failure: Page could not be split into header and body: failed in expowebpage in views.expo.py") m = re.search(rb"(.*)", head, re.DOTALL + re.IGNORECASE) if m: title, = m.groups() @@ -181,7 +181,7 @@ def getmimetype(path): def editexpopage(request, path): try: r = Cave.objects.get(url = path) - return troggle.core.views_caves.editCave(request, r.cave.slug) + return troggle.core.views.caves.editCave(request, r.cave.slug) except Cave.DoesNotExist: pass diff --git a/core/views_logbooks.py b/core/views/logbooks.py similarity index 100% rename from core/views_logbooks.py rename to core/views/logbooks.py diff --git a/core/views_other.py b/core/views/other.py similarity index 97% rename from core/views_other.py rename to core/views/other.py index 5b9303c..83acc4c 100644 --- a/core/views_other.py +++ b/core/views/other.py @@ -14,7 +14,7 @@ from troggle.core.models_caves import LogbookEntry, QM, Cave, PersonTrip from troggle.helper import login_required_if_public from troggle.core.forms import UploadFileForm -print("** importing troggle/core/views_other.py") +print("** importing troggle/core/views.other.py") """Utility functions and code to serve the control panel and individual user's progress and task list (deprecated as we do not have individual user login). @@ -140,7 +140,7 @@ def ajax_QM_number(request): return HttpResponse(res) -print(" - newFile() is next in troggle/core/views_other.py") +print(" - newFile() is next in troggle/core/views.other.py") @login_required_if_public def newFile(request, pslug = None): @@ -194,4 +194,4 @@ def delFile(f): lbe.delete() os.remove(lbe.filename) -print("** Finished importing troggle/core/views_other.py") \ No newline at end of file +print("** Finished importing troggle/core/views.other.py") \ No newline at end of file diff --git a/core/views_logbooks2.py b/core/views/persons.py similarity index 100% rename from core/views_logbooks2.py rename to core/views/persons.py diff --git a/core/views_statistics.py b/core/views/statistics.py similarity index 100% rename from core/views_statistics.py rename to core/views/statistics.py diff --git a/core/views_survex.py b/core/views/survex.py similarity index 100% rename from core/views_survex.py rename to core/views/survex.py diff --git a/core/view_surveys.py b/core/views/surveys.py similarity index 98% rename from core/view_surveys.py rename to core/views/surveys.py index 2742229..63eaf2b 100644 --- a/core/view_surveys.py +++ b/core/views/surveys.py @@ -9,7 +9,7 @@ from django.shortcuts import render from django.http import HttpResponse, Http404 from troggle.core.models_survex import ScansFolder, SingleScan, SurvexBlock, TunnelFile -from .views_expo import getmimetype +from troggle.core.views.expo import getmimetype import parsers.surveys '''Some of these views serve files as binary blobs, and simply set the mime type based on the file extension, diff --git a/databaseReset.py b/databaseReset.py index 7b3b1be..c900181 100644 --- a/databaseReset.py +++ b/databaseReset.py @@ -96,16 +96,12 @@ def reinit_db(): if django.db.connections.databases['default']['ENGINE'] == 'django.db.backends.sqlite3': with transaction.atomic(): management.call_command('makemigrations','core', interactive=False) - management.call_command('makemigrations','expopages', interactive=False) management.call_command('migrate', interactive=False) management.call_command('migrate','core', interactive=False) - management.call_command('migrate','expopages', interactive=False) else: management.call_command('makemigrations','core', interactive=False) - management.call_command('makemigrations','expopages', interactive=False) management.call_command('migrate', interactive=False) management.call_command('migrate','core', interactive=False) - management.call_command('migrate','expopages', interactive=False) print(" - done migration on: " + settings.DATABASES['default']['NAME']) diff --git a/localsettings.py b/localsettings.py index 1333952..2e79d50 100644 --- a/localsettings.py +++ b/localsettings.py @@ -58,7 +58,7 @@ SVX_URL = urllib.parse.urljoin(URL_ROOT , '/survex/') STATIC_URL = urllib.parse.urljoin(URL_ROOT , '/static/') # used by Django admin pages. Do not delete. JSLIB_URL = urllib.parse.urljoin(URL_ROOT , '/javascript/') # always fails, try to revive it ? -#STATIC_ROOT removed after merging content into MEDIA_ROOT. See urls.py & core/views_surveys.py +#STATIC_ROOT removed after merging content into MEDIA_ROOT. See urls.py & core/views/surveys.py # --------------------- MEDIA redirections END --------------------- PUBLIC_SITE = True diff --git a/localsettingsWSL.py b/localsettingsWSL.py index 4296be4..81a4042 100644 --- a/localsettingsWSL.py +++ b/localsettingsWSL.py @@ -60,7 +60,7 @@ print(TROGGLE_PATH) print(TEMPLATE_PATH) print(MEDIA_ROOT) -#STATIC_ROOT removed after merging content into MEDIA_ROOT. See urls.py & core/views_surveys.py +#STATIC_ROOT removed after merging content into MEDIA_ROOT. See urls.py & core/views/surveys.py # --------------------- MEDIA redirections END --------------------- PUBLIC_SITE = True diff --git a/localsettingsserver.py b/localsettingsserver.py index 8c2f3df..aaceef0 100644 --- a/localsettingsserver.py +++ b/localsettingsserver.py @@ -97,7 +97,7 @@ SURVEYS_URL = '/survey_scans/' EXPOFILES = urllib.parse.urljoin(REPOS_ROOT_PATH, 'expofiles/') PHOTOS_URL = urllib.parse.urljoin(URL_ROOT, '/photos/') -# MEDIA_URL is used by urls.py in a regex. See urls.py & core/views_surveys.py +# MEDIA_URL is used by urls.py in a regex. See urls.py & core/views/surveys.py MEDIA_URL = '/site_media/' MEDIA_ROOT = REPOS_ROOT_PATH + '/troggle/media/' diff --git a/parsers/survex.py b/parsers/survex.py index 6fdf046..19b8466 100644 --- a/parsers/survex.py +++ b/parsers/survex.py @@ -18,7 +18,7 @@ import troggle.core.models_survex as models_survex from troggle.utils import ChaosMonkey from troggle.parsers.people import GetPersonExpeditionNameLookup from troggle.parsers.logbooks import GetCaveLookup -from troggle.core.views_caves import MapLocations +from troggle.core.views.caves import MapLocations survexblockroot = None ROOTBLOCK = "rootblock" @@ -61,7 +61,7 @@ class LoadingSurvex(): rx_teammem = re.compile(r"(?i)"+instruments+"?(?:es|s)?\s+(.*)"+instruments+"?(?:es|s)?$") rx_person = re.compile(r"(?i) and | / |, | & | \+ |^both$|^none$") rx_qm = re.compile(r'(?i)^\s*QM(\d)\s+?([a-dA-DxX])\s+([\w\-]+)\.(\d+)\s+(([\w\-]+)\.(\d+)|\-)\s+(.+)$') -# remember there is also QM_PATTERN used in views_other and set in settings.py +# remember there is also QM_PATTERN used in views.other and set in settings.py rx_tapelng = re.compile(r'(?i).*(tape|length).*$') rx_cave = re.compile(r'(?i)caves-(\d\d\d\d)/([-\d\w]+|\d\d\d\d-?\w+-\d+)') diff --git a/security-warnings.txt b/security-warnings.txt index ee3c723..4b489c0 100644 --- a/security-warnings.txt +++ b/security-warnings.txt @@ -1,14 +1,10 @@ System check identified some issues: WARNINGS: -?: (security.W004) You have not set a value for the SECURE_HSTS_SECONDS setting. If your entire site is served only over SSL, you may want to consider setting a value and enabling HTTP Strict Transport Security. Be sure to read the documentation first; enabling HSTS carelessly can cause serious, irreversible problems. - -?: (security.W008) Your SECURE_SSL_REDIRECT setting is not set to True. Unless your site should be available over both SSL and non-SSL connections, you may want to either set this setting True or configure a load balancer or reverse-proxy server to redirect all connections to HTTPS. - +?: (security.W001) You do not have 'django.middleware.security.SecurityMiddleware' in your MIDDLEWARE_CLASSES so the SECURE_HSTS_SECONDS, SECURE_CONTENT_TYPE_NOSNIFF, SECURE_BROWSER_XSS_FILTER, and SECURE_SSL_REDIRECT settings will have no effect. ?: (security.W012) SESSION_COOKIE_SECURE is not set to True. Using a secure-only session cookie makes it more difficult for network traffic sniffers to hijack user sessions. - +?: (security.W016) You have 'django.middleware.csrf.CsrfViewMiddleware' in your MIDDLEWARE_CLASSES, but you have not set CSRF_COOKIE_SECURE to True. Using a secure-only CSRF cookie makes it more difficult for network traffic sniffers to steal the CSRF token. ?: (security.W018) You should not have DEBUG set to True in deployment. - ?: (security.W019) You have 'django.middleware.clickjacking.XFrameOptionsMiddleware' in your MIDDLEWARE_CLASSES, but X_FRAME_OPTIONS is not set to 'DENY'. The default is 'SAMEORIGIN', but unless there is a good reason for your site to serve other parts of itself in a frame, you should change it to 'DENY'. System check identified 5 issues (0 silenced). diff --git a/templates/personexpedition.html b/templates/personexpedition.html index 4428756..3c9ca11 100644 --- a/templates/personexpedition.html +++ b/templates/personexpedition.html @@ -66,7 +66,7 @@ it duplicates the entry but gets it wrong. The length from the first block is di - The template is in troggle/templates/personexpedition.html
- The code is in function personexpedition() which calls -GetPersonChronology() in troggle/core/views_logbooks.py +GetPersonChronology() in troggle/core/views/logbooks.py
- the connection between the two is made in the URL resolver in troggle/urls.py

To be fixed! diff --git a/urls.py b/urls.py index 79651c3..46e06b1 100644 --- a/urls.py +++ b/urls.py @@ -6,11 +6,12 @@ from django.views.generic.list import ListView 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 troggle404 -from troggle.core.views_caves import ent, prospecting_image -from troggle.core.views_statistics import pathsreport, stats -from troggle.core.views_expo import expofiles_redirect, expofilessingle, expopage, editexpopage +from troggle.core.views import surveys, logbooks, other, caves, statistics, survex +from troggle.core.views.other import troggle404, frontpage +from troggle.core.views.caves import ent, prospecting_image +from troggle.core.views.statistics import pathsreport, stats +from troggle.core.views.expo import expofiles_redirect, expofilessingle, expopage, editexpopage +from troggle.core.views.survex import survexcaveslist, survexcavesingle, svx """This sets the actualurlpatterns[] and urlpatterns[] lists which django uses to resolve urls - in both directions as these are declarative. @@ -25,7 +26,7 @@ which is vital to writing code for the webapp. So the URL dispatch is declarativ The API urls return TSV or JSON and are new in July 2020. """ -#handler404 = 'troggle.core.views_other.troggle404' # can't get this to work. but 404.html is default anyway +#handler404 = 'troggle.core.views.other.troggle404' # can't get this to work. but 404.html is default anyway # Many of these patterns do not work because troggle spent many years broken and we have # not yet restored all the functions. Some may have never been fully implemented in @@ -44,10 +45,10 @@ else: trogglepatterns = [ url(r'^expofiles/', include(expofilesurls)), - url(r'^troggle$', views_other.frontpage, name="frontpage"), # control panel. Shows recent actions. - url(r'^caves$', views_caves.caveindex, name="caveindex"), - url(r'^indxal.htm$', views_caves.caveindex, name="caveindex"), # ~420 hrefs to this url in expoweb files - url(r'^people/?$', views_logbooks.personindex, name="personindex"), + url(r'^troggle$', other.frontpage, name="frontpage"), # control panel. Shows recent actions. + url(r'^caves$', caves.caveindex, name="caveindex"), + url(r'^indxal.htm$', caves.caveindex, name="caveindex"), # ~420 hrefs to this url in expoweb files + url(r'^people/?$', logbooks.personindex, name="personindex"), url(r'^admin/doc/', include('django.contrib.admindocs.urls')), # needs docutils Python module (http://docutils.sf.net/). url(r'^admin/', admin.site.urls), @@ -58,82 +59,82 @@ trogglepatterns = [ url(r'^accounts/', include('django.contrib.auth.urls')), # from Dj3.0, see site-packages\registration\auth_urls_classes.py - url(r'^newqmnumber/?$', views_other.ajax_QM_number, ), + url(r'^newqmnumber/?$', other.ajax_QM_number, ), # url(r'^lbo_suggestions/?$', logbook_entry_suggestions), #broken, removed. -# url(r'^person/(?P\d*)/?$', views_logbooks.person), - url(r'^person/(?P[A-Z]*[a-z\-\'&;]*)[^a-zA-Z]*(?P[a-z\-\']*[^a-zA-Z]*[A-Z]*[a-z\-&;]*)/?', views_logbooks.person, name="person"), -# url(r'^person/(\w+_\w+)$', views_logbooks.person, name="person"), +# url(r'^person/(?P\d*)/?$', logbooks.person), + url(r'^person/(?P[A-Z]*[a-z\-\'&;]*)[^a-zA-Z]*(?P[a-z\-\']*[^a-zA-Z]*[A-Z]*[a-z\-&;]*)/?', logbooks.person, name="person"), +# url(r'^person/(\w+_\w+)$', logbooks.person, name="person"), # url(r'^personform/(.*)$', personForm), - url(r'^expedition/(\d+)$', views_logbooks.expedition, name="expedition"), - url(r'^api/expeditions_tsv$', views_logbooks.Expeditions_tsvListView.as_view()), - url(r'^api/expeditions_json$', views_logbooks.Expeditions_jsonListView.as_view()), - url(r'^personexpedition/(?P[A-Z]*[a-z&;]*)[^a-zA-Z]*(?P[A-Z]*[a-zA-Z&;]*)/(?P\d+)/?$', views_logbooks.personexpedition, name="personexpedition"), - url(r'^logbookentry/(?P.*)/(?P.*)/?$', views_logbooks.logbookentry,name="logbookentry"), -# url(r'^newlogbookentry/(?P.*)$', views_logbooks.newLogbookEntry, name="newLogBookEntry"), # Needed ! -# url(r'^editlogbookentry/(?P[^/]*)/(?P[^/]*)/(?P[^/]*)/$', views_logbooks.newLogbookEntry, name="editLogBookEntry"), # working ! -# url(r'^deletelogbookentry/(?P[^/]*)/(?P[^/]*)/(?P[^/]*)/$', views_logbooks.deleteLogbookEntry, name="deleteLogBookEntry"), - url(r'^newfile', views_other.newFile, name="newFile"), # oddly broken, needs investigating more + url(r'^expedition/(\d+)$', logbooks.expedition, name="expedition"), + url(r'^api/expeditions_tsv$', logbooks.Expeditions_tsvListView.as_view()), + url(r'^api/expeditions_json$', logbooks.Expeditions_jsonListView.as_view()), + url(r'^personexpedition/(?P[A-Z]*[a-z&;]*)[^a-zA-Z]*(?P[A-Z]*[a-zA-Z&;]*)/(?P\d+)/?$', logbooks.personexpedition, name="personexpedition"), + url(r'^logbookentry/(?P.*)/(?P.*)/?$', logbooks.logbookentry,name="logbookentry"), +# url(r'^newlogbookentry/(?P.*)$', logbooks.newLogbookEntry, name="newLogBookEntry"), # Needed ! +# url(r'^editlogbookentry/(?P[^/]*)/(?P[^/]*)/(?P[^/]*)/$', logbooks.newLogbookEntry, name="editLogBookEntry"), # working ! +# url(r'^deletelogbookentry/(?P[^/]*)/(?P[^/]*)/(?P[^/]*)/$', logbooks.deleteLogbookEntry, name="deleteLogBookEntry"), + url(r'^newfile', other.newFile, name="newFile"), # oddly broken, needs investigating more - url(r'^getEntrances/(?P.*)', views_caves.get_entrances, name = "get_entrances"), #works + url(r'^getEntrances/(?P.*)', caves.get_entrances, name = "get_entrances"), #works # e.g. /getEntrances/1623-161 - url(r'^getQMs/(?P.*)', views_caves.get_qms, name = "get_qms"), # no template "get_qms"? - url(r'^getPeople/(?P.*)', views_logbooks.get_people, name = "get_people"), # fails - url(r'^getLogBookEntries/(?P.*)', views_logbooks.get_logbook_entries, name = "get_logbook_entries"), #works + url(r'^getQMs/(?P.*)', caves.get_qms, name = "get_qms"), # no template "get_qms"? + url(r'^getPeople/(?P.*)', logbooks.get_people, name = "get_people"), # fails + url(r'^getLogBookEntries/(?P.*)', logbooks.get_logbook_entries, name = "get_logbook_entries"), #works - url(r'^cave/new/$', views_caves.edit_cave, name="newcave"), - url(r'^cave/(?P[^/]+)/?$', views_caves.cave, name="cave"), + url(r'^cave/new/$', caves.edit_cave, name="newcave"), + url(r'^cave/(?P[^/]+)/?$', caves.cave, name="cave"), url(r'^cave/(?P[^/]+)/?(?P[^/])$', ent), # view_caves.ent - url(r'^cave/(?P[^/]+)/edit/$', views_caves.edit_cave, name="edit_cave"), - url(r'^cave/(?P[^/]+)/(?P\d\d\d\d)-(?P\d*)(?P[ABCDX]?)?$', views_caves.qm, name="qm"), + url(r'^cave/(?P[^/]+)/edit/$', caves.edit_cave, name="edit_cave"), + url(r'^cave/(?P[^/]+)/(?P\d\d\d\d)-(?P\d*)(?P[ABCDX]?)?$', caves.qm, name="qm"), - url(r'^caveslug/([^/]+)/?$', views_caves.caveSlug, name="caveSlug"), - url(r'^cave/entrance/([^/]+)/?$', views_caves.caveEntrance), - url(r'^cave/description/([^/]+)/?$', views_caves.caveDescription), - url(r'^cave/qms/([^/]+)/?$', views_caves.caveQMs), # blank page - url(r'^cave/logbook/([^/]+)/?$', views_caves.caveLogbook), - url(r'^cave/3d/(?P[^/]+).3d$', views_caves.cave3d, name="cave3d"), + url(r'^caveslug/([^/]+)/?$', caves.caveSlug, name="caveSlug"), + url(r'^cave/entrance/([^/]+)/?$', caves.caveEntrance), + url(r'^cave/description/([^/]+)/?$', caves.caveDescription), + url(r'^cave/qms/([^/]+)/?$', caves.caveQMs), # blank page + url(r'^cave/logbook/([^/]+)/?$', caves.caveLogbook), + url(r'^cave/3d/(?P[^/]+).3d$', caves.cave3d, name="cave3d"), - url(r'^entrance/(?P[^/]+)/(?P[^/]+)/edit/', views_caves.editEntrance, name = "editentrance"), - url(r'^entrance/new/(?P[^/]+)/', views_caves.editEntrance, name = "newentrance"), + url(r'^entrance/(?P[^/]+)/(?P[^/]+)/edit/', caves.editEntrance, name = "editentrance"), + url(r'^entrance/new/(?P[^/]+)/', caves.editEntrance, name = "newentrance"), - url(r'^prospecting_guide/$', views_caves.prospecting), - url(r'^logbooksearch/(.*)/?$', views_logbooks.logbookSearch), + url(r'^prospecting_guide/$', caves.prospecting), + url(r'^logbooksearch/(.*)/?$', logbooks.logbookSearch), - url(r'^statistics/?$', views_statistics.stats, name="stats"), - url(r'^stats/?$', views_statistics.stats, name="stats"), - url(r'^pathsreport.*$', views_statistics.pathsreport, name="pathsreport"), + url(r'^statistics/?$', statistics.stats, name="stats"), + url(r'^stats/?$', statistics.stats, name="stats"), + url(r'^pathsreport.*$', statistics.pathsreport, name="pathsreport"), - url(r'^controlpanel/?$', views_other.controlPanel, name="controlpanel"), - url(r'^logbook(?P\d\d\d\d)\.(?P.*)/?$',views_other.downloadLogbook), - url(r'^logbook/?$',views_other.downloadLogbook, name="downloadlogbook"), - url(r'^cave/(?P[^/]+)/qm\.csv/?$', views_other.downloadQMs, name="downloadqms"), - url(r'^downloadqms$', views_other.downloadQMs), + url(r'^controlpanel/?$', other.controlPanel, name="controlpanel"), + url(r'^logbook(?P\d\d\d\d)\.(?P.*)/?$', other.downloadLogbook), + url(r'^logbook/?$', other.downloadLogbook, name="downloadlogbook"), + url(r'^cave/(?P[^/]+)/qm\.csv/?$', other.downloadQMs, name="downloadqms"), + url(r'^downloadqms$', other.downloadQMs), # url(r'^map/', .........), # Intercepted by Apache. Yields OpenStreetMap. Redirects to expoweb/map - url(r'^survexfile/(?P.*?)\.svx$', views_survex.svx, name="svx"), - url(r'^survexfile/(?P.*?)\.3d$', views_survex.threed, name="threed"), - url(r'^survexfile/(?P.*?)\.log$', views_survex.svxraw), - url(r'^survexfile/(?P.*?)\.err$', views_survex.err), + url(r'^survexfile/(?P.*?)\.svx$', survex.svx, name="svx"), + url(r'^survexfile/(?P.*?)\.3d$', survex.threed, name="threed"), + url(r'^survexfile/(?P.*?)\.log$', survex.svxraw), + url(r'^survexfile/(?P.*?)\.err$', survex.err), - url(r'^survexfile/caves/$', views_survex.survexcaveslist, name="survexcaveslist"), - url(r'^survexfile/(?P.*)$', views_survex.survexcavesingle, name="survexcavessingle"), + url(r'^survexfile/caves/$', survex.survexcaveslist, name="survexcaveslist"), + url(r'^survexfile/(?P.*)$', survex.survexcavesingle, name="survexcavessingle"), - url(r'^survey_scans/$', view_surveys.surveyscansfolders, name="surveyscansfolders"), - url(r'^survey_scans/(?P[^/]+)/$', view_surveys.surveyscansfolder, name="surveyscansfolder"), + url(r'^survey_scans/$', surveys.surveyscansfolders, name="surveyscansfolders"), + url(r'^survey_scans/(?P[^/]+)/$', surveys.surveyscansfolder, name="surveyscansfolder"), url(r'^survey_scans/(?P[^/]+)/(?P[^/]+)$', - view_surveys.surveyscansingle, name="surveyscansingle"), + surveys.surveyscansingle, name="surveyscansingle"), - url(r'^tunneldata/$', view_surveys.tunneldata, name="tunneldata"), - url(r'^tunneldataraw/(?P.+?\.xml)$', view_surveys.tunnelfilesingle, name="tunnelfile"), -# url(r'^tunneldatainfo/(?P.+?\.xml)$', view_surveys.tunnelfileinfo, name="tunnelfileinfo"), - url(r'^tunneldataraw/(?P.+?\.xml)/upload$', view_surveys.tunnelfileupload, name="tunnelfileupload"), + url(r'^tunneldata/$', surveys.tunneldata, name="tunneldata"), + url(r'^tunneldataraw/(?P.+?\.xml)$', surveys.tunnelfilesingle, name="tunnelfile"), +# url(r'^tunneldatainfo/(?P.+?\.xml)$', surveys.tunnelfileinfo, name="tunnelfileinfo"), + url(r'^tunneldataraw/(?P.+?\.xml)/upload$', surveys.tunnelfileupload, name="tunnelfileupload"), url(r'^prospecting/(?P[^.]+).png$', prospecting_image, name="prospecting_image"), -# url(r'^javascript/(?P.*)$', view_surveys.expofilessingle, name="single"), # JSLIB_URL - Apache: Alias /javascript /usr/share/javascript +# url(r'^javascript/(?P.*)$', surveys.expofilessingle, name="single"), # JSLIB_URL - Apache: Alias /javascript /usr/share/javascript # static views not working, removed as a plugin. Use apache instead to serve these: # url(r'^photos/(?P.*)$', staticviews.serve, @@ -141,10 +142,10 @@ trogglepatterns = [ # url(r'^gallery/(?P.*)$', staticviews.serve, # {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}), -# url(r'^site_media/(?P.*)$', view_surveys.expofilessingle, name="single"), # MEDIA_ROOT: CSS and JS +# url(r'^site_media/(?P.*)$', surveys.expofilessingle, name="single"), # MEDIA_ROOT: CSS and JS url(r'^(site_media/.*)$', expopage, name="expopage"), # MEDIA_ROOT: CSS and JS -# url(r'^static/(?P.*)$', view_surveys.expofilessingle, name="single"), # MEDIA_ROOT: CSS and JS +# url(r'^static/(?P.*)$', surveys.expofilessingle, name="single"), # MEDIA_ROOT: CSS and JS url(r'^(static/.*)$', expopage, name="expopage"), # STATIC: CSS and JS url(r'^(.*)_edit$', editexpopage, name="editexpopage"),