2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2024-11-29 13:21:54 +00:00
troggle/urls.py

177 lines
10 KiB
Python
Raw Normal View History

2011-07-11 01:49:03 +01:00
from django.conf import settings
from django.conf.urls import url, include
from django.views.generic.base import RedirectView
2020-05-28 01:38:35 +01:00
from django.views.generic.edit import UpdateView
from django.views.generic.list import ListView
from django.contrib import admin
2020-06-18 21:50:16 +01:00
from django.urls import reverse, resolve
2021-03-31 21:51:17 +01:00
from troggle.core.views import surveys, logbooks, other, caves, statistics, survex
from troggle.core.views.other import troggle404, frontpage
2021-04-01 20:08:57 +01:00
from troggle.core.views.caves import ent, prospecting_image, cavepage
2021-03-31 21:51:17 +01:00
from troggle.core.views.statistics import pathsreport, stats
from troggle.core.views.expo import expofiles_redirect, expofilessingle, expopage, editexpopage, mediapage
2021-03-31 21:51:17 +01:00
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.
2020-05-28 01:38:35 +01:00
2020-07-18 16:23:54 +01:00
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>)
2011-07-11 01:49:03 +01:00
2020-07-18 16:23:54 +01:00
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.
2020-07-18 16:23:54 +01:00
"""
2021-03-31 21:51:17 +01:00
#handler404 = 'troggle.core.views.other.troggle404' # can't get this to work. but 404.html is default anyway
2020-07-18 16:23:54 +01:00
# 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.
2021-03-26 13:51:00 +00:00
if settings.EXPOFILESREMOTE:
expofilesurls = [
2021-04-02 19:22:53 +01:00
url(r'^(?P<path>.*)$', expofiles_redirect, name="expofiles_redirect"), # to http://expo.survex.com/expofiles
2021-03-26 13:51:00 +00:00
]
else:
expofilesurls = [
2021-03-31 16:14:36 +01:00
url(r'^(?P<filepath>.*)$', expofilessingle, name="single"), # local copy of EXPOFILES
2021-03-26 13:51:00 +00:00
]
2021-03-31 23:41:46 +01:00
2021-03-31 16:14:36 +01:00
trogglepatterns = [
url(r'^expofiles/', include(expofilesurls)),
2021-03-26 13:51:00 +00:00
2021-03-31 21:51:17 +01:00
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"),
2011-07-11 01:49:03 +01:00
2021-03-26 13:51:00 +00:00
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
2021-03-26 13:51:00 +00:00
2021-03-31 21:51:17 +01:00
url(r'^newqmnumber/?$', other.ajax_QM_number, ),
2020-08-02 23:53:35 +01:00
# url(r'^lbo_suggestions/?$', logbook_entry_suggestions), #broken, removed.
2021-03-31 21:51:17 +01:00
# url(r'^person/(?P<person_id>\d*)/?$', 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\-&;]*)/?', logbooks.person, name="person"),
# url(r'^person/(\w+_\w+)$', logbooks.person, name="person"),
2020-06-18 15:54:40 +01:00
# url(r'^personform/(.*)$', personForm),
2021-03-31 21:51:17 +01:00
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<first_name>[A-Z]*[a-z&;]*)[^a-zA-Z]*(?P<last_name>[A-Z]*[a-zA-Z&;]*)/(?P<year>\d+)/?$', logbooks.personexpedition, name="personexpedition"),
url(r'^logbookentry/(?P<date>.*)/(?P<slug>.*)/?$', logbooks.logbookentry,name="logbookentry"),
# url(r'^newlogbookentry/(?P<expeditionyear>.*)$', logbooks.newLogbookEntry, name="newLogBookEntry"), # Needed !
# url(r'^editlogbookentry/(?P<expeditionyear>[^/]*)/(?P<pdate>[^/]*)/(?P<pslug>[^/]*)/$', logbooks.newLogbookEntry, name="editLogBookEntry"), # working !
# url(r'^deletelogbookentry/(?P<expeditionyear>[^/]*)/(?P<date>[^/]*)/(?P<slug>[^/]*)/$', logbooks.deleteLogbookEntry, name="deleteLogBookEntry"),
url(r'^newfile', other.newFile, name="newFile"), # oddly broken, needs investigating more
url(r'^getEntrances/(?P<caveslug>.*)', caves.get_entrances, name = "get_entrances"), #works
2020-06-18 15:54:40 +01:00
# e.g. /getEntrances/1623-161
2021-03-31 21:51:17 +01:00
url(r'^getQMs/(?P<caveslug>.*)', caves.get_qms, name = "get_qms"), # no template "get_qms"?
url(r'^getPeople/(?P<expeditionslug>.*)', logbooks.get_people, name = "get_people"), # fails
url(r'^getLogBookEntries/(?P<expeditionslug>.*)', logbooks.get_logbook_entries, name = "get_logbook_entries"), #works
2011-07-11 01:49:03 +01:00
2021-03-31 21:51:17 +01:00
url(r'^cave/new/$', caves.edit_cave, name="newcave"),
url(r'^cave/3d/(?P<cave_id>[^/]+)$', caves.cave3d, name="cave3d"),
2021-03-31 21:51:17 +01:00
url(r'^cave/(?P<cave_id>[^/]+)/?$', caves.cave, name="cave"),
url(r'^cave/(?P<cave_id>[^/]+)/?(?P<ent_letter>[^/])$', ent), # view_caves.ent
2021-03-31 21:51:17 +01:00
url(r'^cave/(?P<slug>[^/]+)/edit/$', 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]?)?$', caves.qm, name="qm"),
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'^entrance/(?P<caveslug>[^/]+)/(?P<slug>[^/]+)/edit/', caves.editEntrance, name = "editentrance"),
url(r'^entrance/new/(?P<caveslug>[^/]+)/', caves.editEntrance, name = "newentrance"),
2011-07-11 01:49:03 +01:00
2021-03-31 21:51:17 +01:00
url(r'^logbooksearch/(.*)/?$', logbooks.logbookSearch),
2011-07-11 01:49:03 +01:00
2021-03-31 21:51:17 +01:00
url(r'^statistics/?$', statistics.stats, name="stats"),
url(r'^stats/?$', statistics.stats, name="stats"),
url(r'^pathsreport.*$', statistics.pathsreport, name="pathsreport"),
2021-03-31 21:51:17 +01:00
url(r'^controlpanel/?$', other.controlPanel, name="controlpanel"),
url(r'^logbook(?P<year>\d\d\d\d)\.(?P<extension>.*)/?$', other.downloadLogbook),
url(r'^logbook/?$', other.downloadLogbook, name="downloadlogbook"),
url(r'^cave/(?P<cave_id>[^/]+)/qm\.csv/?$', other.downloadQMs, name="downloadqms"),
url(r'^downloadqms$', other.downloadQMs),
2011-07-11 01:49:03 +01:00
2020-08-02 23:53:35 +01:00
# url(r'^map/', .........), # Intercepted by Apache. Yields OpenStreetMap. Redirects to expoweb/map
2021-04-02 19:22:53 +01:00
url(r'^prospecting_guide/$', caves.prospecting),
url(r'^prospecting/(?P<name>[^.]+).png$', prospecting_image, name="prospecting_image"),
# The survexfile pages
2021-03-31 21:51:17 +01:00
url(r'^survexfile/(?P<survex_file>.*?)\.svx$', survex.svx, name="svx"),
url(r'^survexfile/(?P<survex_file>.*?)\.3d$', survex.threed, name="threed"),
url(r'^survexfile/(?P<survex_file>.*?)\.log$', survex.svxraw),
url(r'^survexfile/(?P<survex_file>.*?)\.err$', survex.err),
2021-04-02 19:22:53 +01:00
url(r'^survexfile/caves/$', survex.survexcaveslist, name="survexcaveslist"),
url(r'^survexfile/(?P<survex_cave>.*)$', survex.survexcavesingle, name="survexcavessingle"),
2021-03-31 21:51:17 +01:00
url(r'^survey_scans/$', surveys.surveyscansfolders, name="surveyscansfolders"),
url(r'^survey_scans/(?P<path>[^/]+)/$', surveys.surveyscansfolder, name="surveyscansfolder"),
2020-06-18 21:50:16 +01:00
url(r'^survey_scans/(?P<path>[^/]+)/(?P<file>[^/]+)$',
2021-03-31 21:51:17 +01:00
surveys.surveyscansingle, name="surveyscansingle"),
2021-04-02 19:22:53 +01:00
# The tunnel drawings files pages
2021-03-31 21:51:17 +01:00
url(r'^tunneldata/$', surveys.tunneldata, name="tunneldata"),
url(r'^tunneldataraw/(?P<path>.+?\.xml)$', surveys.tunnelfilesingle, name="tunnelfile"),
2021-04-02 19:22:53 +01:00
# url(r'^tunneldatainfo/(?P<path>.+?\.xml)$', surveys.tunnelfileinfo, name="tunnelfileinfo"), # parses tunnel for info
2021-03-31 21:51:17 +01:00
url(r'^tunneldataraw/(?P<path>.+?\.xml)/upload$', surveys.tunnelfileupload, name="tunnelfileupload"),
2011-07-11 01:49:03 +01:00
2021-04-02 19:22:53 +01:00
# This next set are all intercepted by Apache, if it is running.
url(r'^photos/(?P<subpath>.*)$', mediapage, {'doc_root': settings.PHOTOS_ROOT}, name="mediapage"), # photo galleries
url(r'^site_media/(?P<subpath>.*)$', mediapage, {'doc_root': settings.MEDIA_ROOT}, name="mediapage"), # MEDIA_ROOT: CSS and JS
url(r'^static/(?P<subpath>.*)$', mediapage, {'doc_root': settings.MEDIA_ROOT}, name="mediapage"), # STATIC is in MEDIA now!
2021-04-02 19:22:53 +01:00
url(r'^javascript/(?P<subpath>.*)$', mediapage, {'doc_root': settings.JSLIB_ROOT}, name="mediapage"), # JSLIB_URL
url(r'^expowebcache/3d/(?P<subpath>.*)$', mediapage, {'doc_root': settings.THREEDCACHEDIR}, name="mediapage"),
2020-06-18 21:50:16 +01:00
2021-04-02 19:22:53 +01:00
# This next is for shorthand references such as /1623/264
2021-04-01 20:08:57 +01:00
url(r'^(?P<karea>\d\d\d\d)(?P<subpath>.*)$', cavepage, name="cavepage"), # Cave description
2021-04-02 19:22:53 +01:00
# Final catchall which also serves expoweb handbook pages and images
2021-03-31 16:14:36 +01:00
url(r'^(.*)_edit$', editexpopage, name="editexpopage"),
2021-04-02 19:22:53 +01:00
url(r'^(.*)$', expopage, name="expopage"), # CATCHALL assumed relative to EXPOWEB
2020-06-17 22:55:51 +01:00
]
2011-07-11 01:49:03 +01:00
2021-03-31 16:14:36 +01:00
# do not allow DIR_ROOT prefix to all urls
2020-06-17 22:55:51 +01:00
urlpatterns = [
2021-03-31 16:14:36 +01:00
# url('^%s' % settings.DIR_ROOT, include(trogglepatterns))
url('', include(trogglepatterns))
2020-06-17 22:55:51 +01:00
]
# When apache is running these prempt Django so Django never sees them.
2021-04-02 19:22:53 +01:00
# NEW apache configurations suggested as of 2 April 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
2021-04-02 19:22:53 +01:00
# Alias /javascript /home/expo/troggle/media/jslib # empty
# 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