From 55dd5772758115998c2cc42fdbbf1a8c5b3ef9d0 Mon Sep 17 00:00:00 2001
From: Philip Sargent <philip.sargent@klebos.com>
Date: Wed, 17 Jun 2020 22:55:51 +0100
Subject: [PATCH] New url dispatcher OK 1.9.13

---
 core/views_survex.py |  4 ++-
 databaseReset.py     | 47 +++++++++++++++++++--------------
 settings.py          |  6 +----
 urls.py              | 63 +++++++++++++++++++++++---------------------
 4 files changed, 64 insertions(+), 56 deletions(-)

diff --git a/core/views_survex.py b/core/views_survex.py
index 6bf65bf..eff6315 100644
--- a/core/views_survex.py
+++ b/core/views_survex.py
@@ -6,7 +6,9 @@ import difflib
 from django import forms
 from django.http import HttpResponseRedirect, HttpResponse
 from django.shortcuts import render_to_response, render
-from django.core.context_processors import csrf
+#from django.core.context_processors import csrf
+from django.template.context_processors import csrf
+
 from django.http import HttpResponse, Http404
 
 import troggle.settings as settings
diff --git a/databaseReset.py b/databaseReset.py
index 02b0733..7d65972 100644
--- a/databaseReset.py
+++ b/databaseReset.py
@@ -8,25 +8,34 @@ import settings
 os.environ['PYTHONPATH'] = settings.PYTHON_PATH
 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
 
-import django
-from django.core import management
-from django.db import connection, close_old_connections, connections
-from django.contrib.auth.models import User
-from django.http import HttpResponse
-from django.core.urlresolvers import reverse
-
 print(" - settings on loading databaseReset.py")
 
-from troggle.core.models_caves import Cave, Entrance
+
+import django
+print(" - django.setup - next")
+try:
+    django.setup()
+except:
+    print(" ! Cyclic reference failure. Can occur when the initial db is empty. Fixed now (in UploadFileForm) but easy to reintroduce..")
+    raise
+print(" - django.setup - done")
+
 import troggle.flatpages.models
-import troggle.logbooksdump
-
-from troggle.parsers.imports import import_caves, import_people, import_surveyscans, \
-        import_logbooks, import_QMs, import_survex, import_tunnelfiles
-
 import troggle.core.models
 import troggle.core.models_survex
 
+from django.core import management
+from django.db import connection, close_old_connections, connections
+from django.http import HttpResponse
+from django.core.urlresolvers import reverse
+from django.contrib.auth.models import User
+
+from troggle.core.models_caves import Cave, Entrance
+from troggle.parsers.imports import import_caves, import_people, import_surveyscans, \
+        import_logbooks, import_QMs, import_survex, import_tunnelfiles
+import troggle.logbooksdump
+
+
 # NOTE databaseReset.py is *imported* by views_other.py as it is used in the control panel
 # presented there.
 
@@ -80,7 +89,12 @@ def reinit_db():
      #Sync user - needed after reload
     print(" - Migrating: " + django.db.connections.databases['default']['NAME'])
 
+    management.call_command('makemigrations','core', interactive=False)
+    management.call_command('makemigrations','flatpages', interactive=False)
     management.call_command('migrate', interactive=False)
+    management.call_command('migrate','core', interactive=False)
+    management.call_command('migrate','flatpages', interactive=False)
+    
     print(" - done migration on: " + settings.DATABASES['default']['NAME'])
     print("users in db already: ",len(User.objects.all()))
     try:
@@ -467,13 +481,6 @@ if __name__ == "__main__":
 
     store_dbsettings()
     #set_in_memory_dbsettings()
-    print(" - django.setup - next")
-    try:
-        django.setup()
-    except:
-        print(" ! Cyclic reference failure. Can occur when the initial db is empty. Fixed now (in UploadFileForm) but easy to reintroduce..")
-        raise
-    print(" - django.setup - done")
     
     #set_in_memory_dbsettings() # seems to be ignored. Appears to be set but in reality.
     #jq.run_now_django_tests(1) # actually does set db to :memory: - but invisibly !
diff --git a/settings.py b/settings.py
index c2fbc1f..acf2f28 100644
--- a/settings.py
+++ b/settings.py
@@ -98,7 +98,6 @@ SECRET_KEY = 'a#vaeozn0)uz_9t_%v5n#tj)m+%ace6b_0(^fj!355qki*v)j2'
 LOGIN_REDIRECT_URL = '/'
 
 INSTALLED_APPS = (
-#    'django.auth',
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
@@ -109,8 +108,7 @@ INSTALLED_APPS = (
     'troggle.profiles',
     'troggle.core',
     'troggle.flatpages',
-    )
-
+)
 
 MIDDLEWARE_CLASSES = (
     'django.middleware.common.CommonMiddleware',
@@ -148,6 +146,4 @@ TEST_RUNNER = 'django.test.runner.DiscoverRunner'
 from localsettings import *
 
 #localsettings needs to take precedence. Call it to override any existing vars.
-#print("INSTALLED_APPS ",INSTALLED_APPS)
-
 print("++ finished importing troggle/settings.py")
diff --git a/urls.py b/urls.py
index eb3e8ae..83b772b 100644
--- a/urls.py
+++ b/urls.py
@@ -3,6 +3,7 @@ from django.conf.urls import *
 from django.views.generic.edit import UpdateView
 from django.views.generic.list import ListView
 from django.contrib import admin
+from django.contrib.staticfiles import views as staticviews
 
 from .core.views import *  # flat import
 from .core.views_other import *
@@ -10,6 +11,7 @@ from .core.views_caves import *
 from .core.views_survex import *
 from .core.models import *
 from troggle.core.views_statistics import pathsreport, stats
+from flatpages import views as flatviews
 
 admin.autodiscover()
 
@@ -20,7 +22,7 @@ admin.autodiscover()
 #   <reference to python function in 'core' folder>,
 #    <name optional argument for URL reversing (doesn't do much)>)
 
-actualurlpatterns = patterns('',
+actualurlpatterns = [
     
     url(r'^troggle$',    views_other.frontpage,      name="frontpage"),
     url(r'^caves$',      views_caves.caveindex,      name="caveindex"),
@@ -65,7 +67,7 @@ actualurlpatterns = patterns('',
     #url(r'^cavedescription/(?P<cavedescription_name>[^/]+)/?$', views_caves.cave_description, name="cavedescription"),
     #url(r'^cavedescription/?$', object_list, {'queryset':CaveDescription.objects.all(),'template_name':'object_list.html'}, name="cavedescriptions"),
     #url(r'^cavehref/(.+)$',     views_caves.cave,       name="cave"),url(r'cave'),
-    #(r'^cavesearch', caveSearch),
+    #url(r'^cavesearch', caveSearch),
     
     url(r'^prospecting_guide/$', views_caves.prospecting),    
 
@@ -78,32 +80,16 @@ actualurlpatterns = patterns('',
     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"),        
-    (r'^downloadqms$', views_other.downloadQMs),
+    url(r'^downloadqms$', views_other.downloadQMs),
 
-    (r'^admin/doc/?', include('django.contrib.admindocs.urls')), # needs docutils Python module (http://docutils.sf.net/).
     #url(r'^admin/(.*)', admin.site.get_urls, name="admin"),
-    (r'^admin/', include(admin.site.urls)),
-
-    # don't know why this needs troggle/ in here.  nice to get it out
-    url(r'^troggle/media-admin/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ADMIN_DIR, 'show_indexes':True}),
-
-    (r'^accounts/', include('registration.backends.default.urls')),
-    (r'^profiles/', include('profiles.urls')),
+    url(r'^admin/doc/?', include('django.contrib.admindocs.urls')), # needs docutils Python module (http://docutils.sf.net/).
+    url(r'^admin/', include(admin.site.urls)),
+    url(r'^accounts/', include('registration.backends.default.urls')),
+    url(r'^profiles/', include('profiles.urls')),
 
 #   (r'^personform/(.*)$', personForm),
 
-    (r'^expofiles/(?P<path>.*)$', 'django.views.static.serve',
-        {'document_root': settings.EXPOFILES, 'show_indexes': True}),
-    (r'^static/(?P<path>.*)$', 'django.views.static.serve',
-        {'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
-    (r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
-        {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
-    #(r'^tinymce_media/(?P<path>.*)$', 'django.views.static.serve',
-    #    {'document_root': settings.TINY_MCE_MEDIA_ROOT, 'show_indexes': True}),
-    #(r'^photos/(?P<path>.*)$', 'django.views.static.serve',
-    #    {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}),
-#    (r'^gallery/(?P<path>.*)$', 'django.views.static.serve',
-#        {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}),
 
     url(r'^survexblock/(.+)$',                     views_caves.survexblock, name="survexblock"),
     url(r'^survexfile/(?P<survex_file>.*?)\.svx$', views_survex.svx,        name="svx"),
@@ -115,7 +101,7 @@ actualurlpatterns = patterns('',
     url(r'^survexfile/(?P<survex_cave>.*)$',          views_survex.survexcavesingle, name="survexcavessingle"),
     url(r'^survexfileraw/(?P<survex_file>.*?)\.svx$', views_survex.svxraw,           name="svxraw"),
 
-    (r'^survey_files/download/(?P<path>.*)$',      view_surveys.download),
+    url(r'^survey_files/download/(?P<path>.*)$',      view_surveys.download),
 
     #(r'^survey_scans/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.SURVEY_SCANS, 'show_indexes':True}),
     url(r'^survey_scans/$',                        view_surveys.surveyscansfolders, name="surveyscansfolders"), 
@@ -132,11 +118,28 @@ actualurlpatterns = patterns('',
 
     url(r'^prospecting/(?P<name>[^.]+).png$', prospecting_image, name="prospecting_image"),
     
-    url(r'^(.*)_edit$', 'flatpages.views.editflatpage', name="editflatpage"),
-    url(r'^(.*)$', 'flatpages.views.flatpage', name="flatpage"),
-)
+    url(r'^expofiles/(?P<path>.*)$', staticviews.serve,
+            {'document_root': settings.EXPOFILES, 'show_indexes': True}),
+    url(r'^static/(?P<path>.*)$', staticviews.serve,
+            {'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
+    url(r'^site_media/(?P<path>.*)$', staticviews.serve,
+            {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
+    #url(r'^tinymce_media/(?P<path>.*)$', staticviews.serve,
+    #        {'document_root': settings.TINY_MCE_MEDIA_ROOT, 'show_indexes': True}),
+    #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}),
+#   don't know why this needs troggle/ in here.  nice to get it out
+    url(r'^troggle/media-admin/(?P<path>.*)$', staticviews.serve, 
+            {'document_root': settings.MEDIA_ADMIN_DIR, 'show_indexes':True}),
+
+    url(r'^(.*)_edit$', flatviews.editflatpage, name="editflatpage"),
+    url(r'^(.*)$', flatviews.flatpage, name="flatpage"),
+
+]
 
 #Allow prefix to all urls
-urlpatterns = patterns ('',
-    ('^%s' % settings.DIR_ROOT, include(actualurlpatterns))
-)
+urlpatterns = [
+    url('^%s' % settings.DIR_ROOT, include(actualurlpatterns))
+]