forked from expo/troggle
179 lines
10 KiB
Python
179 lines
10 KiB
Python
from django.conf import settings
|
|
from django.conf.urls import url, include
|
|
from django.views.generic.base import RedirectView
|
|
from django.views.generic.edit import UpdateView
|
|
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 flatpages import views as flatviews
|
|
"""This sets the actualurlpatterns[] and urlpatterns[] lists which django uses
|
|
to resolve urls - in both directions as these are declarative.
|
|
|
|
HOW THIS WORKS
|
|
This is a "url dispatcher" - something needed by every web framework.
|
|
url( <regular expression that matches the thing in the web browser>,
|
|
<reference to python function in 'core' folder>, <optional name>)
|
|
|
|
Django also provides the reverse function: given an an object, provide the URL
|
|
which is vital to writing code for the webapp. So the URL dispatch is declarative.
|
|
|
|
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
|
|
|
|
# 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
|
|
# the first place and what they were intended to provide is obscure.
|
|
|
|
if settings.EXPOFILESREMOTE:
|
|
expofilesurls = [
|
|
url(r'^/*(?P<path>.*)$', flatviews.expofiles_redirect, name="expofiles_redirect"), # to expo.survex.com/expofiles
|
|
]
|
|
else:
|
|
expofilesurls = [
|
|
url(r'^/*(?P<filepath>.*)$',flatviews.expofilessingle, name="single"), # local copy of EXPOFILES
|
|
]
|
|
|
|
|
|
actualurlpatterns = [
|
|
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'^admin/doc/', include('django.contrib.admindocs.urls')), # needs docutils Python module (http://docutils.sf.net/).
|
|
url(r'^admin/', admin.site.urls),
|
|
|
|
# setting LOGIN_URL = '/accounts/login/' is default
|
|
#url(r'^accounts/', include('registration.backends.default.urls')), # deprecated, replace with .model_activation.urls
|
|
url(r'^accounts/', include('registration.backends.model_activation.urls')), # deprecated in Dj3.0, but must not be commented out.
|
|
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'^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"),
|
|
# 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<first_name>[A-Z]*[a-z&;]*)[^a-zA-Z]*(?P<last_name>[A-Z]*[a-zA-Z&;]*)/(?P<year>\d+)/?$', views_logbooks.personexpedition, name="personexpedition"),
|
|
url(r'^logbookentry/(?P<date>.*)/(?P<slug>.*)/?$', views_logbooks.logbookentry,name="logbookentry"),
|
|
# url(r'^newlogbookentry/(?P<expeditionyear>.*)$', views_logbooks.newLogbookEntry, name="newLogBookEntry"), # Needed !
|
|
# url(r'^editlogbookentry/(?P<expeditionyear>[^/]*)/(?P<pdate>[^/]*)/(?P<pslug>[^/]*)/$', views_logbooks.newLogbookEntry, name="editLogBookEntry"), # working !
|
|
# url(r'^deletelogbookentry/(?P<expeditionyear>[^/]*)/(?P<date>[^/]*)/(?P<slug>[^/]*)/$', views_logbooks.deleteLogbookEntry, name="deleteLogBookEntry"),
|
|
url(r'^newfile', views_other.newFile, name="newFile"), # oddly broken, needs investigating more
|
|
|
|
url(r'^getEntrances/(?P<caveslug>.*)', views_caves.get_entrances, name = "get_entrances"), #works
|
|
# e.g. /getEntrances/1623-161
|
|
url(r'^getQMs/(?P<caveslug>.*)', views_caves.get_qms, name = "get_qms"), # no template "get_qms"?
|
|
url(r'^getPeople/(?P<expeditionslug>.*)', views_logbooks.get_people, name = "get_people"), # fails
|
|
url(r'^getLogBookEntries/(?P<expeditionslug>.*)', views_logbooks.get_logbook_entries, name = "get_logbook_entries"), #works
|
|
|
|
url(r'^cave/new/$', views_caves.edit_cave, name="newcave"),
|
|
url(r'^cave/(?P<cave_id>[^/]+)/?$', views_caves.cave, name="cave"),
|
|
url(r'^cave/(?P<cave_id>[^/]+)/?(?P<ent_letter>[^/])$', ent), # how can this work?
|
|
url(r'^cave/(?P<slug>[^/]+)/edit/$', views_caves.edit_cave, name="edit_cave"),
|
|
url(r'^cave/(?P<cave_id>[^/]+)/(?P<year>\d\d\d\d)-(?P<qm_id>\d*)(?P<grade>[ABCDX]?)?$', views_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<cave_id>[^/]+).3d$', views_caves.cave3d, name="cave3d"),
|
|
|
|
url(r'^entrance/(?P<caveslug>[^/]+)/(?P<slug>[^/]+)/edit/', views_caves.editEntrance, name = "editentrance"),
|
|
url(r'^entrance/new/(?P<caveslug>[^/]+)/', views_caves.editEntrance, name = "newentrance"),
|
|
|
|
url(r'^prospecting_guide/$', views_caves.prospecting),
|
|
url(r'^logbooksearch/(.*)/?$', views_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'^controlpanel/?$', views_other.controlPanel, name="controlpanel"),
|
|
url(r'^logbook(?P<year>\d\d\d\d)\.(?P<extension>.*)/?$',views_other.downloadLogbook),
|
|
url(r'^logbook/?$',views_other.downloadLogbook, name="downloadlogbook"),
|
|
url(r'^cave/(?P<cave_id>[^/]+)/qm\.csv/?$', views_other.downloadQMs, name="downloadqms"),
|
|
url(r'^downloadqms$', views_other.downloadQMs),
|
|
|
|
# url(r'^map/', .........), # Intercepted by Apache. Yields OpenStreetMap. Redirects to expoweb/map
|
|
|
|
url(r'^survexfile/(?P<survex_file>.*?)\.svx$', views_survex.svx, name="svx"),
|
|
url(r'^survexfile/(?P<survex_file>.*?)\.3d$', views_survex.threed, name="threed"),
|
|
url(r'^survexfile/(?P<survex_file>.*?)\.log$', views_survex.svxraw),
|
|
url(r'^survexfile/(?P<survex_file>.*?)\.err$', views_survex.err),
|
|
|
|
url(r'^survexfile/caves/$', views_survex.survexcaveslist, name="survexcaveslist"),
|
|
url(r'^survexfile/(?P<survex_cave>.*)$', views_survex.survexcavesingle, name="survexcavessingle"),
|
|
|
|
url(r'^survey_scans/$', view_surveys.surveyscansfolders, name="surveyscansfolders"),
|
|
url(r'^survey_scans/(?P<path>[^/]+)/$', view_surveys.surveyscansfolder, name="surveyscansfolder"),
|
|
url(r'^survey_scans/(?P<path>[^/]+)/(?P<file>[^/]+)$',
|
|
view_surveys.surveyscansingle, name="surveyscansingle"),
|
|
|
|
url(r'^tunneldata/$', view_surveys.tunneldata, name="tunneldata"),
|
|
url(r'^tunneldataraw/(?P<path>.+?\.xml)$', view_surveys.tunnelfilesingle, name="tunnelfile"),
|
|
# url(r'^tunneldatainfo/(?P<path>.+?\.xml)$', view_surveys.tunnelfileinfo, name="tunnelfileinfo"),
|
|
url(r'^tunneldataraw/(?P<path>.+?\.xml)/upload$', view_surveys.tunnelfileupload, name="tunnelfileupload"),
|
|
|
|
url(r'^prospecting/(?P<name>[^.]+).png$', prospecting_image, name="prospecting_image"),
|
|
|
|
|
|
# url(r'^javascript/(?P<filepath>.*)$', view_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<path>.*)$', staticviews.serve,
|
|
# {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}),
|
|
# url(r'^gallery/(?P<path>.*)$', staticviews.serve,
|
|
# {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}),
|
|
|
|
# url(r'^site_media/(?P<filepath>.*)$', view_surveys.expofilessingle, name="single"), # MEDIA_ROOT: CSS and JS
|
|
url(r'^(site_media/.*)$', flatviews.flatpage, name="flatpage"), # MEDIA_ROOT: CSS and JS
|
|
|
|
# url(r'^static/(?P<filepath>.*)$', view_surveys.expofilessingle, name="single"), # MEDIA_ROOT: CSS and JS
|
|
url(r'^(static/.*)$', flatviews.flatpage, name="flatpage"), # STATIC: CSS and JS
|
|
|
|
url(r'^(.*)_edit$', flatviews.editflatpage, name="editflatpage"),
|
|
url(r'^(.*)$', flatviews.flatpage, name="flatpage"), # CATCHALL assumed relative to EXPOWEB, some expofiles getting here..
|
|
]
|
|
|
|
#Allow DIR_ROOT prefix to all urls
|
|
urlpatterns = [
|
|
url('^%s' % settings.DIR_ROOT, include(actualurlpatterns))
|
|
]
|
|
|
|
# When apache is running these prempt Django so Django never sees them.
|
|
|
|
# NEW apache configurations suggested as of 20 March 2021:
|
|
# Alias /site-media/ /home/expo/troggle/media/
|
|
# Alias /robots.txt /home/expo/troggle/media/robots.txt
|
|
# Alias /favicon.ico /home/expo/troggle/media/favicon.ico # comes from /expoweb/* when running runserver
|
|
# Alias /javascript /home/expo/troggle/media/javascript
|
|
|
|
# Copy of old standard apache configurations:
|
|
# Alias /expofiles /home/expo/expofiles
|
|
# Alias /photos /home/expo/webphotos
|
|
# Alias /map /home/expo/expoweb/map
|
|
# Alias /javascript /usr/share/javascript # to be changed
|
|
# Alias /robots.txt /home/expo/static/robots.txt # to be changed
|
|
# Alias /favicon.ico /home/expo/static/favicon.ico # to be changed
|
|
# Alias /static/ /home/expo/static/
|
|
|
|
# ScriptAlias /repositories /home/expo/config/apache/services/hgweb/hgweb.cgi
|
|
# ScriptAlias /boe /home/expo/boe/boc/boc.pl
|
|
# ScriptAlias /boe-lastyear /home/expo/boe/boc-previous/boc.pl
|