2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2024-11-22 07:11:52 +00:00

Add new per-module ToDo texts

This commit is contained in:
Philip Sargent 2021-04-21 19:08:42 +01:00
parent 18938c9fca
commit bcdb3572fa
7 changed files with 56 additions and 20 deletions

View File

@ -1,4 +1,4 @@
"""
'''
We are using unittest for troggle.
Note that the database has not been parsed from the source files when these tests are run,
@ -17,7 +17,12 @@ which rely on database resolution will fail unless a fixture has been set up for
them.
https://docs.djangoproject.com/en/3.0/topics/testing/tools/
"""
'''
todo = '''ADD TESTS when we are redirecting /expofiles/ to a remote file-delivering site
'''
import unittest
import re
from django.test import TestCase, SimpleTestCase, Client

View File

@ -4,7 +4,7 @@ from django.forms import ModelForm
from django.http import HttpResponse
from django.core import serializers
from troggle.core.views.other import downloadLogbook
from troggle.core.views.other import downloadlogbook
from troggle.core.models.troggle import Person, PersonExpedition, Expedition, DataIssue
from troggle.core.models.caves import Cave, Area, Entrance, CaveAndEntrance, LogbookEntry, PersonTrip, QM
from troggle.core.models.survex import SurvexBlock, SurvexPersonRole, SurvexStation, ScansFolder, SingleScan

View File

@ -15,9 +15,13 @@ from troggle.core.models.caves import Cave, LogbookEntry, QM, Entrance, CaveAndE
Some are not used and need renovating or destroying.
'''
todo = '''Fix UploadFileForm
delete TripForm once working
'''
class CaveForm(ModelForm):
'''Only those fields for which we want to override defaults are listed here
the other fields are present on the form, but use the default presentaiton style
the other fields are present on the form, but use the default presentation style
'''
official_name = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'}))
underground_description = forms.CharField(required = False, widget=forms.Textarea(attrs={'rows':9}))

View File

@ -29,6 +29,9 @@ and for persons: their individual pages and their perseonexpedition pages.
It uses the global object TROG to hold some cached pages.
'''
todo = '''Fix the get_person_chronology() display bug.
'''
def personindex(request):
persons = Person.objects.all()
# From what I can tell, "persons" seems to be the table rows, while "pcols" is the table columns. - AC 16 Feb 09

View File

@ -14,12 +14,29 @@ from troggle.core.models.caves import LogbookEntry, QM, Cave, PersonTrip
from .login import login_required_if_public
from troggle.core.forms import UploadFileForm
"""Utility functions and code to serve the control panel and individual user's
'''Utility functions and code to serve the control panel and individual user's
progress and task list (deprecated as we do not have individual user login).
Also has code to download a logbook in a choice of formats (why?!) and to
download all QMs (not working)
"""
'''
todo = '''Delete the newfile & TripForm code once we have a proper file-upload system working.
meanwhile keep it as an example to consider.
'''
def todos(request, module):
'''produces todo text from module
'''
from troggle.core.TESTS.tests import todo as tests
from troggle.core.views.logbooks import todo as viewlogbooks
from troggle.core.forms import todo as forms
print(f'TODO - {tests}')
tododict = {'views/other': todo,
'tests': tests,
'views/logbooks': viewlogbooks,
'core/forms': forms}
return render(request,'core/todos.html', {'tododict': tododict})
def troggle404(request): # cannot get this to work. Handler404 in urls.py not right syntax
'''Custom 404 page to be used even when Debug=True
@ -44,7 +61,7 @@ def frontpage(request):
return render(request,'frontpage.html', locals())
def controlPanel(request):
def controlpanel(request):
jobs_completed=[]
if request.method=='POST':
if request.user.is_superuser: # expoadmin is both .is_staff and ._is_superuser
@ -67,7 +84,7 @@ def controlPanel(request):
return render(request,'controlPanel.html', {'caves':Cave.objects.all(),'expeditions':Expedition.objects.all(),'jobs_completed':jobs_completed})
def downloadLogbook(request,year=None,extension=None,queryset=None):
def downloadlogbook(request,year=None,extension=None,queryset=None):
if year:
current_expedition=Expedition.objects.get(year=year)
@ -135,7 +152,7 @@ def ajax_QM_number(request):
return HttpResponse(res)
@login_required_if_public
def newFile(request, pslug = None):
def newfile(request, pslug = None):
''' not known quite what this was for or where it fits in - original 2006 troggle idea never finished?
'''
if pslug:

View File

@ -0,0 +1,3 @@
{% extends "baseapi.html" %}
{% block content %}{% for k, v in tododict.items %}<b>{{k}}</b>: {{v}}<br /><br />
{% endfor %}{% endblock %}

26
urls.py
View File

@ -7,9 +7,9 @@ from django.contrib import admin
from django.contrib import auth
from django.urls import reverse, resolve
from troggle.core.views import other, caves, statistics, survex
from troggle.core.views import caves, statistics, survex
from troggle.core.views.surveys import surveyscansingle, surveyscansfolder, surveyscansfolders, dwgdata, dwgfilesingle, dwgfileupload
from troggle.core.views.other import troggle404, frontpage
from troggle.core.views.other import troggle404, frontpage, todos, controlpanel, frontpage, newfile, downloadlogbook, ajax_QM_number, downloadQMs
from troggle.core.views.caves import ent, cavepage
from troggle.core.views.logbooks import get_logbook_entries, logbookentry, logbookSearch
from troggle.core.views.logbooks import personindex, person, get_people
@ -34,6 +34,9 @@ which is vital to writing code for the webapp. So the URL dispatch is declarativ
The API urls return TSV or JSON and are new in July 2020.
"""
todo = '''Replace most re_path() with modern and simpler path()
'''
#handler404 = 'troggle.core.views.other.troggle404' # can't get this to work. but 404.html is default anyway
# Many of these patterns do not work because troggle spent many years broken and we have
@ -63,7 +66,6 @@ else:
trogglepatterns = [
re_path(r'^expofiles/', include(expofilesurls)),
re_path(r'^troggle$', other.frontpage, name="frontpage"), # control panel. Shows recent actions.
re_path(r'^caves$', caves.caveindex, name="caveindex"),
re_path(r'^indxal.htm$', caves.caveindex, name="caveindex"), # ~420 hrefs to this url in expoweb files
re_path(r'^people/?$', personindex, name="personindex"),
@ -88,10 +90,10 @@ trogglepatterns = [
# Logbook entries
re_path(r'^logbookentry/(?P<date>.*)/(?P<slug>.*)/?$', logbookentry,name="logbookentry"),
re_path(r'^newfile', other.newFile, name="newFile"), # oddly broken, needs investigating more
re_path(r'^newfile', newfile, name="newFile"), # oddly broken, needs investigating more
re_path(r'^logbooksearch/(.*)/?$', logbookSearch),
re_path(r'^logbook(?P<year>\d\d\d\d)\.(?P<extension>.*)/?$', other.downloadLogbook),
re_path(r'^logbook/?$', other.downloadLogbook, name="downloadlogbook"),
re_path(r'^logbook(?P<year>\d\d\d\d)\.(?P<extension>.*)/?$', downloadlogbook),
re_path(r'^logbook/?$', downloadlogbook, name="downloadlogbook"),
# Internal. editfile.html template uses these internally
re_path(r'^getPeople/(?P<expeditionslug>.*)', get_people, name = "get_people"),
@ -116,16 +118,18 @@ trogglepatterns = [
re_path(r'^entrance/(?P<caveslug>[^/]+)/(?P<slug>[^/]+)/edit/', caves.edit_entrance, name = "editentrance"),
re_path(r'^entrance/new/(?P<caveslug>[^/]+)$', caves.edit_entrance, name = "newentrance"),
# System admin and monitoring
re_path(r'^statistics/?$', statistics.stats, name="stats"),
re_path(r'^stats/?$', statistics.stats, name="stats"),
re_path(r'^pathsreport.*$', statistics.pathsreport, name="pathsreport"),
re_path(r'^dataissues/?$', statistics.dataissues, name="dataissues"),
re_path(r'^controlpanel/?$', other.controlPanel, name="controlpanel"),
re_path(r'^troggle$', frontpage, name="frontpage"), # control panel. Shows recent actions.
re_path(r'^todo/(?P<module>.*)$', todos, name="todos"),
re_path(r'^controlpanel/?$', controlpanel, name="controlpanel"),
# The survexfile pages
re_path(r'^survexfile/(?P<survex_file>.*?)\.svx$', survex.svx, name="svx"),
re_path(r'^survexfile/(?P<survex_file>.*?)\.svx$', survex.svx, name="svx"),
re_path(r'^survexfile/(?P<survex_file>.*?)\.3d$', survex.threed, name="threed"),
re_path(r'^survexfile/(?P<survex_file>.*?)\.log$', survex.svxraw),
re_path(r'^survexfile/(?P<survex_file>.*?)\.err$', survex.err),
@ -151,8 +155,8 @@ trogglepatterns = [
# QMs pages - must precede other /caves pages
re_path(r'^cave/qms/([^/]+)/?$', caves.caveQMs), # blank page usually
re_path(r'^cave/(?P<cave_id>[^/]+)/(?P<year>\d\d\d\d)-(?P<qm_id>\d*)(?P<grade>[ABCDX]?)?$', caves.qm, name="qm"),
re_path(r'^cave/(?P<cave_id>[^/]+)/qm\.csv/?$', other.downloadQMs, name="downloadqms"),
re_path(r'^newqmnumber/?$', other.ajax_QM_number, ), # blank page if no ch given
re_path(r'^cave/(?P<cave_id>[^/]+)/qm\.csv/?$', downloadQMs, name="downloadqms"),
re_path(r'^newqmnumber/?$', ajax_QM_number, ), # blank page if no ch given
# re_path(r'^downloadqms$', other.downloadQMs), # MultiValueDictKeyError
# Prospecting Guide document