mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2024-11-21 14:51:51 +00:00
static files redone
This commit is contained in:
parent
bd6490631f
commit
d9c6986a89
31
README.txt
31
README.txt
@ -115,19 +115,19 @@ environment utility
|
|||||||
|
|
||||||
Patching the django installation
|
Patching the django installation
|
||||||
--------------------------------
|
--------------------------------
|
||||||
Since django 1.7 out of update-support, and since python3 has progressed against
|
Since django 1.10 is out of update-support, and since python3 has progressed against
|
||||||
the 2015 version that django1.7 is expecting, you need to patch the django
|
the 2015 version that django is expecting, you need to patch the django
|
||||||
installation after installing. In the troggle folder you will find
|
installation after installing. In the troggle folder you will find
|
||||||
django-patch/html_parser.py
|
django-patch/html_parser.py
|
||||||
copy this over the installed version of django on your machine:
|
copy this over the installed version of django on your machine:
|
||||||
|
|
||||||
$ cd troggle
|
$ cd troggle
|
||||||
$ sudo cp django-patch/html_parser.py /usr/local/lib/python3.8/dist-packages/django/utils/
|
$ sudo cp django-patch/html_parser.py /usr/local/lib/python3.7/dist-packages/django/utils/
|
||||||
or
|
or
|
||||||
$ cp django-patch/html_parser.py ~/.local/lib/python3.8/site-packages/django/utils/
|
$ cp django-patch/html_parser.py ~/.local/lib/python3.7/site-packages/django/utils/
|
||||||
if you didn't use sudo when installing everything using pip.
|
if you didn't use sudo when installing everything using pip.
|
||||||
|
|
||||||
or if you are using a venv, and you are using python3.7 in it, then
|
or if you are using a venv, then
|
||||||
|
|
||||||
$ cd <venv directory>/troggle
|
$ cd <venv directory>/troggle
|
||||||
$ cp django-patch/html_parser.py lib/python3.7/site-packages/django/utils/html_parser.py
|
$ cp django-patch/html_parser.py lib/python3.7/site-packages/django/utils/html_parser.py
|
||||||
@ -169,7 +169,7 @@ python manage.py check -v 3 --deploy
|
|||||||
which will give security warnings for deployment.
|
which will give security warnings for deployment.
|
||||||
|
|
||||||
python manage.py check -Wall
|
python manage.py check -Wall
|
||||||
Goives warnings of deprecated Django which should be fixed asap.
|
Gives warnings of deprecated Django which should be fixed asap.
|
||||||
|
|
||||||
Registering troggle as a django application
|
Registering troggle as a django application
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
@ -201,18 +201,13 @@ then the settings registration of troggle with django is incomplete.
|
|||||||
Delete all your cached .pyc files and try again.
|
Delete all your cached .pyc files and try again.
|
||||||
You probably have a mistake in your settings.py or localsettings.py files.
|
You probably have a mistake in your settings.py or localsettings.py files.
|
||||||
|
|
||||||
Django 1.9.13
|
CSS and media files
|
||||||
-------------
|
-------------------
|
||||||
Works fine, but creating a new,clean database does nopt happen automatically
|
Temporarily we are not using the STATICFILES capability but are instead
|
||||||
when you run databaseReset.py. Instead you have to do this:
|
serving css files from troggle/media/.. (see urls.py) using
|
||||||
|
view_surveys.cssfilessingle
|
||||||
python manage.py makemigrations core
|
i.e.
|
||||||
python manage.py makemigrations flatpages
|
cssfilessingle() in core/view_surveys.py
|
||||||
python manage.py migrate
|
|
||||||
python manage.py migrate core
|
|
||||||
python manage.py migrate flatpages
|
|
||||||
python databaseReset.py reset
|
|
||||||
|
|
||||||
|
|
||||||
Setting up survex
|
Setting up survex
|
||||||
-----------------
|
-----------------
|
||||||
|
1
categories.json
Normal file
1
categories.json
Normal file
File diff suppressed because one or more lines are too long
1
confusables.json
Normal file
1
confusables.json
Normal file
File diff suppressed because one or more lines are too long
@ -66,7 +66,7 @@ class SimpleTest(SimpleTestCase):
|
|||||||
from django.db import connection, close_old_connections, connections
|
from django.db import connection, close_old_connections, connections
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
__test__ = {"doctest": """
|
__test__ = {"doctest": """
|
||||||
Another way to test that 1 + 1 is equal to 2.
|
Another way to test that 1 + 1 is equal to 2.
|
||||||
|
@ -16,7 +16,8 @@ from django.contrib import admin
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.urlresolvers import reverse
|
|
||||||
|
from django.urls import reverse
|
||||||
from django.template import Context, loader
|
from django.template import Context, loader
|
||||||
|
|
||||||
import troggle.core.models_survex
|
import troggle.core.models_survex
|
||||||
|
@ -15,7 +15,7 @@ from django.contrib.auth.models import User
|
|||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.db.models import Min, Max
|
from django.db.models import Min, Max
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
from django.template import Context, loader
|
from django.template import Context, loader
|
||||||
|
|
||||||
from troggle.core.models import TroggleModel, Person, Expedition
|
from troggle.core.models import TroggleModel, Person, Expedition
|
||||||
|
@ -4,7 +4,7 @@ import re
|
|||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
|
@ -12,7 +12,7 @@ def fa_readFile(*path):
|
|||||||
try:
|
try:
|
||||||
f = open(os.path.join(settings.FILES, *path))
|
f = open(os.path.join(settings.FILES, *path))
|
||||||
except:
|
except:
|
||||||
f = urllib.request.urlopen(settings.FILES + "download/" + reduce(urljoin, path))
|
f = urllib.request.urlopen(settings.FILES+"download/")
|
||||||
return f.read()
|
return f.read()
|
||||||
|
|
||||||
def getMimeType(extension):
|
def getMimeType(extension):
|
||||||
@ -85,6 +85,14 @@ def surveyscansingle(request, path, file):
|
|||||||
return HttpResponse(content=open(survexscansingle.ffile,"rb"), content_type=getMimeType(path.split(".")[-1]))
|
return HttpResponse(content=open(survexscansingle.ffile,"rb"), content_type=getMimeType(path.split(".")[-1]))
|
||||||
#return render_to_response('survexscansfolder.html', { 'survexscansfolder':survexscansfolder, 'settings': settings })
|
#return render_to_response('survexscansfolder.html', { 'survexscansfolder':survexscansfolder, 'settings': settings })
|
||||||
|
|
||||||
|
def expofilessingle(request, filepath):
|
||||||
|
fn=urllib.parse.unquote(filepath)
|
||||||
|
return HttpResponse(content=open(settings.EXPOFILES+fn,"rb"))
|
||||||
|
|
||||||
|
def cssfilessingle(request, filepath):
|
||||||
|
fn=urllib.parse.unquote(filepath)
|
||||||
|
return HttpResponse(content=open(settings.MEDIA_ROOT+fn,"rb"),content_type="text/css")
|
||||||
|
|
||||||
def surveyscansfolders(request):
|
def surveyscansfolders(request):
|
||||||
survexscansfolders = SurvexScansFolder.objects.all()
|
survexscansfolders = SurvexScansFolder.objects.all()
|
||||||
return render_to_response('survexscansfolders.html', { 'survexscansfolders':survexscansfolders, 'settings': settings })
|
return render_to_response('survexscansfolders.html', { 'survexscansfolders':survexscansfolders, 'settings': settings })
|
||||||
|
@ -9,7 +9,7 @@ from PIL import Image, ImageDraw, ImageFont
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
#from django.forms.models import modelformset_factory
|
#from django.forms.models import modelformset_factory
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.shortcuts import get_object_or_404, render
|
from django.shortcuts import get_object_or_404, render
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import re
|
|||||||
|
|
||||||
import django.db.models
|
import django.db.models
|
||||||
from django.db.models import Min, Max
|
from django.db.models import Min, Max
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.shortcuts import render, render_to_response
|
from django.shortcuts import render, render_to_response
|
||||||
from django.template import Context, loader
|
from django.template import Context, loader
|
||||||
@ -185,11 +185,9 @@ def experimental(request):
|
|||||||
addupsurvexlength = 0
|
addupsurvexlength = 0
|
||||||
for expedition in Expedition.objects.all():
|
for expedition in Expedition.objects.all():
|
||||||
survexblocks = expedition.survexblock_set.all()
|
survexblocks = expedition.survexblock_set.all()
|
||||||
#survexlegs = [ ]
|
|
||||||
legsyear=0
|
legsyear=0
|
||||||
survexleglength = 0.0
|
survexleglength = 0.0
|
||||||
for survexblock in survexblocks:
|
for survexblock in survexblocks:
|
||||||
#survexlegs.extend(survexblock.survexleg_set.all())
|
|
||||||
survexleglength += survexblock.totalleglength
|
survexleglength += survexblock.totalleglength
|
||||||
try:
|
try:
|
||||||
legsyear += int(survexblock.text)
|
legsyear += int(survexblock.text)
|
||||||
@ -199,9 +197,6 @@ def experimental(request):
|
|||||||
legsbyexpo.append((expedition, {"nsurvexlegs":legsyear, "survexleglength":survexleglength}))
|
legsbyexpo.append((expedition, {"nsurvexlegs":legsyear, "survexleglength":survexleglength}))
|
||||||
legsbyexpo.reverse()
|
legsbyexpo.reverse()
|
||||||
|
|
||||||
#removing survexleg objects completely
|
|
||||||
#survexlegs = models.SurvexLeg.objects.all()
|
|
||||||
#totalsurvexlength = sum([survexleg.tape for survexleg in survexlegs])
|
|
||||||
return render(request, 'experimental.html', { "nsurvexlegs":nimportlegs, "totalsurvexlength":totalsurvexlength, "addupsurvexlength":addupsurvexlength, "legsbyexpo":legsbyexpo })
|
return render(request, 'experimental.html', { "nsurvexlegs":nimportlegs, "totalsurvexlength":totalsurvexlength, "addupsurvexlength":addupsurvexlength, "legsbyexpo":legsbyexpo })
|
||||||
|
|
||||||
@login_required_if_public
|
@login_required_if_public
|
||||||
|
@ -2,7 +2,7 @@ import re
|
|||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
@ -11,7 +11,6 @@ from django.template import Context, loader
|
|||||||
import troggle.parsers.imports
|
import troggle.parsers.imports
|
||||||
from troggle.core.models import Expedition, Person, PersonExpedition
|
from troggle.core.models import Expedition, Person, PersonExpedition
|
||||||
from troggle.core.models_caves import LogbookEntry, QM, Cave, PersonTrip
|
from troggle.core.models_caves import LogbookEntry, QM, Cave, PersonTrip
|
||||||
#from troggle.core.models_survex import SurvexLeg
|
|
||||||
from troggle.helper import login_required_if_public
|
from troggle.helper import login_required_if_public
|
||||||
from troggle.core.forms import UploadFileForm
|
from troggle.core.forms import UploadFileForm
|
||||||
|
|
||||||
@ -27,7 +26,6 @@ def frontpage(request):
|
|||||||
expeditions = Expedition.objects.order_by("-year")
|
expeditions = Expedition.objects.order_by("-year")
|
||||||
logbookentry = LogbookEntry
|
logbookentry = LogbookEntry
|
||||||
cave = Cave
|
cave = Cave
|
||||||
#photo = DPhoto
|
|
||||||
from django.contrib.admin.templatetags import log
|
from django.contrib.admin.templatetags import log
|
||||||
return render(request,'frontpage.html', locals())
|
return render(request,'frontpage.html', locals())
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@ import re
|
|||||||
|
|
||||||
import django.db.models
|
import django.db.models
|
||||||
from django.db.models import Min, Max
|
from django.db.models import Min, Max
|
||||||
from django.core.urlresolvers import reverse
|
#from django.urls import reverse, resolve
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
#from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.shortcuts import render, render_to_response
|
from django.shortcuts import render, render_to_response
|
||||||
from django.template import Context, loader
|
from django.template import Context, loader
|
||||||
from django.template.defaultfilters import slugify
|
from django.template.defaultfilters import slugify
|
||||||
@ -22,9 +22,7 @@ from settings import *
|
|||||||
|
|
||||||
def pathsreport(request):
|
def pathsreport(request):
|
||||||
pathsdict={
|
pathsdict={
|
||||||
"ADMIN_MEDIA_PREFIX" : ADMIN_MEDIA_PREFIX,
|
"CAVEDESCRIPTIONS" : CAVEDESCRIPTIONS,
|
||||||
"ADMIN_MEDIA_PREFIX" : ADMIN_MEDIA_PREFIX,
|
|
||||||
"CAVEDESCRIPTIONSX" : CAVEDESCRIPTIONS,
|
|
||||||
"DIR_ROOT" : DIR_ROOT,
|
"DIR_ROOT" : DIR_ROOT,
|
||||||
"ENTRANCEDESCRIPTIONS" : ENTRANCEDESCRIPTIONS,
|
"ENTRANCEDESCRIPTIONS" : ENTRANCEDESCRIPTIONS,
|
||||||
"EXPOUSER_EMAIL" : EXPOUSER_EMAIL,
|
"EXPOUSER_EMAIL" : EXPOUSER_EMAIL,
|
||||||
@ -36,25 +34,19 @@ def pathsreport(request):
|
|||||||
"JSLIB_URL" : JSLIB_URL,
|
"JSLIB_URL" : JSLIB_URL,
|
||||||
"LOGFILE" : LOGFILE,
|
"LOGFILE" : LOGFILE,
|
||||||
"LOGIN_REDIRECT_URL" : LOGIN_REDIRECT_URL,
|
"LOGIN_REDIRECT_URL" : LOGIN_REDIRECT_URL,
|
||||||
"MEDIA_ADMIN_DIR" : MEDIA_ADMIN_DIR,
|
|
||||||
"MEDIA_ROOT" : MEDIA_ROOT,
|
"MEDIA_ROOT" : MEDIA_ROOT,
|
||||||
"MEDIA_URL" : MEDIA_URL,
|
"MEDIA_URL" : MEDIA_URL,
|
||||||
#"PHOTOS_ROOT" : PHOTOS_ROOT,
|
|
||||||
"PHOTOS_URL" : PHOTOS_URL,
|
"PHOTOS_URL" : PHOTOS_URL,
|
||||||
"PYTHON_PATH" : PYTHON_PATH,
|
"PYTHON_PATH" : PYTHON_PATH,
|
||||||
"REPOS_ROOT_PATH" : REPOS_ROOT_PATH,
|
"REPOS_ROOT_PATH" : REPOS_ROOT_PATH,
|
||||||
"ROOT_URLCONF" : ROOT_URLCONF,
|
"ROOT_URLCONF" : ROOT_URLCONF,
|
||||||
"STATIC_ROOT" : STATIC_ROOT,
|
|
||||||
"STATIC_URL" : STATIC_URL,
|
"STATIC_URL" : STATIC_URL,
|
||||||
"SURVEX_DATA" : SURVEX_DATA,
|
"SURVEX_DATA" : SURVEX_DATA,
|
||||||
"SURVEY_SCANS" : SURVEY_SCANS,
|
"SURVEY_SCANS" : SURVEY_SCANS,
|
||||||
"SURVEYS" : SURVEYS,
|
"SURVEYS" : SURVEYS,
|
||||||
"SURVEYS_URL" : SURVEYS_URL,
|
"SURVEYS_URL" : SURVEYS_URL,
|
||||||
"SVX_URL" : SVX_URL,
|
"SVX_URL" : SVX_URL,
|
||||||
# "TEMPLATE_DIRS" : TEMPLATE_DIRS,
|
|
||||||
"THREEDCACHEDIR" : THREEDCACHEDIR,
|
"THREEDCACHEDIR" : THREEDCACHEDIR,
|
||||||
# "TINY_MCE_MEDIA_ROOT" : TINY_MCE_MEDIA_ROOT,
|
|
||||||
# "TINY_MCE_MEDIA_URL" : TINY_MCE_MEDIA_URL,
|
|
||||||
"TUNNEL_DATA" : TUNNEL_DATA,
|
"TUNNEL_DATA" : TUNNEL_DATA,
|
||||||
"URL_ROOT" : URL_ROOT
|
"URL_ROOT" : URL_ROOT
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ import troggle.core.models_survex
|
|||||||
from django.core import management
|
from django.core import management
|
||||||
from django.db import connection, close_old_connections, connections
|
from django.db import connection, close_old_connections, connections
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
from troggle.core.models_caves import Cave, Entrance
|
from troggle.core.models_caves import Cave, Entrance
|
||||||
@ -75,7 +75,7 @@ def reinit_db():
|
|||||||
print(" - deleting " + currentdbname)
|
print(" - deleting " + currentdbname)
|
||||||
os.remove(currentdbname)
|
os.remove(currentdbname)
|
||||||
except OSError:
|
except OSError:
|
||||||
print(" ! OSError on removing: " + currentdbname + " (Is the file open in another app?\n")
|
print(" ! OSError on removing: " + currentdbname + " (Is the file open in another app? Is the server running?\n")
|
||||||
raise
|
raise
|
||||||
else:
|
else:
|
||||||
print(" - No database file found: " + currentdbname + " ..continuing, will create it.\n")
|
print(" - No database file found: " + currentdbname + " ..continuing, will create it.\n")
|
||||||
|
@ -3,12 +3,10 @@ import re
|
|||||||
|
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.http import HttpResponse, HttpResponseRedirect, Http404
|
from django.http import HttpResponse, HttpResponseRedirect, Http404
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse, resolve
|
||||||
from django.template import Context, loader
|
from django.template import Context, loader
|
||||||
import django.forms as forms
|
import django.forms as forms
|
||||||
|
|
||||||
#from tinymce.widgets import TinyMCE
|
|
||||||
|
|
||||||
from troggle.helper import login_required_if_public
|
from troggle.helper import login_required_if_public
|
||||||
from troggle.flatpages.models import Redirect, EntranceRedirect
|
from troggle.flatpages.models import Redirect, EntranceRedirect
|
||||||
from troggle.core.models_caves import Cave
|
from troggle.core.models_caves import Cave
|
||||||
@ -70,7 +68,7 @@ def flatpage(request, path):
|
|||||||
if m:
|
if m:
|
||||||
preheader, headerattrs, head, postheader, bodyattrs, body, postbody = m.groups()
|
preheader, headerattrs, head, postheader, bodyattrs, body, postbody = m.groups()
|
||||||
else:
|
else:
|
||||||
return HttpResponse(html + "Page could not be split into header and body")
|
return HttpResponse(html + "Page could not be split into header and body: parsing failed in flatpages.views.py")
|
||||||
m = re.search(rb"<title>(.*)</title>", head, re.DOTALL + re.IGNORECASE)
|
m = re.search(rb"<title>(.*)</title>", head, re.DOTALL + re.IGNORECASE)
|
||||||
if m:
|
if m:
|
||||||
title, = m.groups()
|
title, = m.groups()
|
||||||
@ -89,11 +87,12 @@ def flatpage(request, path):
|
|||||||
menumatch = re.match(rb'(.*)<ul id="links">', body, re.DOTALL + re.IGNORECASE)
|
menumatch = re.match(rb'(.*)<ul id="links">', body, re.DOTALL + re.IGNORECASE)
|
||||||
if menumatch:
|
if menumatch:
|
||||||
has_menu = True
|
has_menu = True
|
||||||
body, = menumatch.groups()
|
#body, = menumatch.groups()
|
||||||
# if re.search(rb"iso-8859-1", html):
|
# if re.search(rb"iso-8859-1", html):
|
||||||
# body = str(body, "iso-8859-1")
|
# body = str(body, "iso-8859-1")
|
||||||
# body.strip
|
# body.strip
|
||||||
return render(request, 'flatpage.html', {'editable': editable, 'path': path, 'title': title, 'body': body, 'homepage': (path == "index.htm"), 'has_menu': has_menu})
|
return render(request, 'flatpage.html', {'editable': editable, 'path': path, 'title': title,
|
||||||
|
'body': body, 'homepage': (path == "index.htm"), 'has_menu': has_menu})
|
||||||
else:
|
else:
|
||||||
return HttpResponse(o.read(), content_type=getmimetype(path))
|
return HttpResponse(o.read(), content_type=getmimetype(path))
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ from django.core import management
|
|||||||
from django.db import connection, close_old_connections
|
from django.db import connection, close_old_connections
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from troggle.core.models_caves import Cave, Entrance
|
from troggle.core.models_caves import Cave, Entrance
|
||||||
import troggle.flatpages.models
|
import troggle.flatpages.models
|
||||||
|
38
media/readme.txt
Normal file
38
media/readme.txt
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Confusions and incompatibilities when migrating to Django 1.10
|
||||||
|
meant conslidating the places we get CSS files and site media such as gifs
|
||||||
|
for page annoations.
|
||||||
|
|
||||||
|
Situation as of 17/6/2020:
|
||||||
|
We have 3 folders for CSS files in 3 very different places:
|
||||||
|
1 in expoweb repo
|
||||||
|
1 in troggle repo
|
||||||
|
1 not in either repo but intimately needed by troggle
|
||||||
|
|
||||||
|
These are (in /home/expo/ ):
|
||||||
|
1. expoweb/css/ (used by the handbook)
|
||||||
|
2. troggle/media/css/ (used by troggle pages)
|
||||||
|
3. static/admin/css (used by django control panel and django plugins)
|
||||||
|
|
||||||
|
1. expoweb/css/ flatviews.flatpage - the url is /css/main2.css
|
||||||
|
2. troggle/media/css/ MEDIA_ROOT, MEDIA_URL - the url is /site_media/css/main3.css
|
||||||
|
3. static/admin/css STATIC_ROOT, STATIC_URL - the url is /static/admin/css/base.css
|
||||||
|
|
||||||
|
After installing Django, weneed to manually copy its CSS etc. files from,
|
||||||
|
e.g. /usr/lib/python3.7/site-packages/django/contrib/admin/static/admin/css
|
||||||
|
to
|
||||||
|
/static/admin/css/base.css
|
||||||
|
if there are changes. But our old set of gifs is probably better.
|
||||||
|
|
||||||
|
from django.contrib.staticfiles import views as staticviews
|
||||||
|
from flatpages import views as flatviews
|
||||||
|
|
||||||
|
1. url(r'^(.*)$', flatviews.flatpage, name="flatpage"),
|
||||||
|
|
||||||
|
2. url(r'^site_media/(?P<path>.*)$', staticviews.serve, {'document_root': settings.MEDIA_ROOT,
|
||||||
|
'show_indexes': True}),
|
||||||
|
3. url(r'^static/(?P<path>.*)$', staticviews.serve, {'document_root': settings.STATIC_ROOT,
|
||||||
|
'show_indexes': True}),
|
||||||
|
|
||||||
|
Also (for development only):
|
||||||
|
url(r'^expofiles/(?P<path>.*)$', staticviews.serve, {'document_root': settings.EXPOFILES,
|
||||||
|
'show_indexes': True}),
|
@ -1,6 +1,7 @@
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django import http
|
from django import http
|
||||||
from django.core.urlresolvers import resolve
|
from django.urls import reverse, resolve
|
||||||
|
#from django.core.urlresolvers import resolve
|
||||||
|
|
||||||
class SmartAppendSlashMiddleware(object):
|
class SmartAppendSlashMiddleware(object):
|
||||||
"""
|
"""
|
||||||
|
@ -6,7 +6,7 @@ from django.core import management
|
|||||||
from django.db import connection, close_old_connections, connections
|
from django.db import connection, close_old_connections, connections
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.core.urlresolvers import reverse
|
#from django.urls import reverse, resolve
|
||||||
|
|
||||||
import troggle.settings
|
import troggle.settings
|
||||||
import troggle.parsers.caves
|
import troggle.parsers.caves
|
||||||
|
@ -1,61 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import string
|
|
||||||
import re
|
|
||||||
import urllib.parse
|
|
||||||
|
|
||||||
import django
|
|
||||||
|
|
||||||
from .settings import *
|
|
||||||
|
|
||||||
pathsdict={
|
|
||||||
"ADMIN_MEDIA_PREFIX" : ADMIN_MEDIA_PREFIX,
|
|
||||||
"ADMIN_MEDIA_PREFIX" : ADMIN_MEDIA_PREFIX,
|
|
||||||
"CAVEDESCRIPTIONSX" : CAVEDESCRIPTIONS,
|
|
||||||
"DIR_ROOT" : DIR_ROOT,
|
|
||||||
#"EMAIL_HOST" : EMAIL_HOST,
|
|
||||||
#"EMAIL_HOST_USER" : EMAIL_HOST_USER,
|
|
||||||
"ENTRANCEDESCRIPTIONS" : ENTRANCEDESCRIPTIONS,
|
|
||||||
"EXPOUSER_EMAIL" : EXPOUSER_EMAIL,
|
|
||||||
"EXPOUSERPASS" :"<redacted>",
|
|
||||||
"EXPOUSER" : EXPOUSER,
|
|
||||||
"EXPOWEB" : EXPOWEB,
|
|
||||||
"EXPOWEB_URL" : EXPOWEB_URL,
|
|
||||||
"FILES" : FILES,
|
|
||||||
"JSLIB_URL" : JSLIB_URL,
|
|
||||||
"LOGFILE" : LOGFILE,
|
|
||||||
"LOGIN_REDIRECT_URL" : LOGIN_REDIRECT_URL,
|
|
||||||
"MEDIA_ADMIN_DIR" : MEDIA_ADMIN_DIR,
|
|
||||||
"MEDIA_ROOT" : MEDIA_ROOT,
|
|
||||||
"MEDIA_URL" : MEDIA_URL,
|
|
||||||
#"PHOTOS_ROOT" : PHOTOS_ROOT,
|
|
||||||
"PHOTOS_URL" : PHOTOS_URL,
|
|
||||||
"PYTHON_PATH" : PYTHON_PATH,
|
|
||||||
"REPOS_ROOT_PATH" : REPOS_ROOT_PATH,
|
|
||||||
"ROOT_URLCONF" : ROOT_URLCONF,
|
|
||||||
"STATIC_ROOT" : STATIC_ROOT,
|
|
||||||
"STATIC_URL" : STATIC_URL,
|
|
||||||
"SURVEX_DATA" : SURVEX_DATA,
|
|
||||||
"SURVEY_SCANS" : SURVEY_SCANS,
|
|
||||||
"SURVEYS" : SURVEYS,
|
|
||||||
"SURVEYS_URL" : SURVEYS_URL,
|
|
||||||
"SVX_URL" : SVX_URL,
|
|
||||||
"TEMPLATE_DIRS" : TEMPLATE_DIRS,
|
|
||||||
"THREEDCACHEDIR" : THREEDCACHEDIR,
|
|
||||||
"TINY_MCE_MEDIA_ROOT" : TINY_MCE_MEDIA_ROOT,
|
|
||||||
"TINY_MCE_MEDIA_URL" : TINY_MCE_MEDIA_URL,
|
|
||||||
"TUNNEL_DATA" : TUNNEL_DATA,
|
|
||||||
"URL_ROOT" : URL_ROOT
|
|
||||||
}
|
|
||||||
|
|
||||||
sep="\r\t\t\t" # ugh nasty - terminal output only
|
|
||||||
sep2="\r\t\t\t\t\t\t\t" # ugh nasty - terminal output only
|
|
||||||
|
|
||||||
bycodes = sorted(pathsdict)
|
|
||||||
for p in bycodes:
|
|
||||||
print(p, sep , pathsdict[p])
|
|
||||||
|
|
||||||
byvals = sorted(pathsdict, key=pathsdict.__getitem__)
|
|
||||||
for p in byvals:
|
|
||||||
print(pathsdict[p] , sep2, p)
|
|
@ -23,6 +23,7 @@ redirect. If you don't use that name, remember to explicitly pass
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from django.conf.urls import *
|
from django.conf.urls import *
|
||||||
|
from django.urls import *
|
||||||
|
|
||||||
from profiles import views
|
from profiles import views
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ Views for creating, editing and viewing site-specific user profiles.
|
|||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse, resolve
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
|
7
req1.10.8+2.3.txt
Normal file
7
req1.10.8+2.3.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
confusable-homoglyphs==2.0.2
|
||||||
|
Django==1.10.8
|
||||||
|
django-registration==2.3
|
||||||
|
Pillow==7.1.2
|
||||||
|
six==1.15.0
|
||||||
|
sqlparse==0.3.1
|
||||||
|
Unidecode==1.1.1
|
@ -19,7 +19,7 @@ import urllib.parse
|
|||||||
|
|
||||||
import django
|
import django
|
||||||
|
|
||||||
print("** importing troggle/settings.py")
|
print("* importing troggle/settings.py")
|
||||||
|
|
||||||
# Note that this builds upon the django system installed
|
# Note that this builds upon the django system installed
|
||||||
# global settings in
|
# global settings in
|
||||||
@ -31,7 +31,6 @@ BASE_DIR = os.path.dirname(os.path.dirname(__file__))
|
|||||||
|
|
||||||
# Django settings for troggle project.
|
# Django settings for troggle project.
|
||||||
|
|
||||||
|
|
||||||
ALLOWED_HOSTS = ['expo.survex.com','localhost', '127.0.0.1']
|
ALLOWED_HOSTS = ['expo.survex.com','localhost', '127.0.0.1']
|
||||||
|
|
||||||
ADMINS = (
|
ADMINS = (
|
||||||
@ -103,7 +102,7 @@ INSTALLED_APPS = (
|
|||||||
'django.contrib.contenttypes',
|
'django.contrib.contenttypes',
|
||||||
'django.contrib.sessions',
|
'django.contrib.sessions',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
# 'django.contrib.staticfiles',
|
||||||
'registration',
|
'registration',
|
||||||
'troggle.profiles',
|
'troggle.profiles',
|
||||||
'troggle.core',
|
'troggle.core',
|
||||||
@ -146,4 +145,4 @@ TEST_RUNNER = 'django.test.runner.DiscoverRunner'
|
|||||||
from localsettings import *
|
from localsettings import *
|
||||||
|
|
||||||
#localsettings needs to take precedence. Call it to override any existing vars.
|
#localsettings needs to take precedence. Call it to override any existing vars.
|
||||||
print("++ finished importing troggle/settings.py")
|
print("+ finished importing troggle/settings.py")
|
||||||
|
51
urls.py
51
urls.py
@ -3,8 +3,10 @@ from django.conf.urls import *
|
|||||||
from django.views.generic.edit import UpdateView
|
from django.views.generic.edit import UpdateView
|
||||||
from django.views.generic.list import ListView
|
from django.views.generic.list import ListView
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.staticfiles import views as staticviews
|
#from django.contrib.staticfiles import views as staticviews
|
||||||
|
#from django.conf.urls.static import static
|
||||||
|
from django.urls import reverse, resolve
|
||||||
|
#
|
||||||
from .core.views import * # flat import
|
from .core.views import * # flat import
|
||||||
from .core.views_other import *
|
from .core.views_other import *
|
||||||
from .core.views_caves import *
|
from .core.views_caves import *
|
||||||
@ -34,7 +36,7 @@ actualurlpatterns = [
|
|||||||
# url(r'^personform/(.*)$', personForm),
|
# url(r'^personform/(.*)$', personForm),
|
||||||
|
|
||||||
url(r'^expedition/(\d+)$', views_logbooks.expedition, name="expedition"),
|
url(r'^expedition/(\d+)$', views_logbooks.expedition, name="expedition"),
|
||||||
url(r'^expeditions/?$', views_logbooks.ExpeditionListView.as_view(), name="expeditions"),
|
url(r'^expeditions/?$', views_logbooks.ExpeditionListView.as_view(), name="expeditions"),
|
||||||
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'^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'^logbookentry/(?P<date>.*)/(?P<slug>.*)/?$', views_logbooks.logbookentry,name="logbookentry"),
|
||||||
url(r'^newlogbookentry/(?P<expeditionyear>.*)$', views_logbooks.newLogbookEntry, name="newLogBookEntry"),
|
url(r'^newlogbookentry/(?P<expeditionyear>.*)$', views_logbooks.newLogbookEntry, name="newLogBookEntry"),
|
||||||
@ -71,7 +73,8 @@ actualurlpatterns = [
|
|||||||
url(r'^prospecting_guide/$', views_caves.prospecting),
|
url(r'^prospecting_guide/$', views_caves.prospecting),
|
||||||
url(r'^logbooksearch/(.*)/?$', views_logbooks.logbookSearch),
|
url(r'^logbooksearch/(.*)/?$', views_logbooks.logbookSearch),
|
||||||
|
|
||||||
url(r'^statistics/?$', views_statistics.stats, name="stats"),
|
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'^pathsreport.*$', views_statistics.pathsreport, name="pathsreport"),
|
||||||
|
|
||||||
url(r'^controlpanel/?$', views_other.controlPanel, name="controlpanel"),
|
url(r'^controlpanel/?$', views_other.controlPanel, name="controlpanel"),
|
||||||
@ -82,8 +85,8 @@ actualurlpatterns = [
|
|||||||
|
|
||||||
url(r'^admin/doc/?', include('django.contrib.admindocs.urls')), # needs docutils Python module (http://docutils.sf.net/).
|
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'^admin/', admin.site.urls),
|
||||||
url(r'^accounts/', include('registration.backends.default.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'^profiles/', include('profiles.urls')), # not used ? Delete this entire app then.
|
||||||
|
|
||||||
url(r'^survexblock/(.+)$', views_caves.survexblock, name="survexblock"),
|
url(r'^survexblock/(.+)$', views_caves.survexblock, name="survexblock"),
|
||||||
url(r'^survexfile/(?P<survex_file>.*?)\.svx$', views_survex.svx, name="svx"),
|
url(r'^survexfile/(?P<survex_file>.*?)\.svx$', views_survex.svx, name="svx"),
|
||||||
@ -95,39 +98,33 @@ actualurlpatterns = [
|
|||||||
url(r'^survexfile/(?P<survex_cave>.*)$', views_survex.survexcavesingle, name="survexcavessingle"),
|
url(r'^survexfile/(?P<survex_cave>.*)$', views_survex.survexcavesingle, name="survexcavessingle"),
|
||||||
url(r'^survexfileraw/(?P<survex_file>.*?)\.svx$', views_survex.svxraw, name="svxraw"),
|
url(r'^survexfileraw/(?P<survex_file>.*?)\.svx$', views_survex.svxraw, name="svxraw"),
|
||||||
|
|
||||||
url(r'^survey_files/download/(?P<path>.*)$', view_surveys.download),
|
# url(r'^survey_files/download/(?P<path>.*)$', view_surveys.download), # needs rewriting
|
||||||
|
|
||||||
#(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"),
|
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>[^/]+)/$', view_surveys.surveyscansfolder, name="surveyscansfolder"),
|
||||||
# This next line is beyond daft. If anyone uploads a file *anywhere* in SURVEY_SCANS which doesn't match, troggle crashes horribly. Has been failing for pdf and JPG files for years:
|
url(r'^survey_scans/(?P<path>[^/]+)/(?P<file>[^/]+)$',
|
||||||
url(r'^survey_scans/(?P<path>[^/]+)/(?P<file>[^/]+(?:png|jpg|pdf|jpeg|PNG|JPG|PDF|JPEG))$',
|
|
||||||
view_surveys.surveyscansingle, name="surveyscansingle"),
|
view_surveys.surveyscansingle, name="surveyscansingle"),
|
||||||
|
|
||||||
url(r'^tunneldata/$', view_surveys.tunneldata, name="tunneldata"),
|
url(r'^tunneldata/$', view_surveys.tunneldata, name="tunneldata"),
|
||||||
# url(r'^tunneldatainfo/(?P<path>.+?\.xml)$', view_surveys.tunnelfileinfo, name="tunnelfileinfo"),
|
url(r'^tunneldataraw/(?P<path>.+?\.xml)$', view_surveys.tunnelfile, name="tunnelfile"),
|
||||||
url(r'^tunneldataraw/(?P<path>.+?\.xml)$', view_surveys.tunnelfile, 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'^tunneldataraw/(?P<path>.+?\.xml)/upload$',view_surveys.tunnelfileupload, name="tunnelfileupload"),
|
||||||
|
|
||||||
url(r'^prospecting/(?P<name>[^.]+).png$', prospecting_image, name="prospecting_image"),
|
url(r'^prospecting/(?P<name>[^.]+).png$', prospecting_image, name="prospecting_image"),
|
||||||
|
|
||||||
url(r'^expofiles/(?P<path>.*)$', staticviews.serve,
|
url(r'^expofiles/(?P<filepath>.*)$', view_surveys.expofilessingle, name="single"), # EXPOFILES
|
||||||
{'document_root': settings.EXPOFILES, 'show_indexes': True}),
|
url(r'^static/(?P<filepath>.*)$', view_surveys.cssfilessingle, name="single"), # MEDIA_ROOT: CSS and JS
|
||||||
url(r'^static/(?P<path>.*)$', staticviews.serve,
|
url(r'^site_media/(?P<filepath>.*)$', view_surveys.cssfilessingle, name="single"), # MEDIA_ROOT: CSS and JS
|
||||||
{'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
|
# url(r'^javascript/(?P<filepath>.*)$', view_surveys.cssfilessingle, name="single"), # JSLIB_URL - unused
|
||||||
url(r'^site_media/(?P<path>.*)$', staticviews.serve,
|
|
||||||
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
|
# static views not working, removed as a plugin. Use apache instead to serve these:
|
||||||
# url(r'^troggle/media-admin/(?P<path>.*)$', staticviews.serve,
|
# url(r'^photos/(?P<path>.*)$', staticviews.serve,
|
||||||
# {'document_root': settings.MEDIA_ADMIN_DIR, 'show_indexes':True}),
|
# {'document_root': settings.PHOTOS_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,
|
# url(r'^gallery/(?P<path>.*)$', staticviews.serve,
|
||||||
# {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}),
|
# {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}),
|
||||||
|
|
||||||
url(r'^(.*)_edit$', flatviews.editflatpage, name="editflatpage"),
|
url(r'^(.*)_edit$', flatviews.editflatpage, name="editflatpage"),
|
||||||
url(r'^(.*)$', flatviews.flatpage, name="flatpage"),
|
url(r'^(.*)$', flatviews.flatpage, name="flatpage"),
|
||||||
]
|
]
|
||||||
|
|
||||||
#Allow prefix to all urls
|
#Allow prefix to all urls
|
||||||
|
3
utils.py
3
utils.py
@ -45,8 +45,7 @@ def save_carefully(objectType, lookupAttribs={}, nonLookupAttribs={}):
|
|||||||
defined in core.models.TroggleModel.
|
defined in core.models.TroggleModel.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
instance, created = objectType.objects.get_or_create(defaults=nonLookupAttribs, **lookupAttribs)
|
||||||
instance, created=objectType.objects.get_or_create(defaults=nonLookupAttribs, **lookupAttribs)
|
|
||||||
|
|
||||||
if not created and not instance.new_since_parsing:
|
if not created and not instance.new_since_parsing:
|
||||||
for k, v in list(nonLookupAttribs.items()): #overwrite the existing attributes from the logbook text (except date and title)
|
for k, v in list(nonLookupAttribs.items()): #overwrite the existing attributes from the logbook text (except date and title)
|
||||||
|
Loading…
Reference in New Issue
Block a user