from django.conf import settings from django.conf.urls import url, include 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 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 """This sets the actualurlpatterns[] and urlpatterns[] lists which django uses to resolve urls - in both directions as these are declarative. It runs django autodiscover() first: https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#discovery-of-admin-files which may no longer be necessary in Django 1.11.29 HOW THIS WORKS This is a "url dispatcher" - something needed by every web framework. url( , , ) 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. """ admin.autodiscover() # 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. actualurlpatterns = [ url(r'^troggle$', views_other.frontpage, name="frontpage"), url(r'^caves$', views_caves.caveindex, name="caveindex"), url(r'^indxal.htm$', views_caves.caveindex, name="caveindex"), # ~420 hrefs to this in expoweb files 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'^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'^personform/(.*)$', personForm), url(r'^expedition/(\d+)$', views_logbooks.expedition, name="expedition"), url(r'^expeditions/?$', views_logbooks.ExpeditionListView.as_view(), name="expeditions"), 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'^getEntrances/(?P.*)', views_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'^cave/new/$', views_caves.edit_cave, name="newcave"), url(r'^cave/(?P[^/]+)/?$', views_caves.cave, name="cave"), url(r'^cave/(?P[^/]+)/?(?P[^/])$', ent), # how can this work? 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'^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'^entrance/(?P[^/]+)/(?P[^/]+)/edit/', views_caves.editEntrance, name = "editentrance"), url(r'^entrance/new/(?P[^/]+)/', 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\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'^admin/doc/', include('django.contrib.admindocs.urls')), # needs docutils Python module (http://docutils.sf.net/). url(r'^admin/', admin.site.urls), 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'^survexblock/(.+)$', views_caves.survexblock, name="survexblock"), 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/caves/$', views_survex.survexcaveslist, name="survexcaveslist"), url(r'^survexfile/(?P.*)$', views_survex.survexcavesingle, name="survexcavessingle"), url(r'^survexfileraw/(?P.*?)\.svx$', views_survex.svxraw, name="svxraw"), # url(r'^survey_files/download/(?P.*)$', view_surveys.download), # needs rewriting url(r'^survey_scans/$', view_surveys.surveyscansfolders, name="surveyscansfolders"), url(r'^survey_scans/(?P[^/]+)/$', view_surveys.surveyscansfolder, name="surveyscansfolder"), url(r'^survey_scans/(?P[^/]+)/(?P[^/]+)$', view_surveys.surveyscansingle, name="surveyscansingle"), url(r'^tunneldata/$', view_surveys.tunneldata, name="tunneldata"), url(r'^tunneldataraw/(?P.+?\.xml)$', view_surveys.tunnelfile, 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'^prospecting/(?P[^.]+).png$', prospecting_image, name="prospecting_image"), url(r'^expofiles/(?P.*)$', view_surveys.expofilessingle, name="single"), # EXPOFILES # url(r'^javascript/(?P.*)$', view_surveys.cssfilessingle, name="single"), # JSLIB_URL - unused # static views not working, removed as a plugin. Use apache instead to serve these: # url(r'^photos/(?P.*)$', staticviews.serve, # {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}), # url(r'^gallery/(?P.*)$', staticviews.serve, # {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}), # url(r'^site_media/(?P.*)$', view_surveys.cssfilessingle, name="single"), # MEDIA_ROOT: CSS and JS url(r'^(site_media/.*)$', flatviews.flatpage, name="flatpage"), # MEDIA_ROOT: CSS and JS # url(r'^static/(?P.*)$', view_surveys.cssfilessingle, 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"), # files assumed relative to EXPOWEB ] #Allow prefix to all urls urlpatterns = [ url('^%s' % settings.DIR_ROOT, include(actualurlpatterns)) ]