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. The API urls return TSV or JSON and are new in July 2020. """ 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 url 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, 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'^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'^map/', .........), # Intercepted by Apache. Yields OpenStreetMap. Redirects to expoweb/map 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)) ]