grey banner and lots of to-do fixes, to do items all updated from scribbled notes on printout

This commit is contained in:
Philip Sargent 2020-04-22 19:37:10 +01:00
parent dcd2711ddb
commit 25f9430fac
31 changed files with 1828 additions and 421 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -23,7 +23,7 @@ This is adding an extra column to every line in the file.
<p>
Add new lines for new people, with the right number of columns.
<p>This process is tedious and error-prone and ripe for improvement especially as expo proceeds and youhave many more names to add. Adding a list of people from the bier book and their aliases (the name in brackets) would be a lot better, but some way to make sure that names match with previous years would be good.
<p>This process is tedious and error-prone and ripe for improvement especially as expo proceeds and you have many more names to add. Adding a list of people from the bier book and their aliases (the name in brackets) would be a lot better, but some way to make sure that names match with previous years would be good.
<p>
Contrary to what you might expect we find that it is much more reliable to edit this using a text editor rather than a spreadsheet program.
@ -33,23 +33,19 @@ Contrary to what you might expect we find that it is much more reliable to edit
<p>The nerd needs to do this:
<ol>
<li>Upload the edited copy of folk.csv to the server using the version control system.
<li>Log in to the expo server and run the update script (see below for details)
<li>Log in to the expo server and run the update script (see below)
<li>Watch any error messages scroll by.
<li>Look at the new folk list HTML file at <a href="http://expo.survex.com/folk/">http://expo.survex.com/folk/</a>
<li>Re-run the import script until you have got rid of all the import errors.
</ol>
<p>This is how you login and run the script:
<pre><code>ssh expo@expo.survex.com
cd folk
cd expoweb/folk
chmod +w index.htm
python ../scripts/make-folklist.py &lt;folk.csv &gt;index.htm
</code></pre>
<p>If there are no errors, you will just see this on your ssh session:
<pre><codeLoading expeditions
Loading personexpeditions
</code></pre>
<p>And you will see the result online at <a href="http://expo.survex.com/folk/">http://expo.survex.com/folk/</a>.
<p>If there are no errors, you will just see the prompt reappear in your ssh session
and you will see the result online at <a href="http://expo.survex.com/folk/">http://expo.survex.com/folk/</a>.
<p>It is recommended that the nerd does this locally on their own laptop first. It does not need to be an expo laptop, even a Windows 10 laptop is fine if the script is run in a WSL terminal. The only software you need to install is the default python package.
<hr />

View File

@ -47,15 +47,27 @@ so you cannot use "Edit this page". These pages will not show "Edit this page" i
<p>Then once created, you can edit it the same way that you edit a pre-existing page.
<h3>Linking in New Pages</h3>
<p>You link your new page into the handbook by editing another page in which you want to create a link. For example if you have created a new page describing your wonderful new sleeping bag/hammock technique, then you might want to add a link in to <a href="../kitlist.html">Expo Personal Gear List</a>. Unfortunately the "create link" icon (a picture of 3 links of a chain) is disabled in the on-line editor so you would have to click on the HTML icon and insert the link by editing the HTML directly.
<p>You link your new page into the handbook by editing another page in which you want to create a link. For example if you have created a new page describing your wonderful new sleeping bag/hammock technique, then you might want to add a link in to <a href="../kitlist.html">Expo Personal Gear List</a>. Unfortunately the "create link" icon (a picture of 3 links of a chain) is disabled in the on-line editor so you would have to click on the HTML icon and insert the link by editing the HTML directly using an <em>&lt;a href="filename"&gt;</em> tag.
<h3>Conventions</h3>
<h4>Encoding</h4>
<ul>
<li>We specify that pages are encoded using <a href="https://www.w3schools.com/charsets/ref_html_utf8.asp">UTF-8</a> for all content.
<li>We are using <a href="https://www.w3schools.com/html/html5_intro.asp">HTML5</a> and
<a href="https://developer.mozilla.org/en-US/docs/Archive/CSS3">CSS3</a> but a great many pages still use obsolescent tags such as &lt;font&gt;. These are being removed whenever a page is edited.
<li>All the pages use a single CSS stylesheet <a href="/css/main2.css">/css/main2.css</a>.
<li>We do not use any javascript framework: just HTML and CSS. You may come across historic references to jquery but this is not used.
<li>When editing webpages, use <a href="https://www.freeformatter.com/html-entities.html">HTML entities</a> for characters with umlauts, e.g. <em>&amp;ouml;</em> for &ouml;.
<li>Only use a UTF-8 encoding if there is no HTML entity, e.g. biohazard: <span style='font-size:30px;'>&#9763;</span>
</ul>
<h4>Automated formatting</h4>
<ul>
<li>When any .html page is loaded by troggle it replaces all the <em> &lt;head&gt;...&lt;/head&gt; </em> material with the expo standard header. So don't put anything in the header of any page you edit as it will be ignored. This is also where troggle inserts the <a href="/css/main2.css">/css/main2.css</a> standard stylesheet.
<li>On loading a .html page troggle also inserts a standard menu - normally visible to the top left of the page. This is not inserted if the .html page has its own menu: <em> &lt;div id="menu"&gt;&lt;ul id="links"&gt; ... various &lt;li&gt;items .. &lt;/ul&gt;&lt;/div&gt;</em>
<li>If you add the header line
<em>&lt;meta name="keywords" content="NOEDIT"&gt;</em>
it will be stripped out by troggle when it replaces the header, but it will notice it and will not insert "Edit this page" at the end of the inserted menu.
</ul>
<h4>Filenames</h4>
<ul>
<li>No spaces in filenames. Use underscores or hyphens.
@ -68,8 +80,16 @@ Otherwise it's easy to make pages that work on Windows, but which don't on Linux
<li> Never create two files spelt the same except for capitalisation. They will overwrite each other if edited on a Windows machine <em>without any warning</em>. This is particularly a problem for the filenames generated on phones for photographs.
</ul>
<h4>Images</h4>
<ul>
<li>Older parts of the website have sub-folders "i/", "l/", and "t/" holding respectively<br />
i/ - the image file at full resolution (600px width usually)</br>
l/ - an html file which displays the full image with a caption and some description</br>
t/ - a thumbnail image which is usually used inside an &lt;a&gt; tag to link to the l/ html file.
</ul>
<hr />
<h3 id="tidy">Tidying up and commiting the edits</h3>
<p>'Edit This Page' edits the file served on the web but it does not update the file in the version control

View File

@ -53,10 +53,10 @@ processes that a maintainer would want to do.</p>
<h3 id="git">Version control system</a></h3>
<p>We use a distributed revision control system (<a href="https://git-scm.com/about/distributed">git</a>, and formerly mercurial) for all the important data. (Note that we just use git: not GitHub, not GitLab, just <a href="https://git-scm.com/about/distributed">git</a>.)
This means that many people can edit and merge their changes with the expo
server in Cambridge at the same time: including people still on expo in the Tatty Hut
server in Cambridge at the same time: inlcuding people still on expo in the Tatty Hut
and those who have returned to the UK. Also anyone who is up
to date can take their laptop somewhere and enter data even if they have no internet access,
and the updates can be merged when they get back to civilization.
and the updates will be merged when they get back to civilization.
</p>
<p>In principle, survey notes can be typed into a laptop up on the plateau which would
then get synchronised when it next gets internet access.
@ -65,9 +65,8 @@ then get synchronised when it next gets internet access.
do not get modified, so they are kept as a plain directory of files 'expofiles'.
The same goes for holiday photographs and GPS logs.</p>
<p>From 2012-2019 we used mercurial (aka 'hg'), but completed the move to git
before the 2020 expo.</p>
<p>In 2019 we had half our <a href="manual.html#repositories">version-controlled repositories</a> under mercurial and half under git.
The intention is to move entirely to git before the 2020 expo.
<h3>Contents </h3>
<ol>
@ -84,6 +83,7 @@ Appendices:
<ul>
<li><a href="../website-history.html">Website history</a> - a history of the data management system up to 2019</li>
<li><a href="../c21bs.html">Taking Expo Bullshit into the 21st Century</a> - initial report from 1996</li>
<li><a href="useany.html">Platform portability</a> - making the website work widely [2006]</li>
</ul>
<h3><a id="usernamepassword">Getting a username, password and key</a></h3>
@ -113,12 +113,12 @@ editing and keeps track of all changes so we can roll back and have branches if
<p>The site has been split into four parts:</p>
<ul>
<li><a href="/hgrepositories/home/expo/loser/graph/">loser</a> - the survex cave survey data (hg)</li>
<li><a href="/repositories/drawings/.git/log">drawings</a> - the tunnel and therion cave data and drawings (git)</li>
<li><a href="/repositories/expoweb/.git/log">expoweb</a> - the website pages, handbook, generation scripts (git)</li>
<li><a href="/repositories/troggle/.git/log">troggle</a> - the database/software part of the survey data management system - see <a href="../troggle/trogintro.html">notes on troggle</a> for further explanation (git)</li>
<li><a href="/repositories/home/expo/loser/graph/">loser</a> - the survex cave survey data (hg)</li>
<li><a href="/cgit/drawings/.git/log">drawings</a> - the tunnel and therion cave data and drawings (git)</li>
<li><a href="/repositories/home/expo/expoweb/graph">expoweb</a> - the website pages, handbook, generation scripts (hg)</li>
<li><a href="/cgit/troggle/.git/log">troggle</a> - the database/software part of the survey data management system - see <a href="../troggle/trogintro.html">notes on troggle</a> for further explanation (git)</li>
</ul>
<p>We have migrated three of these to git but loser is still mercurial for a few more days.
<p>We have migrated two of these to git but the other two still use mercurial.
<h3><a id="cavepages">Updating cave pages</a></h3>

View File

@ -6,7 +6,14 @@
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<style>
body {
background: #fff url(/images/style/bg-system.png) repeat-x 0 0
}
/* Use grey for system/programming/nerd pages as a visual reminder */
</style>
<h2 id="tophead">CUCC Expedition Handbook - Online overview</h2>
<h1>Expo Online Systems Overview</h1>
<p>The cave data and online publishing system (aka "the website") is now large and complicated.
@ -15,6 +22,7 @@ This page is the overview. The online systems manuals are split into these secti
<ul>
<li><a href="manual.html"><b>Data maintenance</b></a> - for cavers finding and updating cave survey data using the software tools.
<ul>
<li><a href="todo-data.html">To-do</a> - data maintenance to-do list
<li><a href="../treasurer.html">Accounts</a> - the Bank of Expo, the bier book
<li><a href="newyear.html">the next expo</a> - preparing for next year
</ul>
@ -22,6 +30,7 @@ This page is the overview. The online systems manuals are split into these secti
<li><a href="hbmanual1.html"><b>Handbook maintenance</b></a> - how to improve and update what you are reading now.
<li><a href="../troggle/trogintro.html"><b>System maintenance</b></a> - how to fix and enhance the software tools we have written:
<ul>
<li><a href="todo.html">To-do</a> - online systems to-do list
<li><a href="../troggle/trogmanual.html">Troggle</a> - the system framework
<li><a href="../troggle/otherscripts.html">Other scripts</a>
<li><a href="../troggle/serverconfig.html">Server configuration</a>
@ -43,7 +52,7 @@ This page is the overview. The online systems manuals are split into these secti
A fuller list of "How do I..." instruction pages are on <a href="../index.htm">the handbook opening page</a>. If you are new to this you may need a beer.
<hr />
<p>We have <a href="http://wookware.org/talks/expocomputer/#/">an Overview Presentation</a> (many parts out of date)
<p>We have <a href="wookey-slides.html">an Overview Presentation</a> (2015: many parts out of date)
on how the cave data,
handbook and public website are constructed and managed.
It contains material which will be merged into these online manuals.

View File

@ -22,7 +22,7 @@ have <a href="keyexchange.html">key-pair setup</a> already set up before any of
<p> Open a terminal in a new directory, e.g. /tmp/experiments/ in which you want to create the repo. It will automatically create a folder with the repo name e.g.'troggle' in that directory.
<dl>
<dt>expoweb (The website/data management system)</dt>
<dt>expoweb (The data management system) - this will fail until it is moved from hg to git</dt>
<dd>
<tt>git clone ssh://expo@expo.survex.com:/home/expo/expoweb</tt> (read/write)<br />
</dd>
@ -42,9 +42,6 @@ have <a href="keyexchange.html">key-pair setup</a> already set up before any of
<tt>git clone ssh://expo@expo.survex.com:/home/expo/drawings</tt> (read/write)<br />
</dd>
</dl>
<p>The repositories are browseable at <a href="http://expo.survex.com/repositories/">http://expo.survex.com/repositories/</a></p>
<h3><a id="gitwindows">Using git in Windows</a></h3>
@ -62,7 +59,7 @@ have <a href="keyexchange.html">key-pair setup</a> already set up before any of
<p><tt>git commit</tt> (you can specify filenames to be specific)</p>
<p>The first time you do this on a Windows machine it will probably not work as it does not recognise the server key exchange.
<p>The first time you do this on a Windows machineit will probably not work as it does not recognise the server key echnage.
Fix this by running putty (downloading it from <a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/">https://www.chiark.greenend.org.uk/~sgtatham/putty/</a>), and connecting to the server 'expo@expo.survex.com' (on port 22). Confirm that this is the right server.
If you succeed in getting a shell prompt then ssh connection are working and git should be able to clone the repo, and send changes back.</p>

View File

@ -9,24 +9,32 @@
<h2 id="tophead">CUCC Expedition Handbook - Online systems</h2>
<h1>Expo Data Maintenance - Regular tasks</h1>
<h2><a id="manual">Regular operations</a></h2>
<h2>Regular operations</h2>
<p>This page <i>is a checklist</i> who are helping the survey data reduction process during and after expo.
<p>This page <i>is a checklist</i> who are helping the survey data reduction process during and after expo.
<p>All of these things should be checked <em>every week</em> for a couple of months after expo, and then every couple of months. Then again when preparing for the new expo in May.
<h3>Data entry TO-DO list</h3>
<p>A user-editable online to-do list for data management is now <a href="todo-data.html">part of the expo online systems</a>. Review this regularly to see what needs doing, and please *delete* jobs that have been done.
<h3>Wallets and Surveyscans</h3>
<p>Run dos2unix to convert any uploaded Windows text files to the format expected by our software. e.g.
<pre><code>cd expofiles/surveyscans
<h4>2020#00</h4>
<p> The <b>#00</b> wallet directory (e.g. /2020/2020<b>#00</b>/ ) contains orphan files that have been found on the expo laptop in odd places, or have been scanned from bits of notebook found inside other documents. Keep an eye on it and re-file the contents as you discover what they are.
<h4>EOL</h4>
<p>Run dos2unix to convert any uploaded Windows text files to the format expected by our software. e.g. <pre><code>cd expofiles/surveyscans
find . -not -type d -exec file "{}" ";" | grep CRLF >crlf.txt
`awk -F: '// {print "dos2unix \"" $1 "\""}' crlf.txt`
</code></pre>
<p>Also a good idea to run on all of expofiles once every few years as many GPX
`awk -F: '// {print "dos2unix \"" $1 "\""}' crlf.txt`</code></pre>
<p>Also a good idea to run on all of expofiles once every few years as many GPX exports
from phones are a bit variable in how they do EOL characters.
<h3>Tunnel files (Drawings)</h3>
<h3>Survex files</h3>
<h3>Folk</h3>
<p>During prep. for the new expo the folklist will be updated with all the new people expected, but after expo the mugshots and blurb text for the new people will need to be added. See <a href="folkupdate.html">folkupdate</a> for the procedure.
<hr />
Annual tasks <a href="newyear.html">New expo year jobs</a>.
Return to the main <a href="manual.html">online systems manual</a>.

View File

@ -0,0 +1,386 @@
<!DOCTYPE html>
<html>
<head>
<title>Expo Systems - Data To-Do List</title>
<meta charset="utf-8">
<meta name="keywords" content="NOEDIT">
</head>
<body>
<script src="todo.js" defer></script>
<link rel="stylesheet" type="text/css" href="todo-styles.css" />
<h1>Data Updating To-Do List</h1>
<button onclick="window.location.href = 'todo-data.html_edit';">Edit this to-do list</button>
<!--
<button onclick="window.location.href = 'todo.html_edit';">Update this to-do list</button>
-->
<!--
<label for="toggle-1">Toggle visibility of all sub-items</label>
<input type="checkbox" id="toggle-1">
-->
<!-- ------------------- Don't touch anything above this line --------------------------->
<h2>How this works</h2>
<p><b>Click twice on a sub-heading to reveal</b> the individual to-do items. Click again to hide.<br />
If a heading is in italics, then there are hidden items.
<p><b>Click on the main "How this works" heading</b> to toggle reveal/hide <b>everything.</b>
<p>Printing this page uses a much smaller font. Complain to <a href="mailto:expo-tech@lists.wookware.org">the nerd list</a> if you don't like this behaviour.
<p>Edit this page by clicking on the big blue button. It uses the same "Edit this page" function that you may have used before. Just be careful not to touch the code at the top of the page.
<p>We are working on a more capable and easier-to-use system which will mimic how <a href="https://github.com/CaveSurveying/CUCCexposurveyissues/issues">GitHub Issues</a> do this sort of thing.
<h2>Cave Data Updating</h2>
<p>To see the "handbook updating" and "troggle/system" to-do lists, go to <a href="todo.html">the other TO-DO list</a>
<h3>Logbook fettling</h3>
<dl>
<dt>2019 Logbook</dt>
<dd>
transcribe the rest of those UKcaving blog entries into expoweb/years/2019/logbook.html</dd>
<dd><!--2020-04-03 psargent-->
copy the photos from the UKCaving blog into expofiles/photos/2019/<MyName>/ -- in fact many of those photos are already there</dd>
<dd><!--2020-04-03 psargent-->edit in the links to those photos in the right place in 2019/logbook.html</dd>
<dt>Garlic cave
<dd> edit logbook entries 2018, 2019 to link to extensive photos of Garlic cave area {Withnall 2018} , {Becka 2019}
<dt>Past logbooks - missing images?
<dd><!--2020-04-03 psargent-->Which previous years HTML logbooks are missing images extracted from scanned PDF copies of the logbooks?
<dt>2018 Logbook</dt>
<dd>Check Natalie Uomini's typed entries and extensive photos are minimized and linked in properly to the HTML logbook
<dt>Add missing images to logbooks</dt>
<dd>
2000, 2008, 2009, 2011</dd>
<dd>
fix corrupted image in 2001 log</dd>
<dt>2011 logbook:</dt>
<dd>type up via-ferrate & bolt-testing writeups (In paper book, not in scan or HTML)</dd>
<dt>200? logbook:</dt>
<dd>
Type up "list of GPS locations still to type"</dd>
</dl>
<h3>Tunneling to do</font></h3>
<dl>
<dt><!--2020-04-12 wookey-->1623/251</dt>
<dd>Put in tunnel plan instead of scan of drawn-up notes.</dd>
<dd>Draw up elevation (therion)</dd>
</dl>
<h3><font color="fuchsia">Tackle Store Records</font></h3>
<dl>
<dt>No authoritative list of where the expo paper records are!
<dd><!--2020-04-03 psargent-->NO expo paperwork at all prior to 2008 in Tackle Store - where is it ?
<dd><!--2020-04-03 psargent-->FIND where all the wallet binders are, and the logbooks.
< <dd><!--2020-04-03 psargent--> BUY A4 plastic boxes for filing cabinet for logbooks getting damp there.
<dd>2017, 2018, 2019 wallet binders are in Philip S.'s house.
</dl>
<h3><!--2020-04-17 psargent-->:expoweb:/1623/264/cavedescription2016<br><br> (All moved verbatim, now deleted)</h3>
<dl>
<dt>
tightyorkshireman
<dd>
person size phreatic tube, left passage emerges at pitch head, right passage becomes too tight.
<dt>
rabbitwarrens
<dd>
Sandy crabwalk turning into a tube parallel to main passage connecting to ein und zwanzig
<dt>
noserock2
<dd>
Pitch dropped round the corner from the pitch in noserock. Lots of
break-down and pitch ended in a choked chamber floor.
<dt>
northhole
<dd>
;Small grotty hole in the floor of eis koek aven, which connects through to the nearby large hole down to a circular ice floor.
<dt>
northhole2
<dd>
; continuing north from northhole, there is a series of freeclimbable avens going upward, the final survey station is at an awkward but not impassable squeeze. A handline would be very helpful in coming back down. There are also two connections to the frozen north, one is a tube at head height and the other is a small crawl at the start of the choss slope leading to the first aven climb.
<dt>
icecockLC1
<dd>
;linking icecock aven to the ice pit in north hole.
<dt>
icecock3
<dd>
;small sandy floored tube connecting the icecock bypass to the northhole passage
<dt>
gosserwager2
<dd>
linking the bottom of the pitch (name?) to the rift above gosser wager and the pitch down to it, continuing to a boulder choke.
<dt>
gosserwager3
<dd>
Rift passage heading South, with a 15m pitch at head. Clean walls, rubble floor. Leads to short down climb before more rift and another pitch series.
<dt>
frozennorth
<dd>
climb up between wall and block, aided by two bolts, to enter ice lake
chamber. Ahead is a large aven with snow slope entering. Just before
this is a small passage on the right. Climb up into this and follow
ice inlet until breaks out into large aven and trench area at station
12. To the south is/was unexplored, but later connected to rest of
cave. To left is small sanding tube to view into same trench system.
<dt>
frozennorth4
<dd>
left juction in frozennorth where there are sandy crawls, comes out on
a precarious ledge above a big hole. Traversing around this leads to a
medium sized sandy crawl sloping downwards to a huge chamber with a
pitch suspected to be the north end of lead 93B from the start of
expo2015 in turtlehead.
<dt>
frozennorth3:
<dd>
A rift passage that loops round and links 2 chambers, with possible leads at the end at station 5.
<dt>
darkartsiv:
<dd>
continuing A lead at south end of dark arts, went in then surveyed out but didn't make it all the way to connect up the surveys.
<dt>
cathedralLC2:
<dd>
Linking avalancheexperience to cathedralchasm without having to use the dodgy data in chamber90b survey
<dt>
cathedralchasm:
<dd>
really fucking huge chamber with many good leads. turns out it was already surveyed as chamber90b be Julian.
<dt>
catherdralchasm2
<dd>
Coming fdrom Cathedral Kazam a wet traverse across a pitch David
dropped a setter down. Passage continues to chamber with a loop coming
off to the left up and emerging at top of chamber en route. from
cahmber a rift goes off up right with main passgae continueing
straight. Also a small lead to left leads round to two small 5m pitchs
containg crystal formations. A traverse continues on with another
pitch. Taking the main route from the chamber a sandy passage leads
past three bat skeletons before becoming a crawl, eventually reaching
a junction. the larger passge to the left links back to the passge
near trident junction/ gear dump. This bypass is now the recommended
wat to reach cathedral kazam.
<dt>
bipedal:
<dd>
heading south out of amalgamation you arrive at a large long hole in the floor. Partial completion of traverse over hole, plus exploratin of two small side leads. Left over small rock bridge ends in blind pot. Right hand small passage soon becomes too tight.
<dt>
bipedalpassage5
<dd>
short pitch down to large aven chamber with vedose rift in floorway.
<dt>
hiltigalactica
<dd>
After dropping initial pitch (Deep Space 9) approx 25m in hilt-a-plenty.
After dropping initial pitch (Deep Space 9) approx 25m in hilt-a-plenty.
Long rocky chamber from bottom of pitch to next unexplored pitch.
Slope near end up left ends after short distance. Small side passage near
start on right continues to small sandy chamber with several leads.
From here archway leads onto bouldery ledge in side of very large chamber
to be explored.
</dl>
<h3><!--2020-04-19 psargent-->/expofiles/surveyscans/2017/2017notes.txt<br><br> (All moved verbatim, now deleted)</h3>
<dl>
<dt>258
<dd>
<pre>
import other 258 files:
pawpaw
notthebeast
To draw up!!!
258/whatwouldyourmothersay.svx needs drawing up from notes in 2016#27 (we missed it out)
</pre>
<dt>264
<dd>
<pre>264/doublescoop from notes in 2016#34
nothingtosee3: 264/wallet 2017#52 needs printing out and drawing up
dogendseries: 2017#42 notesplan
Need to find the snow symbol
How to make the jar file work again (and then update all copies in svn)
nothingtosee --> imported
sloppyseconds2 --> imported
naturecalls --> imported
created 264post2017b
created sloppysecondspart
Sync 2016#19 snowhole back to expo computer (as well as whole of 2017)
Rescan notes for 2017#50 (cropped)
queries:
2017#12. 264/nothingtosee ULSA distoX. Length calibration -0.05 ('tape too long'). Is that right?
2017#15 not_the_best elevation drawn, but not beastsideleads? Plans for bth
======================
To get the files here:
rsync -av expo@expo.survex.com:expofiles/surveyscans/2017/ /home/julian/data/expodata/expofiles/surveyscans/2017/
To copy a rendered survey up:
scp /home/julian/data/expodata/tunneldata/2017-09-28incomplete1.png expo@expo.survex.com:expofiles/surveys/
======================
tunnocks high level
not_the_beast 2017#15
rigormortis 2017#43
</pre>
<dt>tunnocks deep stuff
<dd>
<pre>
mastercave 2017#16 drawnin
gryke of the earth 2017#17
loserlido 2017#44
snakecharmer 2017#06
slackerstidyup 2017#05 background
raisinhell 2017#04
therestherub 2017#02 drawn
snakecharmer2 2017#31
snakecharmer3 2017#32
hipsterreturn 2017#35
lowersnakebite 2017#40
beckoningsilence 2017#41 drawnin
bahama 2017#45
</pre>
<dt>cathedralchasm offshoots
<dd>
<pre>
the_mendips 2017#18 !!!Missing folder!!! no drawing
mysterious_schlag 2017#19 is a pitch in cathedralchasm
pointless_dig 2017#20
naturecalls 2017#47 not tied in from bottom of Ash's pitch in cathedral chasm bit (have faked it)
</pre>
<dt>galactica area fuckups
<dd>
<pre>
sloppyseconds1 2017#01
galactica 2017#03
sloppyseconds2 2017#07
sloppyseconds 2017#42 dogendseries
secondhand 2017#49
missing bit 2017#52
nothingtosee 2017#12
nothing2see ??? lost wallet #24 centreline typed
nothingtosee3 2017#52 recovered
hilti_nts_bones_pitch 2017#21 -linked in now
hilti_nts_near_bats 2017#22 -linked in now
hilti_nts_near_start 2017#23
nothingtosee 2017#39
</pre>
<dt>surface crap
<dd>
<pre>
prospecting 2017#08
prospecting 2017#09
prospecting 2017#10
prospecting 2017#11
prospecting 2017#24 !!! not nothing2see as documented
watermelon 2017#28
kitten-helicopter 2017#33
prospecting 2017#34
</pre>
<dt>Fish Gesicht (2017-cucc-28)
<dd>
<pre>
fishface 2017#38
fishface 2017#46
windytube 2017#37
icytube 2017#48
fgh 2017#50
blitzen 2017#53
</pre>
<dt>GSH
<dd>
<pre>
gsh entrance 2017#25
gsh 2017#26
coulda 2017#27
gsh 2017#29
riftpiece 2017#30
</pre>
<dt>Bad Forecast (2017-pw-01)
<dd>
<pre>
gardeningshoots 2017#13
thirdentrance 2017#14
badforecast 2017#51
</pre>
</dl>
<h3><!--2020-04-17 psargent-->:expoweb:/1623/264/trident_to_little_boy.txt<br><br> (All moved verbatim, now deleted)</h3>
<dl>
<dt>
Cave: Balcony (Far Side to Deep Balcony)
<dd>
Trident is a four way junction- take the left fork to an alcove on the left with an obscure mud floored crawl. This is followed for 10m, improving to walking height. Follow past two bat skeletons then right turn to another bat; continue ~20m. A mud floored junction, turn right to the head of a traverse then pitch after 10m. Straight on would have led you to a noteworthy drippy pitch (Kathedral Chasm).
<dt>
----Honeycomb----
<dd>
The traverse to pitch is the beginning of Honeycomb (50m of pitches). This swings to a window, following the rope to a ledge 10m above the floor. From here there's a narrow popcorn-lined climb to the head of a 7m pitch. At the bottom, climb the slope and follow obvious continuation (draught) to the head of 12m pitch. This pitch lands at the top of Hangman (p30), on account of the huge hanging boulder. (The near side of the boulder descends to the way on to the top of Mongol Rally, whereas the far side of the boulder is rigged to swing into a window half way down, Myopia. This is a passage heading north, traversing around a large pit, leading to another pitch which could be traversed around, ?a.)
<dt>
----Nature Calls----
<dd>
At the bottom, follow the traverse round to a mudslope. At the top of the mudslope there is an awkward crawl for 10m, soon improves to walking. Follow this passage for 30m. There's a p5, follow the rope to the head of the Mongol Rally (p200).
<dt>
----Mongol Rally and Little Boy----
<dd>
Descending this rope lands into a roomy boulder chamber. Walking down the slope between boulders (distinguished path in the mud), leads to a blind pit and big aven. A right turn takes you to stooping height passage, for 50m to the head of Little Boy pitch (20m). There is a significant draught here; follow this. The camp is currently at the base of the pitch (August 2018).
<dt>
----Water collection----
<dd>
There are three exits to the chamber. <br>
1. a short crawl <br>
2. a climb down on the far side. <br>
Both lead to the same place and draught.
<br><br>
Leave on the far side of the chamber, via a climb down and turn right, climbing down a boulder into pleasent walking passage, very straight and heading north. The floor is soft wet mud. After ~100m a stream trench enters on the right, followed round a corner into a drippy aven. Collect water here, scoop (mug) advisable.
<br>
(Currently unconnected from Grand Prix)
<dt>
----One direction----
<dd>
A little further on from the right turn towards the water cllection, is a muddy ledge on the left hand side (1m from ground). Low crawl continues for 100m in straight line, over three puddles. Stal, but largely unnoteworthy. Ends at the Tsection into clean washed tall rift with sounds of water. Downhill leads to promising a lead, in clean washed rock, sketchy c6, requires rope, heads into rifty stuff. Uphill, includes split (meander) to scoopy loopy junction.
<dt>
----Scoopy Loopy----
<dd>
Scoop it until you loop it. Junction has small a lead on right hand wall, to sound of wet rift. Obvious way on cuts left, walking passage heading upwards until low crawl into breakdown chamber. A climb on the right links into Grand Prix.
<dt>
----Nothing to do with you traverse---- (ntdwyt)
<dd>
The passage towards the water collection is followed, beyond the turning for water. This leads to a pitch down (Indy Rally) or a traverse left. The traverse left goes ~10m, before muddy walking passage ~30m until it chokes.
<dt>
----Little boy beneath the boulders----
<dd>
A short 2m climb through a boulder choke leads to break down chamber directly below grand prix. Qmc at station 8, p10, probably drops level with station 6 (lbbeneaththeboulders).
<dt>
----Little boy bolt climbs----
<dd>
From the grand prix, left from little boy beneath the boulders is a large hanging boulder. Traverse along massive choked boulder on left hand side of grand prix. Not derigged. Climbs up steep mud slope into rift that shortly forks (station 4). P15 qmc down from here, leads probably to lbbeneaththeboulders. Sketchy rift climb qmc from here, dispute about seeing a human sized passage beyond here.
</dl>
<!-- ------------------- Do not touch anything below here either ------------------------>
<!--2020-03-26 Testing.. -->
<div id="demo">Demonstration text as initially read from disc</div>
<hr>
See also <a href="todo.html">System Maintenance to-do list</a><br />
Back to <a href="manual.html">Data Maintenance manual</a>
<hr /></body>
</html>

View File

@ -68,6 +68,8 @@ dd {
dd:before {
content: "» ";
font-weight: bold;
color: red;
}
/* Default State */
@ -99,6 +101,7 @@ input[type=checkbox]:checked ~ dl dd {
}
dt, p {
font: 1.0em Calibri, sanserif;
font-weight: bold;
}
dd {
font: 0.8em Calibri, sanserif;

View File

@ -4,159 +4,144 @@
<title>Expo Systems - To-Do List</title>
<meta charset="utf-8">
<meta name="keywords" content="NOEDIT">
</head>
<body>
<h1>Expo To-Do List</h1>
<link rel="stylesheet" type="text/css" href="todo-styles.css" />
<button onclick="window.location.href = 'todo.html_edit';">Edit this to-do list</button>
<!--
<button onclick="window.location.href = 'x-todo.html_edit';">Update this to-do list</button>
-->
<!--
<label for="toggle-1">Toggle visibility of all sub-items</label>
<input type="checkbox" id="toggle-1">
-->
<style>
body {
background: #fff url(/images/style/bg-system.png) repeat-x 0 0
}
/* Use grey for system/programming/nerd pages as a visual reminder */
</style>
<script src="todo.js" defer></script>
<link rel="stylesheet" type="text/css" href="todo-styles.css" />
<h1>Expo Systems To-Do List</h1>
<button onclick="window.location.href = 'todo.html_edit';">Edit this to-do list</button>
<!-- ------------------- Don't touch anything above this line --------------------------->
<h2>How this works</h2>
<p><b>Click on a sub-heading to reveal</b> the individual to-do items. Click again to hide.<br />
<p><b>Click twice on a sub-heading to reveal</b> the individual to-do items. Click again to hide.<br />
If a heading is in italics, then there are hidden items.
<p><b>Click on the main "How this works" heading</b> to toggle reveal/hide <b>everything.</b>
<p>Printing this page uses a much smaller font. Complain to <a href="mailto:expo-tech@lists.wookware.org">the nerd list</a> if you don't like this behaviour.
<p>Edit this page by clicking on the big blue button. It uses the same "Edit this page" function that you may have used before. Just be careful not to touch the code at the top and bottom of the page.
<p>We are working on a more capable and easier-to-use system (see <a href="x-todo.html">x-todo.html</a>) which will mimic how <a href="https://github.com/CaveSurveying/CUCCexposurveyissues/issues">GitHub Issues</a> do this sort of thing.
<p>We are working on a more capable and easier-to-use system which will mimic how <a href="https://github.com/CaveSurveying/CUCCexposurveyissues/issues">GitHub Issues</a> do this sort of thing.
<p>To see the "data maintenance" and "survey data-entry" to-do lists, go to <a href="todo-data.html">the other TO-DO list</a>
<h3>Process Documentation</h3>
<dl>
<dt><!--2020-03-26 psargent-->Wallets and new-cave</dt>
<dd><!--2020-03-26 psargent-->Explain (in the wallets process) how to view the surveys
online so that <br>&nbsp;&nbsp;(1) you can see an example of how to do your new one,
and <br>&nbsp;&nbsp;(2) so that you can check that you have done it properly when you
have finished.</dd>
<dd><!--2020-03-26 psargent-->Explain how to link a new cave into the other caves in
troggle filesystem</dd>
<dd><!--2020-03-26 psargent-->Explain how to add photos with the correct URL format to sub-HTML files attached to New Caves</dd>
<dd><!--2020-03-26 psargent-->Explain (in the wallets process) how to view the surveys
online so that <br>&nbsp;&nbsp;(1) you can see an example of how to do your new one,
and <br>&nbsp;&nbsp;(2) so that you can check that you have done it properly when you
have finished.</dd>
<dd><!--2020-03-26 psargent-->Explain how to link a new cave into the other caves in
troggle filesystem</dd>
<dd><!--2020-03-26 psargent-->Explain how to add photos with the correct URL format to sub-HTML files attached to New Caves</dd>
<dt><!--2020-04-13 psargent-->svx check</dt>
<dd>explain command line to run on newly typed survex file to check for format errors '$cavern xxxx.svx'
<dd>explain when to use svxtrace.py <a href="troggle/scriptscurrent.html">current scripts</a>
<dd>explain when to use svxtrace.py <a href="troggle/scriptscurrent.html">current scripts</a>
<dd>Making an svx - explain how to make link to *ref to wallet folder
<dd>explain how to put stuff in the wallet folder and how to look at expofiles/photos/xml/
<dd>Add to user data manual how to upload to expofiles - in the "survey manual"
<dd>Add in description of *where* to put the drawings files
<dt><!--2020-04-13 psargent-->QMs check</dt>
<dd>explain when to use svx2qm.py -> qms.csv-> tablize-qms.pl <a href="troggle/scriptscurrent.html">current scripts</a>
<dd>explain when to use find-dead-qms.py and qmreader.pl <a href="troggle/scriptscurrent.html">current scripts</a>
<dd>explain when to use svx2qm.py -> qms.csv-> tablize-qms.pl <a href="troggle/scriptscurrent.html">current scripts</a>
<dd>explain when to use find-dead-qms.py and qmreader.pl <a href="troggle/scriptscurrent.html">current scripts</a>
</dl>
<h3>Surveys data entry</h3>
<dl>
<dt><!--2020-04-13 psargent-->QMs check</dt>
<dd>Collect together the old "to do" and "readme" notes and put them in a standard place: expoweb/[year]/TODO.html(with self-edit instructionslike this page)
<dt>Write code to automatically extract ref info about wallets from tunnel xml files
<dd><!--2020-04-03 psargent-->This will replace :drawings:chk-xml.txt as used by :drawings:check-xml.sh
<dd><!--2020-04-03 psargent-->Do similar for Therion files when people start using #REF comments
<dt><!--2020-03-26 psargent-->2019 surveyscans
<dd><!--2020-03-26 psargent-->edit all the content.json</dd>
<dd><!--2020-03-26 psargent-->try to autocomplete the content.json by parsing .svx files</dd>
<dd><!--2020-03-26 psargent-->Put personal names into canonical form</dd>
<dt>2014 contents.json
<dd><!--2020-04-03 psargent-->parse all the svx files to extract people, dates & svx references
</dl>
<h3>Logbook fettling</h3>
<dl>
<dt>2019 Logbook</dt>
<dd>
transcribe the rest of those UKcaving blog entries into expoweb/years/2019/logbook.html</dd>
<dd><!--2020-04-03 psargent-->
copy the photos from the UKCaving blog into expofiles/photos/2019/<MyName>/ -- in fact many of those photos are already there</dd>
<dd><!--2020-04-03 psargent-->edit in the links to those photos in the right place in 2019/logbook.html</dd>
<dt>Garlic cave
<dd> edit logbook entries 2018, 2019 to link to extensive photos of Garlic cave area {Withnall 2018} , {Becka 2019}
<dt>Past logbooks - missing images?
<dd><!--2020-04-03 psargent-->Which previous years HTML logbooks are missing images extracted from scanned PDF copies of the logbooks?
<dt>imagemagick convert
<dd><!--2020-04-03 psargent-->Not working for PDFs on current version of xubuntu ! Fix & document. Also not working on WSL ubuntu. Needed to work with logbook images easily.
<dt>2018 Logbook</dt>
<dd>Check Natalie Uomini's typed entries and extensive photos are minimized and linked in properly to the HTML logbook
<dt>Add missing images to logbooks</dt>
<dd>
2000, 2008, 2009, 2011</dd>
<dd>
fix corrupted image in 2001 log</dd>
<dt>2011 logbook:</dt>
<dd>type up via-ferrate & bolt-testing writeups (In paper book, not in scan or HTML)</dd>
<dt>200? logbook:</dt>
<dd>
Type up "list of GPS locations still to type"</dd>
</dl>
<h3>Handbook</h3>
<dl>
<dt><!--2020-04-11 psargent-->Desperately needs Navigation - Location Context, Situational Awareness
<dd><!--2020-04-11 psargent-->No overall view of what there is: need a user-friendly diagrammatic overview <a href="https://en.wikipedia.org/wiki/Site_map">sitemap</a>. There are 4,869 files in :expoweb:</dd>
<dd><!--2020-04-11 psargent-->Not fixed by menus - breadcrumbs needed?</dd>
<dd><!--2020-04-11 psargent-->Diagrams of major sections: survey handbook, rigging handbook, computing handbook, Areas, cave data..</dd>
<dd><!--2020-04-11 psargent-->Chase Airoa to help fix <a href="../troggle/menudesign.html">the menus for phones</a></dd>
<dd><!--2020-04-11 psargent-->Look at <a href="https://www.gov.uk/guidance/government-design-principles">gov.uk guidelines</a> for inspiration</dd>
<dd><!--2020-04-11 psargent-->No overall view of what there is: need a user-friendly diagrammatic overview <a href="https://en.wikipedia.org/wiki/Site_map">sitemap</a>. There are 4,869 files in :expoweb:</dd>
<dd><!--2020-04-11 psargent-->Not fixed by menus - breadcrumbs needed?</dd>
<dd><!--2020-04-11 psargent-->Diagrams of major sections: survey handbook, rigging handbook, computing handbook, Areas, cave data..</dd>
<dd><!--2020-04-11 psargent-->Chase Airoa to help fix <a href="../troggle/menudesign.html">the menus for phones</a></dd>
<dd><!--2020-04-11 psargent-->Look at <a href="https://www.gov.uk/guidance/government-design-principles">gov.uk guidelines</a> for inspiration</dd>
<dt><!--2020-04-11 psargent-->When git migration done
<dd>Edit out all mercurial
<dd>Split the TortoiseHg/PuTTy documentationa nd retain only PuTTy
<dt><!--2020-04-11 psargent-->Wookey Overview presentation
<dd>extract content from <a href="http://wookware.org/talks/expocomputer/#/10">Troggle</a> which does not render properly and extract the HTML not in slide format - correcting things now outdated.
<dt><!-- 2020-04-11 psargent -->NOEDIT flag
<dd><!-- 2020-04-11 psargent -->When editing multiple pages (using git), describe how this is implemented using &lt;meta name="keywords" content="NOEDIT"&gt;
<dt>Editing Logbooks
<dd><!--2020-04-20 psargent-->DOCUMENT how to pout the "cave" or "locatoion" into the logbook entry title
<dd><!--2020-04-20 psargent-->add the triptitle "location - " to logbook template (example) file (where?)
</dl>
<h3>Photos</h3>
<dl>
<dt><!--2020-04-03 psargent-->Fix the BINS package
<dd><!--2020-04-03 psargent-->set up git on the BINS software? Fix base url sautret.org</dd>
<dd><!--2020-04-03 psargent-->set up a cron / Makefile job to run BINS</dd>
<dd><!--2020-04-03 psargent-->why is 'updatephotos' script in expofiles? </dd>
<dd>Document the ~expo/webphotos/ directory and how it works
<dd>Why does expofiles/photos/xml/ get created containing all the generated xml files? Fix this.
<dd><!--2020-04-03 psargent-->set up git on the BINS software? Fix base url sautret.org</dd>
<dd><!--2020-04-03 psargent-->set up a cron / Makefile job to run BINS</dd>
<dd><!--2020-04-03 psargent-->why is 'updatephotos' script in expofiles? </dd>
<dd>Document the ~expo/webphotos/ directory and how it works
<dd>Why does expofiles/photos/xml/ get created containing all the generated xml files? Fix this.
<dt>galley thumbs etc.
<dd>:expoweb:/galley/0.htm thumbnails not loading
</dl>
<h3>Surveys data entry documentation</h3>
<dl>
<dt><!--2020-04-13 psargent-->QMs check</dt>
<dd>3 ways to do it: archaic (as in databaseRest, new troggle & the Withnall script)
<dt>Write code to automatically extract ref info about wallets from tunnel xml files
<dd><!--2020-04-03 psargent-->This will replace :drawings:chk-xml.txt as used by :drawings:check-xml.sh
<dd><!--2020-04-03 psargent-->Do similar for Therion files when people start using #REF comments
<dt><!--2020-03-26 psargent-->2019 surveyscans
<dd><!--2020-03-26 psargent-->edit all the content.json</dd>
<dd><!--2020-03-26 psargent-->try to autocomplete the content.json by parsing .svx files</dd>
<dd><!--2020-03-26 psargent-->Put personal names into canonical form</dd>
<dt>2014 contents.json
<dd><!--2020-04-03 psargent-->parse all the svx files to extract people, dates & svx references
</dl>
<h3>Laptop config.</h3>
<dl>
<dt><!-- 2020-04-11 psargent --> imagemagick convert
<dd><!--2020-04-03 psargent-->Not working for PDFs on current version of xubuntu ! Fix & document. Also not working on WSL ubuntu. Needed to work with logbook images easily & to extract PDFs, JPEGs. Need to edit /etc/ImageMagick-6/policy.xml
<a href="https://cromwell-intl.com/open-source/pdf-not-authorized.html">cromwell-intl.com/open-source/pdf-not-authorized.html</a>
</dl>
<h3>System Documentation</h3>
<dl><!-- 2020-04-11 psargent -->
<dt><!--2020-04-11 psargent-->Document how we generate the SMK overall lengths and stats</dt>
<dd><!--2020-04-11 psargent-->scripts and manual actions in cavern
<dd><!--2020-04-20 psargent-->scripts and manual actions in cavern
<dd>smklengths.sh script
<dd>smklengsths.odt
<dt><!--2020-04-20 psargent-->:loser:/docs/ files
<dd>Questions.txt
<dd>SMKlog.txt
<dt><!--2020-04-20 psargent-->"other scripts" - DOCUMENT
<dd>finish writing notes on files already identified
<dt><!--2020-03-26 psargent-->Troggle architecture</dt>
<dd><!--2020-03-26 psargent-->Handbook: add more to the new troggle architecture documentation. For future system maintainers</dd>
<dd><!--2020-04-10 psargent-->Regenerate the diagram of the tables in the database & document</dd>
<dd><!--2020-04-10 psargent-->Describe the parsing/import procedures so non-nerds can do it</dd>
<dd><!--2020-03-26 psargent-->Copy [some of] the .wiki material into the documentation somewhere</dd>
<dd><!--2020-03-26 psargent-->Handbook: add more to the new troggle architecture documentation. For future system maintainers</dd>
<dd><!--2020-04-10 psargent-->Regenerate the diagram of the tables in the database & document</dd>
<dd><!--2020-04-10 psargent-->Describe the parsing/import procedures so non-nerds can do it</dd>
<dd><!--2020-03-26 psargent-->Copy [some of] the .wiki material into the documentation somewhere</dd>
<dt><!--2020-03-26 psargent-->Surveyscans</dt>
<dd><!--2020-03-26 psargent-->explain where the image files are referenced from: svx, tunnel/therion, and </dd>
<dd>why there are so many broken links</dd>
<dt>Apache & MySQL configuration
<dd><!--2020-04-03 psargent-->DOCUMENT How to set up a server
<dd><!--2020-04-10 psargent-->Explain why Docker containers can be a maintenance nightmare
<dd><!--2020-03-26 psargent-->explain where the image files are referenced from: svx, tunnel/therion, and </dd>
<dd>why there are so many broken links</dd>
<dt>non-troggle scripts
<dd><!--2020-04-03 psargent-->DOCUMENT them all - have we got <a href="../troggle/otherscripts.html">a full list</a>?
<dd><!--2020-04-03 psargent-->DOCUMENT them all - have we got <a href="../troggle/otherscripts.html">a full list</a>?
</dl>
@ -164,294 +149,81 @@ If a heading is in italics, then there are hidden items.
<h3>Troggle</h3>
<dl>
<dt>Better import error messages
<dd><!--2020-04-03 psargent-->REPORT if import surveyscan file failure
<dd><!--2020-04-03 psargent-->Why are so many surveyscan foolder missing after import?
<dd><!--2020-04-03 psargent-->WHY are total lengths of surveyed cave different between expo server and WSL server for 2019 and a few other years only ?
<dt><!-- 2020-04-11 psargent -->NOEDIT flag
<dd><!-- 2020-04-11 psargent -->Describe how this is implemented using &lt;meta name="keywords" content="NOEDIT"&gt;
<dd><!--2020-04-03 psargent-->REPORT if import surveyscan file failure into database error log
<dd><!--2020-04-20 psargent-->REPORT 'folder not recognised' errors into error log inside database
<dd><!--2020-04-03 psargent-->WHY are total lengths of surveyed cave different between expo server and WSL server for 2019 and a few other years only ?
<dd><!--2020-04-20 psargent-->DEBUG - too many messages - reduce the number unless we need them
<dd><!--2020-04-20 psargent-->Why is "kataster' not found ?!
<dd><!--2020-04-20 psargent-->What is "GPS "not parsed in survex" mean
<dt>Test import when:
<dd><!--2020-04-20 psargent-->no profile logging .json file present
<dt><!-- 2020-04-11 psargent -->Troggle Menus
<dd>Explain how FLATPAGES work
<dd><!-- 2020-04-11 psargent -->NOEDIT flag Describe how this is implemented using &lt;meta name="keywords" content="NOEDIT"&gt; e.g. for auto-generated pages such as folk script
<dt>Logbook data model: unfilled fields?
<dd><!--2020-04-03 psargent-->'cave' of location field missing on nearly all logbook entroies. Missing from logbook templates. Where is this used and how can we fill it it in? Is it useful?
</dl>
<dt>Logbook data model: unfilled fields?
<dd><!--2020-04-03 psargent-->'cave' of location field missing on nearly all logbook entries. Missing from logbook templates. Fill in manually for pre-2017 logbooks.
</dl>
<h3>Expo Server</h3>
<dl>
<dt><!--2020-03-26 psargent--> document directory structure
<dd><!--2020-04-03 psargent-->as per Julian's GitHub list - then close that issue</dd>
<dt>Makefile
<dd>Get it working !
<dd><!--2020-04-03 psargent-->as per Julian's GitHub list - then close that issue</dd>
<dt>permissions
<dd><!--2020-04-03 psargent-->do we need a cron job or has the group membership fix fixed it ? either way, document it.
<dd><!--2020-04-03 psargent-->Makefile - and permissions.
<dd><!--2020-04-03 psargent-->do we need a cron job or has the group membership fix fixed it ? either way, document it.
</dd>
<dt>Apache & MySQL configuration
<dd><!--2020-04-03 psargent-->DOCUMENT How to set up a server
<dd><!--2020-04-10 psargent-->Fix and document permissions for cron jobs
<dd><!--2020-04-10 psargent-->Explain why Docker containers can be a maintenance nightmare
</dl>
<h3><font color="fuchsia">Tackle Store Records</font></h3>
<dl>
<dt>No authoritative list of where the expo paper records are!
<dd><!--2020-04-03 psargent-->NO expo paperwork at all prior to 2008 in Tackle Store - where is it ?
<dd><!--2020-04-03 psargent-->FIND where all the wallet binders are, and the logbooks.
< <dd><!--2020-04-03 psargent--> BUY A4 plastic boxes for filing cabinet for logbooks getting damp there.
<dd>2017, 2018, 2019 wallet binders are in Philip S.'s house.
</dl>
<h3>
<font color="fuchsia">This to-do-list gadget itself</font>
<font color="fuchsia">This to-do-list gadget itself</font>
</h3>
<dl>
<dt>Status
<dd>Try the <a href="x-todo.html"><em>Experimental</em> to-do list</a> - no extra display capabilities yet.
<dd>Fix the "click twice" on startup. Make it only click once to change display state of the DT tag
<dt>Status
<dd>Make it only click once to change display state of the DT tag
<dt><!--2020-03-26 psargent-->Eventual aim
<dd><!--2020-03-26 psargent-->to replace GitHub <a href="https://github.com/CaveSurveying/CUCCexposurveyissues/issues">
CUCCexposurveyissues</a> for non-tunnel, non-GIS issues.</dd>
<dd><!--2020-03-26 psargent-->We need two of these: <br>1.for expo systems work (troggle & scripts) - the current priority as we have nowhere currently that Wookey is willing to use
<br>2.for survey data progress/issues (though troggle itself can be used for some of this if cleaned up a bit)
</dd>
<dd><!--2020-03-26 psargent-->to replace GitHub <a href="https://github.com/CaveSurveying/CUCCexposurveyissues/issues">
CUCCexposurveyissues</a> for non-tunnel, non-GIS issues.</dd>
<dt><!--2020-03-26 psargent-->Try to automate simple functions in javascript
<dd><!--2020-03-26 psargent-->to control this document
in-place (tick, delete) instead of using the <a
href="https://www.tiny.cloud/docs/general-configuration-guide/use-tinymce-inline/">
tinymce</a> HTML editor in Django</dd>
<dd><!--2020-03-26 psargent-->Maybe restructure whole page as JSON and use
javascript editor to create (edit), re-order and demote items. </dd>
<dd><!--2020-03-26 psargent-->if using tinymcs, use the INLINE mode. </dd>
<dd><!--2020-03-26 psargent-->Implement comments on an issue, mimicking GitHub issues wiki</dd>
<dd><!--2020-03-26 psargent-->Use javascript to skip over the _edit page and submit changes
direct to server when updating. Needs direct POST and include the javascript in the posted content.</dd>
<dd><!--2020-03-26 psargent-->checkboxes so that items can be ticked (which also does strike-through)</dd>
<dd><!--2020-04-03 psargent-->promotion/demotion options?</dd>
<dd><!--2020-03-26 psargent-->bin icon to delete an item? Better to have an archive process.</dd>
<dd><!--2020-03-26 psargent-->to control this document
in-place (tick, delete) instead of using the <a
href="https://www.tiny.cloud/docs/general-configuration-guide/use-tinymce-inline/">
tinymce</a> HTML editor in Django</dd>
<dd><!--2020-03-26 psargent-->Maybe restructure whole page as JSON and use
javascript editor to create (edit), re-order and demote items. </dd>
<dd><!--2020-03-26 psargent-->if using tinymcs, use the INLINE mode. </dd>
<dd><!--2020-03-26 psargent-->Implement comments on an issue, mimicking GitHub issues wiki</dd>
<dd><!--2020-03-26 psargent-->Use javascript to skip over the _edit page and submit changes
direct to server when updating. Needs direct POST and include the javascript in the posted content.</dd>
<dd><!--2020-03-26 psargent-->checkboxes so that items can be ticked (which also does strike-through)</dd>
<dd><!--2020-04-03 psargent-->promotion/demotion options?</dd>
<dd><!--2020-03-26 psargent-->bin icon to delete an item? Better to have an archive process.</dd>
<dt>Local WSL server
<dd><!--2020-04-03 psargent-->Why is it using recuced-capability tinymce, a paths problem ?
<dd><!--2020-04-03 psargent-->Why is it using recuced-capability tinymce, a paths problem ?
<dt>Italics management
<dd><!--2020-04-03 psargent-->Hide ALL DD if any Heading clicked.
<dd><!--2020-04-03 psargent-->Put DL into italics when *any* DD is hidden
</dl>
<h3>Cave Updating</h3>
<dl>
<dt><!--2020-04-12 wookey-->1623/251</dt>
<dd>Put in tunnel plan instead of scan of drawn-up notes.</dd>
<dd>Draw up elevation (therion)</dd>
<dt><!--2020-04-17 psargent-->All copied verbatim from :expoweb:/1623/264/cavedescription2016<br> which has now been deleted.
<dd><pre>
tightyorkshireman
person size phreatic tube, left passage emerges at pitch head, right passage becomes too tight.
rabbitwarrens
Sandy crabwalk turning into a tube parallel to main passage connecting to ein und zwanzig
noserock2
Pitch dropped round the corner from the pitch in noserock. Lots of
break-down and pitch ended in a choked chamber floor.
northhole
;Small grotty hole in the floor of eis koek aven, which connects through to the nearby large hole down to a circular ice floor.
northhole2
; continuing north from northhole, there is a series of freeclimbable avens going upward, the final survey station is at an awkward but not impassable squeeze. A handline would be very helpful in coming back down. There are also two connections to the frozen north, one is a tube at head height and the other is a small crawl at the start of the choss slope leading to the first aven climb.
icecockLC1
;linking icecock aven to the ice pit in north hole.
icecock3
;small sandy floored tube connecting the icecock bypass to the northhole passage
gosserwager2
linking the bottom of the pitch (name?) to the rift above gosser wager and the pitch down to it, continuing to a boulder choke.
gosserwager3
Rift passage heading South, with a 15m pitch at head. Clean walls, rubble floor. Leads to short down climb before more rift and another pitch series.
frozennorth
climb up between wall and block, aided by two bolts, to enter ice lake
chamber. Ahead is a large aven with snow slope entering. Just before
this is a small passage on the right. Climb up into this and follow
ice inlet until breaks out into large aven and trench area at station
12. To the south is/was unexplored, but later connected to rest of
cave. To left is small sanding tube to view into same trench system.
frozennorth4
left juction in frozennorth where there are sandy crawls, comes out on
a precarious ledge above a big hole. Traversing around this leads to a
medium sized sandy crawl sloping downwards to a huge chamber with a
pitch suspected to be the north end of lead 93B from the start of
expo2015 in turtlehead.
frozennorth3:
A rift passage that loops round and links 2 chambers, with possible leads at the end at station 5.
darkartsiv:
continuing A lead at south end of dark arts, went in then surveyed out but didn't make it all the way to connect up the surveys.
cathedralLC2:
Linking avalancheexperience to cathedralchasm without having to use the dodgy data in chamber90b survey
cathedralchasm:
really fucking huge chamber with many good leads. turns out it was already surveyed as chamber90b be Julian.
catherdralchasm2
Coming fdrom Cathedral Kazam a wet traverse across a pitch David
dropped a setter down. Passage continues to chamber with a loop coming
off to the left up and emerging at top of chamber en route. from
cahmber a rift goes off up right with main passgae continueing
straight. Also a small lead to left leads round to two small 5m pitchs
containg crystal formations. A traverse continues on with another
pitch. Taking the main route from the chamber a sandy passage leads
past three bat skeletons before becoming a crawl, eventually reaching
a junction. the larger passge to the left links back to the passge
near trident junction/ gear dump. This bypass is now the recommended
wat to reach cathedral kazam.
bipedal:
heading south out of amalgamation you arrive at a large long hole in the floor. Partial completion of traverse over hole, plus exploratin of two small side leads. Left over small rock bridge ends in blind pot. Right hand small passage soon becomes too tight.
bipedalpassage5
short pitch down to large aven chamber with vedose rift in floorway.
hiltigalactica
After dropping initial pitch (Deep Space 9) approx 25m in hilt-a-plenty.
Long rocky chamber from bottom of pitch to next unexplored pitch.
Slope near end up left ends after short distance. Small side passage near
start on right continues to small sandy chamber with several leads.
From here archway leads onto bouldery ledge in side of very large chamber
to be explored.
</pre>
</dd>
<dt><!--2020-04-17 psargent-->All copied verbatim from :expoweb:/1623/264/trident_to_little_boy.txt<br> which has now been deleted.
<dd><pre>
Cave: Balcony (Far Side to Deep Balcony)
Trident is a four way junction- take the left fork to an alcove on the left with an obscure mud floored crawl. This is followed for 10m, improving to walking height. Follow past two bat skeletons then right turn to another bat; continue ~20m. A mud floored junction, turn right to the head of a traverse then pitch after 10m. Straight on would have led you to a noteworthy drippy pitch (Kathedral Chasm).
----Honeycomb----
The traverse to pitch is the beginning of Honeycomb (50m of pitches). This swings to a window, following the rope to a ledge 10m above the floor. From here there's a narrow popcorn-lined climb to the head of a 7m pitch. At the bottom, climb the slope and follow obvious continuation (draught) to the head of 12m pitch. This pitch lands at the top of Hangman (p30), on account of the huge hanging boulder. (The near side of the boulder descends to the way on to the top of Mongol Rally, whereas the far side of the boulder is rigged to swing into a window half way down, Myopia. This is a passage heading north, traversing around a large pit, leading to another pitch which could be traversed around, ?a.)
----Nature Calls----
At the bottom, follow the traverse round to a mudslope. At the top of the mudslope there is an awkward crawl for 10m, soon improves to walking. Follow this passage for 30m. There's a p5, follow the rope to the head of the Mongol Rally (p200).
----Mongol Rally and Little Boy----
Descending this rope lands into a roomy boulder chamber. Walking down the slope between boulders (distinguished path in the mud), leads to a blind pit and big aven. A right turn takes you to stooping height passage, for 50m to the head of Little Boy pitch (20m). There is a significant draught here; follow this. The camp is currently at the base of the pitch (August 2018).
----Water collection----
There are three exits to the chamber.
1. a short crawl
2. a climb down on the far side.
Both lead to the same place and draught.
Leave on the far side of the chamber, via a climb down and turn right, climbing down a boulder into pleasent walking passage, very straight and heading north. The floor is soft wet mud. After ~100m a stream trench enters on the right, followed round a corner into a drippy aven. Collect water here, scoop (mug) advisable.
(Currently unconnected from Grand Prix)
----One direction----
A little further on from the right turn towards the water cllection, is a muddy ledge on the left hand side (1m from ground). Low crawl continues for 100m in straight line, over three puddles. Stal, but largely unnoteworthy. Ends at the Tsection into clean washed tall rift with sounds of water. Downhill leads to promising a lead, in clean washed rock, sketchy c6, requires rope, heads into rifty stuff. Uphill, includes split (meander) to scoopy loopy junction.
----Scoopy Loopy----
Scoop it until you loop it. Junction has small a lead on right hand wall, to sound of wet rift. Obvious way on cuts left, walking passage heading upwards until low crawl into breakdown chamber. A climb on the right links into Grand Prix.
----Nothing to do with you traverse---- (ntdwyt)
The passage towards the water collection is followed, beyond the turning for water. This leads to a pitch down (Indy Rally) or a traverse left. The traverse left goes ~10m, before muddy walking passage ~30m until it chokes.
----Little boy beneath the boulders----
A short 2m climb through a boulder choke leads to break down chamber directly below grand prix. Qmc at station 8, p10, probably drops level with station 6 (lbbeneaththeboulders).
----Little boy bolt climbs----
From the grand prix, left from little boy beneath the boulders is a large hanging boulder. Traverse along massive choked boulder on left hand side of grand prix. Not derigged. Climbs up steep mud slope into rift that shortly forks (station 4). P15 qmc down from here, leads probably to lbbeneaththeboulders. Sketchy rift climb qmc from here, dispute about seeing a human sized passage beyond here.
</pre>
<dd><!--2020-04-03 psargent-->Put DL into italics when *any* DD is hidden
</dl>
<hr>
<!-- ------------------- Do not touch anything below here either ------------------------>
<!--2020-03-26--> Testing area..
<div id="demo">Demonstation text as initially read from disc</div>
<script>
document.getElementById("demo").innerHTML = "Demonstation innerHTML change CONFIRMED";
</script>
<!--Bother. The DOM is not carried across to the _edit page. It looks like the _edit page just re-reads
the original file from disc. So storing changes done by js will mean working directly with the POST action and a form. -->
<script>
// TO DO - make the <dt> italic when any of the <dd> following it are hidden.
<hr>
See also <a href="todo-data.html">Data maintenance to-do list</a><br />
Back to <a href="onlinesystems.html">Online Systems manual</a>
// Set up the click handlers:
var itemlist = document.getElementsByTagName('dd');
for (i = 0; i < itemlist.length; i++) {
itemlist[i].onclick = hideable;
}
var itemlist = document.getElementsByTagName('dt');
for (i = 0; i < itemlist.length; i++) {
itemlist[i].onclick = showable;
}
function showable () {
// When clicking on a <dt> item, show or not all the following <dd> elements
if (this.style.fontStyle != "italic") {
this.style.fontStyle = "italic";
} else {
this.style.fontStyle = "normal";
}
var ddO = this.nextElementSibling;
while((ddO !== null) && (ddO.nodeName.toLowerCase() == 'dd')){
if (this.style.fontStyle != "normal") {
ddO.style.display = 'none';
} else {
ddO.style.display = 'block';
}
ddO = ddO.nextElementSibling;
}
}
function hideable () {
// When clicking on a <dd> item, show or not itself
var x = this;
if (x.style.display != "block") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
function h2toggle () {
// When clicking on a <h2> item, toggle the display of absolutely everything
var itemlist = document.getElementsByTagName('dd');
for (i = 0; i < itemlist.length; i++) {
x = itemlist[i]
if (x.style.display != "block") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
var dtlist = document.getElementsByTagName('dt');
for (i = 0; i < dtlist.length; i++) {
x = dtlist[i]
if (x.style.fontStyle != "normal") {
x.style.fontStyle = "normal";
} else {
x.style.fontStyle = "italic";
}
}
}
</script>
<hr /></body>
</html>

View File

@ -0,0 +1,71 @@
document.getElementById("demo").innerHTML = "<span style='color: lime'>Script working CONFIRMED</span>";
// TO DO - make the <dt> italic when any of the <dd> following it are hidden.
// Set up the click handlers:
var itemlist = document.getElementsByTagName('dd');
for (i = 0; i < itemlist.length; i++) {
itemlist[i].onclick = hideable;
}
var itemlist = document.getElementsByTagName('dt');
for (i = 0; i < itemlist.length; i++) {
itemlist[i].onclick = showable;
}
var itemlist = document.getElementsByTagName('h2');
for (i = 0; i < itemlist.length; i++) {
itemlist[i].onclick = h2toggle;
}
function showable () {
// When clicking on a <dt> item, show or not all the following <dd> elements
if (this.style.fontStyle != "italic") {
this.style.fontStyle = "italic";
} else {
this.style.fontStyle = "normal";
}
var ddO = this.nextElementSibling;
while((ddO !== null) && (ddO.nodeName.toLowerCase() == 'dd')){
if (this.style.fontStyle != "normal") {
ddO.style.display = 'none';
} else {
ddO.style.display = 'block';
}
ddO = ddO.nextElementSibling;
}
}
function hideable () {
// When clicking on a <dd> item, show or not itself
var x = this;
if (x.style.display != "block") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
function h2toggle () {
// When clicking on a <h2> item, toggle the display of absolutely everything
var itemlist = document.getElementsByTagName('dd');
for (i = 0; i < itemlist.length; i++) {
x = itemlist[i]
if (x.style.display != "block") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
var dtlist = document.getElementsByTagName('dt');
for (i = 0; i < dtlist.length; i++) {
x = dtlist[i]
if (x.style.fontStyle != "normal") {
x.style.fontStyle = "normal";
} else {
x.style.fontStyle = "italic";
}
}
}

View File

@ -0,0 +1,119 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CUCC Website - Platform portability</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<h2 id="tophead">CUCC Expedition Handbook - Online overview</h2>
<h1>Platform portability - Oct.2006</h1>
<p>[This is an archive page. It significantly pre-dates troggle.]
<p>
<img alt="What browser do you want to use ?" width=360 src="browsers-icons.jpg">
<p>The maintainers of the CUCC website are acutely sensitive to the
difficulties of our users on a variety of platforms. Indeed, most of the
editing is done on an Acorn platform (using !Zap), the website on cucc.survex.com
is served from an OpenBSD server, and pages are most commonly viewed on an
expedition PC running some shade of Linux or Windows (and now we have at least one
Linux Laptop). On the plateau, the pages live on a Psion. Pages may come from
local disc, flashcard, CD or over a network from a server which may (or may
not) be running Apache.
<p>
<a href="http://www.opencontent.org/"><img align=right src="https://anybrowser.org/campaign/images/button_takeone.gif" alt="Open Content" width="85" height="33" /></a>
In keeping with the aims of the
<a href="http://www.anybrowser.org/campaign/">Any Browser Campaign</a>,
we aim to make the pages work on any browser, on any platform, degrading
gracefully when used with no images, old browsers, tiny screen resolutions
and/or no colour. We have also aimed to keep transfer and rendering times
to a minimum, especially for entry pages which new users will see first.
<p>On the other hand, we think the site is improved by the use of bits of
cave survey, photographs, maps and data laid out for legibility. Images,
imagemaps, tables and even frames are all used on the site where the
content is significantly enhanced. We have endeavoured to provide links
for non-framed browsers, text alternatives to imagemaps and descriptions
which make sense without accompanying photos or diagrams.
<p>Sometimes this has failed - for example we have not found a good way of
indexing the survey data. The way that those pages should work "intuitively"
is not actually supported by current html. Methods which overcome this when
the pages come from a server don't work when the pages are browsed locally,
and you may see this symbol in a few places as a consequence:
<p><img alt="&nbsp;&nbsp;&nbsp;&nbsp;looks broken with any browser :-(" width=360 height=40
src="icons/broken.gif">
<h3>Multi-language support</h3>
<p>Our readership is international, and in particular we are an English
group writing mainly about activities in a German-speaking area. We
cooperate with cavers who are and have been active in the area, from
Austria, Germany, France, Belgium and elsewhere. Some of the material
here has been translated from publications by these other groups. Some of
it has been translated from English into other languages. We are trying
to build a scheme under which you can easily see when translations exist,
and which will also let Apache serve you a version of the page in your
preferred language where this exists.
<p>It is another aim to support speech-synthesising browsers by flagging the
language of every phrase which differs from the base-language of the page in
which it is embedded, so you don't get joke pronunciation. This is proving to
be a lot of work, invisible to most users, and still not fully supported by
html itself (eg. we can't find official language codes for Mallorcain, nor
Pidgin, both of which appear in articles in Cambridge Underground).
<hr>
<p>The CUCC pages are typically tested on the following platforms, via
net connections (LAN, and very occasionally dial-up) and on local disc,
except where stated:
<ul>
<li>Acorn RISC PC (RISC OS 3.5, 1024x768 screen)
<li>Acorn StrongARM RISC PC (RISC OS 4.02)
<li>Moderately slow PC (MS Windows 95, large screen)
<li>Faster PC (MS Windows NT 4, large screen)
<li>and again (RedHat Linux 6.0, Gnome, 1600x1200)
<li>Moderately slow PC (RedHat Linux 6.0, Gnome, 800x600)
<li>Hewlett Packard Omnibook XE<sub>2</sub> (Windows 98, 800x600, from CD-RW)
<li>same again (Mandrake Linux 6.1 + XFree86 3.3.6, KDE, 800x600, from CD-RW)
<li>Acorn A4 (RISC OS 3.1, VGA screen or 16-grey LCD)
<li>Psion 5 (EPOC, 640x240, from flash memory)
</ul>
<p>and with the following browsers:
<ul>
<li>!ArcWeb 1.92
<li>!Fresco (1.72 on RO3, 2.02 on RO4)
<li>Amaya 2.4 (Linux and Windows)
<li>Internet Explorer 2
<li>Internet Explorer 3
<li>Internet Explorer 4
<li>Internet Explorer 5
<li>Netscape 3 (just Windows)
<li>Netscape 4 (Windows and Linux)
<li>Psion/Symbian Web v2.50
</ul>
<p>That's not to say that every page gets looked at with every combination of
browser and platform every time it is changed ! A few pages have been tested
with HotJava and !BookWorm, and Opera might be on the list in the near
future. We don't have a platform that runs BeOS. Notable by its absence is
the Mac and any browser that runs on it. I haven't got one, and the last time
I had the chance to use one, it was a little 12" monochrome screen model with
a single-button mouse, before the world-wide web was invented. Things have
moved on a bit since then ...
<hr />
<p>[Rescued from old CUCC website archive - file dated 2 October 2006 - almost certainly written by Andy Waddington]
<p>See also:
<ul>
<li><a href="../website-history.html">Website history</a> - a history of the data management system up to 2019</li>
<li><a href="../c21bs.html">Taking Expo Bullshit into the 21st Century</a> - initial report from 1996</li>
</ul>
<hr><p>
</body>
</html>

View File

@ -0,0 +1,214 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CUCC Expedition Handbook: Online systems presentation</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<h2 id="tophead">CUCC Expedition Handbook - Online systems presentation</h2>
<h1>CUCC Austria Expeditions: Slides</h1>
<h3>Expo Computer &amp; website - Wookey's Presentation 22 Aug 2015</h3>
<p>Original presentation is <a href="http://wookware.org/talks/expocomputer/#/">online</a>.
This copy includes corrections of fact as of April 2020 [in square brackets].
</p>
<table class="trad"><tbody><tr><td style="padding:0 30px">
<p>The annual CUCC expedition to Austria lasts around five weeks each summer
and concentrates mainly on new exploration in the high alpine karst of the
<span lang="de-at">Loser</span> plateau (about 80km E of <span
lang="de-at">Salzburg).</span> Recent large projects are:
<h3>Data Storage<br>
</h3>
<ul>
<li>Version-controlled repositories<br>
</li>
<ul>
<li>website ('expoweb')<br>
</li>
<li>troggle<br>
</li>
<li>loser</li>
<li>drawings (tunneldata)</li>
</ul>
<li>expofiles - just files</li>
<ul>
<li>photos</li>
<li>presentations</li>
<li>posters</li>
<li>maps</li>
<li>documents</li>
</ul>
</ul>
<h3>Website Structure [as in 2015]</h3>
<ul>
<li>Static web pages
<ul>
<li>indexes, festering, background, handbook<
</ul>
<li>Generated web pages
<ul>
<li>prospecting guide
</ul>
<li>Troggle pages
<ul>
<li>cave pages,survey scans, logbook entries, triplists
<li>Troggle also 'wraps' the other [static] stuff <br>
</ul>
</ul>
<h3>WEBSITE LAYOUT [as in 2015]</h3>
<ul>
<li>
<b>
<i>years</i>
</b> has per-year info (reports, lists, policy, logbooks)</li>
<li>
<b>
<i>handbook</i>
</b> contains handbook</li>
<li>1626, 1623 are the [Austrian kataster] areas</li>
<li>
<b>
<i>noinfo</i>
</b>&nbsp; - dir used to be hidden on public web<br>
</li>
<ul>
<li>scripts are in <i>noinfo/</i> [or <i>scripts/</i> ]
</li>
</ul>
<li>generated files are regenerated with 'Make' in expoweb dir<br>&nbsp; (click on 'others'-&gt; 'Regenerate website' is the same)</li>
<ul>
<li>prospecting guide is in <i>noinfo/prospecting_guide_scripts</i> [broken]
</font>
</li>
</ul>
<li>folk is people list, now generated from <i>folk/folk.csv</i> by <i>scripts/make-folklist.py</i>
<br>
</li>
</ul>
<h3>Editing [as in 2015]</h3>
Don't try to edit generated files.<br>
Can edit in various ways:
<ul>
<li>In expo file manager (best)<br>
</li>
<li>Live on website (not recommended)<br>
</li>
<li>(Clone and) edit on another computer</li>
</ul>
<p>You always have to commit [version control] afterwards, however you edited.
<h3>Managing Files</h3>
<b>EVERYTHING should be on the website!</br>
(HUGE BINARIES SHOULD NOT BE IN version control)</b>
<li>Info should go in the website handbook (as html, or PDF)
<li>Layout files edited every year make sense as ODT docs: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(survey index, labels, accounting procedure)
<li>Link from website, store in website or <i>expofiles/uploads</i>
<li>Don't just create a random doc and leave it in 'Desktop'.
<li>Think about where some info would be found<br>
<h3>Survex Dataset</h3>
<li>caves</li>
<li>surface</li>
<li>surface/terrain<br>
</li>
<li>fixedpts</li>
<li>template: example files<br>
</li>
<li>docs/datamaintenance.txt has some rules.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Should be in the handbook</font>
</li>
<li>
surface/caves connected by ents.svx, which is generated by make-ents.py, which <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fishes out every point marked with *entrance in the dataset.&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ARGE do this wrong, with *fix in cave</font>
</li>
<li>
all* make various groupings of data</font>
<br>
</li>
</ul>
<h3>Adding a CAVE</h3>
<ul>
<li>Location<br>
</li>
<li>Photo</li>
<li>Survey data</li>
<li>Survey notes<br>
</li>
<li>Description</li>
<ul>
<li>rigging guide<br>
</li>
</ul>
<li>Tag status</li>
<li>Question marks<br>
</li>
<li>Drawn up (paper/tunnel/therion)<br>
</li>
<li>[Now go to the current documentation for <a href="../survey/newcave.html">adding a cave</a>]
</ul>
<p>You are not finished until all of these are done
<h3>Actually adding a cave (1)</h3>
<ul>
<li>Survey data [as survex file] in loser/caves/&lt;number&gt;
<li>Simple caves go in:<ul>
<li>location, name, description in expoweb/1623/cave_data/
</ul>
<li>Complex caves go in:
<ul>
<li>expoweb/1623/&lt;cavenumber&gt;/
</ul>
<li>[Now go to the current documentation for <a href="../survey/newcave.html">adding a cave</a>]
</ul>
<h3>Actually adding a cave (2)</h3>
<ul>
<li>Notes go into physical survey folder.
<li>Scans go into expofiles/surveyscans/&lt;year&gt;/&lt;year&gt;-&lt;folderID&gt;</font>
<li>QMs don't seem to have a plan. Needs standardising [now as ;QM in .svx files]
<li>Caves with no number are called &lt;year&gt;-&lt;initials&gt;-&lt;nn&gt; and go in file expoweb/cave_data/&lt;kataster_area&gt;-&lt;year&gt;-&lt;initials&gt;-&lt;nn&gt; [e.g. <i>1623-2018-dm-07.html</i>]
<li>[Now go to the current documentation for <a href="../survey/newcave.html">adding a cave</a>]
</ul>
<h3>Troggle&nbsp;</h3>
<p><a href="https://www.djangoproject.com/">Django</a>-based.
<li>URL list filter /cave, /expedition, /survey
<li>Templates for pages
<li>Processors to generate them<br>
<li>Parsers to read in from website files.
<li>Database back end (mysql)<br>
<li>The files are the 'real' database.
<li>Run <i>databaseReset.py reset</i> <br>
<h3>Troggle updating</h3>
<li>For a new year, edit expoweb/noinfo/folk.csv
<li>This is the thing that 'creates' a new 'expedition' (not the logbook!)<br>
<li>Run <i>databaseReset.py reset
to reparse everything.
<br><br>
</ul>
</table>
<br>
Return to <a href="onlinesystems.html">Systems Overview</a>
<hr />
</body>
</html>

View File

@ -72,15 +72,21 @@ but all the recommended software here is open source (and please don't install p
<a href="https://therion.speleo.sk/2D.php"><img src="https://therion.speleo.sk/img/head.jpg" hspace="20"></a>
<p>Note that on a Debian/Ubuntu machine you should normally install the versions that come with the distro, not be getting things fromthe above sites</p>
<p>Note that on a Debian/Ubuntu machine you should normally install the versions that come with the distro, not be getting things from the above sites</p>
<p>For Linux users only:
<h4>For Linux users only:</h4>
<ul>
<li><a href="https://git-scm.com/download/gui/linux">GUI for git</a> - There is a choice on Linux but many people just use the command line.
<li>Your favourite text editor. gedit is installed on the <em>expo laptop</em> and has syntax highlighting for .svx files too. This works with <a href="https://survex.com/changes.html">all GtkSourceView-based editors</a> (thanks to Phil Withnall).
</ul>
<h4>For Linux and WSL (text mode only) Windows users only:</h4>
<ul>
<li>Survex is a package on debian and ubuntu but is not up to date. You need to attach to a ppa to get the latest survex:
<a href="https://survex.com/download.html?platform=debian">ubuntu and debian</a> download. This is also the version to use on WSL for doing 'cavern' command-line things in WSL (such as doing troggle imports of all the svx data)
</ul>
<p>For Windows users only:
<h4>For Windows users only:</h4>
<p></p>None of this works until you set up the key-pair setup using PuTty/Pageant.
<ul>
@ -99,7 +105,8 @@ but all the recommended software here is open source (and please don't install p
</ul>
<p>A short note about the phenomenon of VS code is in order. In case you didn't know, by 2018 over <a href="https://insights.stackoverflow.com/survey/2018">a third</a> of software developers used this editor for their Linux and Windows work and it is undoubtedly more now. Not for beginners.
<p>For Android phones:
<h4>For Android phones:</h4>
<ul>
<li><a href="https://www.termius.com/">Termius</a> - command line to create a key for your phone, to ssh (and mosh) login to the expo server. To get sftp you have to buy it.
<li><a href="https://osmand.net/">OsmAnd</a> - a GPS app. See also <a href="../essentials.html">the expo GPS configuration pages</a>

View File

@ -43,6 +43,8 @@ detailed topics.</p>
<li><b>For those new to CUCC expo surveying:</b>
<ul>
<li><a href="newcave.html">The complete process for recording cave data</a></li>
<li>Current Expo survey <a href="/expofiles/surveyscans/2019/walletindex.html">wallet status</a>.</li>
<li>Current Expo survey data <a href="../computing/todo-data.html">TO-DO list</a>.</li>
</ul>
</li>
<li><b>For those carrying out a survey:</b>
@ -52,21 +54,21 @@ detailed topics.</p>
<li>Methods: <a href="ontop.htm">surface</a>
<li>A new cave: <a href="gps.htm">Getting a GPS fix</a></li>
<li>Base Camp: <a href="newcave.html.htm">getting it in</a> to the computer</li>
<li>Base Camp: <a href="newcave.html">getting it in</a> to the computer</li>
<li><a href="qmentry.html">QMs (Question Marks)</a> in the svx file - possible ways on</li>
<li><a href="newcave.html">Transcribing and re-scanning your sketches</a>
<li>Base Camp: <a href="drawup.htm">drawing it up</a>, writing the description</li>
<!-- need to add blurb on QM quality etc. -->
<li><a href="athome.htm">Back in the UK</a>: so you thought you'd finished?</li>
<li>Current Expo survey <a href="../../survey.html">status</a>.</li>
<!-- do we cover the full QM list here ? -->
</ul></li>
<li><a href="more.htm">More resources</a> on surveying</li>
<li>History of <a href="survey-broken.html">cave data archiving</a> here (broken links).</li>
<li>More obscure methods:
<li>GPS for Surveying: <a href="coord.htm">Austrian Coordinate Systems</a> and how to convert between them</li>
<ul>
<li>The <a href="lasers.htm">Loser plateau laser fixed points</a></li>
<li>GPS for Surveying: <a href="coord.htm">Austrian Coordinate Systems</a> and how to convert between them</li>
<li>GPS <a href="coord2.html">Coordinate Systems</a> .</li>
</ul></li>
</ul>

View File

@ -0,0 +1,545 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Handbook Troggle Data Model</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook - troggle</h2>
<h1>Troggle Data Model (python)</h1>
<h3>Troggle data architecture</h3>
Auto-generated on 3 April 2020. (Omitting all the 'Meta' sub-classes.)<code><pre><span style="color: green">
# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
# * Rearrange models' order
# * Make sure each model has one field with primary_key=True
# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
#
# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [app_label]'
# into your database.</span>
from __future__ import unicode_literals
from django.db import models
<span style="color: lime">class</span> <span style="color:blue"><b>CoreArea</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
short_name = models.CharField(max_length=100)
name = models.CharField(max_length=200, blank=True)
description = models.TextField(blank=True)
<span style="color:blue">parent</span> = models.<span style="color:blue">ForeignKey</span> ('self', blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreCave</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
official_name = models.CharField(max_length=160)
kataster_code = models.CharField(max_length=20, blank=True)
kataster_number = models.CharField(max_length=10, blank=True)
unofficial_number = models.CharField(max_length=60, blank=True)
explorers = models.TextField(blank=True)
underground_description = models.TextField(blank=True)
equipment = models.TextField(blank=True)
references = models.TextField(blank=True)
survey = models.TextField(blank=True)
kataster_status = models.TextField(blank=True)
underground_centre_line = models.TextField(blank=True)
notes = models.TextField(blank=True)
length = models.CharField(max_length=100, blank=True)
depth = models.CharField(max_length=100, blank=True)
extent = models.CharField(max_length=100, blank=True)
survex_file = models.CharField(max_length=100, blank=True)
description_file = models.CharField(max_length=200, blank=True)
url = models.CharField(max_length=200, blank=True)
filename = models.CharField(max_length=200)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreCaveArea</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
cave_id = models.IntegerField()
<span style="color:blue">area</span> = models.<span style="color:blue">ForeignKey</span> (CoreArea)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreCaveandentrance</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
cave_id = models.IntegerField()
entrance_id = models.IntegerField()
entrance_letter = models.CharField(max_length=20, blank=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreCavedescription</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
short_name = models.CharField(unique=True, max_length=50)
long_name = models.CharField(max_length=200, blank=True)
description = models.TextField(blank=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreCavedescriptionLinkedEntrances</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
cavedescription_id = models.IntegerField()
<span style="color:blue">entrance</span> = models.<span style="color:blue">ForeignKey</span> ('CoreEntrance')
<span style="color: lime">class</span> <span style="color:blue"><b>CoreCavedescriptionLinkedQms</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
cavedescription_id = models.IntegerField()
qm_id = models.IntegerField()
<span style="color: lime">class</span> <span style="color:blue"><b>CoreCavedescriptionLinkedSubcaves</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
cavedescription_id = models.IntegerField()
newsubcave_id = models.IntegerField()
<span style="color: lime">class</span> <span style="color:blue"><b>CoreCaveslug</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
cave_id = models.IntegerField()
slug = models.CharField(unique=True, max_length=50)
primary = models.BooleanField()
<span style="color: lime">class</span> <span style="color:blue"><b>CoreDataissue</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
date = models.DateTimeField()
parser = models.CharField(max_length=50, blank=True)
message = models.CharField(max_length=400, blank=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreDphoto</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
caption = models.CharField(max_length=1000, blank=True)
<span style="color:blue">contains_logbookentry</span> = models.<span style="color:blue">ForeignKey</span> ('CoreLogbookentry', blank=True, null=True)
file = models.CharField(max_length=100)
is_mugshot = models.BooleanField()
<span style="color:blue">contains_cave</span> = models.<span style="color:blue">ForeignKey</span> (CoreCave, blank=True, null=True)
<span style="color:blue">contains_entrance</span> = models.<span style="color:blue">ForeignKey</span> ('CoreEntrance', blank=True, null=True)
<span style="color:blue">nearest_qm</span> = models.<span style="color:blue">ForeignKey</span> ('CoreQm', db_column='nearest_QM_id', blank=True, null=True) <span style="color: green"># Field name made lowercase.</span>
lon_utm = models.FloatField(blank=True, null=True)
lat_utm = models.FloatField(blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreDphotoContainsPerson</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
dphoto_id = models.IntegerField()
<span style="color:blue">person</span> = models.<span style="color:blue">ForeignKey</span> ('CorePerson')
<span style="color: lime">class</span> <span style="color:blue"><b>CoreEntrance</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
name = models.CharField(max_length=100, blank=True)
entrance_description = models.TextField(blank=True)
explorers = models.TextField(blank=True)
map_description = models.TextField(blank=True)
location_description = models.TextField(blank=True)
approach = models.TextField(blank=True)
underground_description = models.TextField(blank=True)
photo = models.TextField(blank=True)
marking = models.CharField(max_length=2)
marking_comment = models.TextField(blank=True)
findability = models.CharField(max_length=1, blank=True)
findability_description = models.TextField(blank=True)
alt = models.TextField(blank=True)
northing = models.TextField(blank=True)
easting = models.TextField(blank=True)
tag_station = models.TextField(blank=True)
exact_station = models.TextField(blank=True)
other_station = models.TextField(blank=True)
other_description = models.TextField(blank=True)
bearings = models.TextField(blank=True)
url = models.CharField(max_length=200, blank=True)
filename = models.CharField(max_length=200)
cached_primary_slug = models.CharField(max_length=200, blank=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreEntranceslug</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
entrance_id = models.IntegerField()
slug = models.CharField(unique=True, max_length=50)
primary = models.BooleanField()
<span style="color: lime">class</span> <span style="color:blue"><b>CoreExpedition</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
year = models.CharField(unique=True, max_length=20)
name = models.CharField(max_length=100)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreExpeditionday</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
<span style="color:blue">expedition</span> = models.<span style="color:blue">ForeignKey</span> (CoreExpedition)
date = models.DateField()
<span style="color: lime">class</span> <span style="color:blue"><b>CoreLogbookentry</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
date = models.DateField()
<span style="color:blue">expeditionday</span> = models.<span style="color:blue">ForeignKey</span> (CoreExpeditionday, blank=True, null=True)
<span style="color:blue">expedition</span> = models.<span style="color:blue">ForeignKey</span> (CoreExpedition, blank=True, null=True)
title = models.CharField(max_length=200)
cave_slug = models.CharField(max_length=50)
place = models.CharField(max_length=100, blank=True)
text = models.TextField()
slug = models.CharField(max_length=50)
filename = models.CharField(max_length=200, blank=True)
entry_type = models.CharField(max_length=50, blank=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreNewsubcave</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
name = models.CharField(unique=True, max_length=200)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreOthercavename</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
name = models.CharField(max_length=160)
<span style="color:blue">cave</span> = models.<span style="color:blue">ForeignKey</span> (CoreCave)
<span style="color: lime">class</span> <span style="color:blue"><b>CorePerson</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
fullname = models.CharField(max_length=200)
is_vfho = models.BooleanField()
mug_shot = models.CharField(max_length=100, blank=True)
blurb = models.TextField(blank=True)
orderref = models.CharField(max_length=200)
user_id = models.IntegerField(unique=True, blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CorePersonexpedition</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
<span style="color:blue">expedition</span> = models.<span style="color:blue">ForeignKey</span> (CoreExpedition)
<span style="color:blue">person</span> = models.<span style="color:blue">ForeignKey</span> (CorePerson)
slugfield = models.CharField(max_length=50, blank=True)
is_guest = models.BooleanField()
expo_committee_position = models.CharField(max_length=200, blank=True)
nickname = models.CharField(max_length=100, blank=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CorePersontrip</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
<span style="color:blue">personexpedition</span> = models.<span style="color:blue">ForeignKey</span> (CorePersonexpedition, blank=True, null=True)
time_underground = models.FloatField()
<span style="color:blue">logbook_entry</span> = models.<span style="color:blue">ForeignKey</span> (CoreLogbookentry)
is_logbook_entry_author = models.BooleanField()
<span style="color: lime">class</span> <span style="color:blue"><b>CoreQm</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
<span style="color:blue">found_by</span> = models.<span style="color:blue">ForeignKey</span> (CoreLogbookentry, blank=True, null=True)
<span style="color:blue">ticked_off_by</span> = models.<span style="color:blue">ForeignKey</span> (CoreLogbookentry, blank=True, null=True)
number = models.IntegerField()
grade = models.CharField(max_length=1)
location_description = models.TextField()
nearest_station_description = models.CharField(max_length=400, blank=True)
nearest_station_name = models.CharField(max_length=200, blank=True)
<span style="color:blue">nearest_station</span> = models.<span style="color:blue">ForeignKey</span> ('CoreSurvexstation', blank=True, null=True)
area = models.CharField(max_length=100, blank=True)
completion_description = models.TextField(blank=True)
comment = models.TextField(blank=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreScannedimage</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
file = models.CharField(max_length=100)
<span style="color:blue">scanned_by</span> = models.<span style="color:blue">ForeignKey</span> (CorePerson, blank=True, null=True)
scanned_on = models.DateField(blank=True, null=True)
survey_id = models.IntegerField()
contents = models.CharField(max_length=20)
number_in_wallet = models.IntegerField(blank=True, null=True)
lon_utm = models.FloatField(blank=True, null=True)
lat_utm = models.FloatField(blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexblock</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
name = models.CharField(max_length=100)
<span style="color:blue">parent</span> = models.<span style="color:blue">ForeignKey</span> ('self', blank=True, null=True)
text = models.TextField()
cave_id = models.IntegerField(blank=True, null=True)
date = models.DateField(blank=True, null=True)
expeditionday_id = models.IntegerField(blank=True, null=True)
expedition_id = models.IntegerField(blank=True, null=True)
<span style="color:blue">survexfile</span> = models.<span style="color:blue">ForeignKey</span> ('CoreSurvexfile', blank=True, null=True)
begin_char = models.IntegerField()
survexpath = models.CharField(max_length=200)
survexscansfolder_id = models.IntegerField(blank=True, null=True)
totalleglength = models.FloatField()
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexdirectory</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
path = models.CharField(max_length=200)
cave_id = models.IntegerField(blank=True, null=True)
primarysurvexfile_id = models.IntegerField(blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexequate</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
cave_id = models.IntegerField(blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexfile</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
path = models.CharField(max_length=200)
<span style="color:blue">survexdirectory</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexdirectory, blank=True, null=True)
cave_id = models.IntegerField(blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexleg</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
block_id = models.IntegerField()
<span style="color:blue">stationfrom</span> = models.<span style="color:blue">ForeignKey</span> ('CoreSurvexstation')
<span style="color:blue">stationto</span> = models.<span style="color:blue">ForeignKey</span> ('CoreSurvexstation')
tape = models.FloatField()
compass = models.FloatField()
clino = models.FloatField()
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexpersonrole</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
<span style="color:blue">survexblock</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexblock)
nrole = models.CharField(max_length=200, blank=True)
personname = models.CharField(max_length=100)
person_id = models.IntegerField(blank=True, null=True)
personexpedition_id = models.IntegerField(blank=True, null=True)
persontrip_id = models.IntegerField(blank=True, null=True)
expeditionday_id = models.IntegerField(blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexscansfolder</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
fpath = models.CharField(max_length=200)
walletname = models.CharField(max_length=200)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexscansingle</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
ffile = models.CharField(max_length=200)
name = models.CharField(max_length=200)
<span style="color:blue">survexscansfolder</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexscansfolder, blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvexstation</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
name = models.CharField(max_length=100)
block_id = models.IntegerField()
<span style="color:blue">equate</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexequate, blank=True, null=True)
x = models.FloatField(blank=True, null=True)
y = models.FloatField(blank=True, null=True)
z = models.FloatField(blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvextitle</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
<span style="color:blue">survexblock</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexblock)
title = models.CharField(max_length=200)
cave_id = models.IntegerField(blank=True, null=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreSurvey</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
new_since_parsing = models.BooleanField()
non_public = models.BooleanField()
<span style="color:blue">expedition</span> = models.<span style="color:blue">ForeignKey</span> (CoreExpedition)
wallet_number = models.IntegerField(blank=True, null=True)
wallet_letter = models.CharField(max_length=1, blank=True)
comments = models.TextField(blank=True)
location = models.CharField(max_length=400, blank=True)
<span style="color:blue">subcave</span> = models.<span style="color:blue">ForeignKey</span> (CoreNewsubcave, blank=True, null=True)
<span style="color:blue">survex_block</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexblock, unique=True, blank=True, null=True)
<span style="color:blue">logbook_entry</span> = models.<span style="color:blue">ForeignKey</span> (CoreLogbookentry)
centreline_printed_on = models.DateField(blank=True, null=True)
<span style="color:blue">centreline_printed_by</span> = models.<span style="color:blue">ForeignKey</span> (CorePerson, blank=True, null=True)
tunnel_file = models.CharField(max_length=100, blank=True)
<span style="color:blue">tunnel_main_sketch</span> = models.<span style="color:blue">ForeignKey</span> ('self', blank=True, null=True)
integrated_into_main_sketch_on = models.DateField(blank=True, null=True)
<span style="color:blue">integrated_into_main_sketch_by</span> = models.<span style="color:blue">ForeignKey</span> (CorePerson, blank=True, null=True)
rendered_image = models.CharField(max_length=100, blank=True)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfile</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
tunnelpath = models.CharField(max_length=200)
tunnelname = models.CharField(max_length=200)
bfontcolours = models.BooleanField()
filesize = models.IntegerField()
npaths = models.IntegerField()
<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfileSurvexblocks</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
tunnelfile_id = models.IntegerField()
<span style="color:blue">survexblock</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexblock)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfileSurvexscans</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
tunnelfile_id = models.IntegerField()
<span style="color:blue">survexscansingle</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexscansingle)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfileSurvexscansfolders</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
tunnelfile_id = models.IntegerField()
<span style="color:blue">survexscansfolder</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvexscansfolder)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfileSurvextitles</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
tunnelfile_id = models.IntegerField()
<span style="color:blue">survextitle</span> = models.<span style="color:blue">ForeignKey</span> (CoreSurvextitle)
<span style="color: lime">class</span> <span style="color:blue"><b>CoreTunnelfileTunnelcontains</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
from_tunnelfile_id = models.IntegerField()
to_tunnelfile_id = models.IntegerField()
<span style="color: lime">class</span> <span style="color:blue"><b>DjangoAdminLog</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
action_time = models.DateTimeField()
object_id = models.TextField(blank=True)
object_repr = models.CharField(max_length=200)
action_flag = models.PositiveSmallIntegerField()
change_message = models.TextField()
<span style="color:blue">content_type</span> = models.<span style="color:blue">ForeignKey</span> ('DjangoContentType', blank=True, null=True)
<span style="color:blue">user</span> = models.<span style="color:blue">ForeignKey</span> (AuthUser)
<span style="color: lime">class</span> <span style="color:blue"><b>DjangoContentType</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
name = models.CharField(max_length=100)
app_label = models.CharField(max_length=100)
model = models.CharField(max_length=100)
<span style="color: lime">class</span> <span style="color:blue"><b>DjangoMigrations</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
app = models.CharField(max_length=255)
name = models.CharField(max_length=255)
applied = models.DateTimeField()
<span style="color: lime">class</span> <span style="color:blue"><b>DjangoRedirect</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
<span style="color:blue">site</span> = models.<span style="color:blue">ForeignKey</span> ('DjangoSite')
old_path = models.CharField(max_length=200)
new_path = models.CharField(max_length=200)
<span style="color: lime">class</span> <span style="color:blue"><b>DjangoSession</b></span>(models.Model):
session_key = models.CharField(<span style="color: magenta">primary_key</span> =True, max_length=40)
session_data = models.TextField()
expire_date = models.DateTimeField()
<span style="color: lime">class</span> <span style="color:blue"><b>DjangoSite</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
domain = models.CharField(max_length=100)
name = models.CharField(max_length=50)
<span style="color: lime">class</span> <span style="color:blue"><b>FlatpagesEntranceredirect</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
originalurl = models.CharField(db_column='originalURL', max_length=200) <span style="color: green"># Field name made lowercase.</span>
<span style="color:blue">entrance</span> = models.<span style="color:blue">ForeignKey</span> (CoreEntrance)
<span style="color: lime">class</span> <span style="color:blue"><b>FlatpagesRedirect</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
originalurl = models.CharField(db_column='originalURL', unique=True, max_length=200) <span style="color: green"># Field name made lowercase.</span>
newurl = models.CharField(db_column='newURL', max_length=200) <span style="color: green"># Field name made lowercase.</span>
<span style="color: lime">class</span> <span style="color:blue"><b>RegistrationRegistrationprofile</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
activation_key = models.CharField(max_length=40)
<span style="color:blue">user</span> = models.<span style="color:blue">ForeignKey</span> (AuthUser, unique=True)
<span style="color: lime">class</span> <span style="color:blue"><b>AuthGroup</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
name = models.CharField(unique=True, max_length=80)
<span style="color: lime">class</span> <span style="color:blue"><b>AuthGroupPermissions</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
<span style="color:blue">group</span> = models.<span style="color:blue">ForeignKey</span>(AuthGroup)
<span style="color:blue"><span style="color:blue">permission</span></span> = models.<span style="color:blue">ForeignKey</span>('AuthPermission')
<span style="color: lime">class</span> <span style="color:blue"><b>AuthPermission</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
name = models.CharField(max_length=50)
<span style="color:blue">content_type</span> = models.<span style="color:blue">ForeignKey</span>('DjangoContentType')
codename = models.CharField(max_length=100)
<span style="color: lime">class</span> <span style="color:blue"><b>AuthUser</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
password = models.CharField(max_length=128)
last_login = models.DateTimeField()
is_superuser = models.BooleanField()
username = models.CharField(unique=True, max_length=30)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.CharField(max_length=75)
is_staff = models.BooleanField()
is_active = models.BooleanField()
date_joined = models.DateTimeField()
<span style="color: lime">class</span> <span style="color:blue"><b>AuthUserGroups</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
<span style="color:blue">user</span> = models.<span style="color:blue">ForeignKey</span> (AuthUser)
<span style="color:blue">group</span> = models.<span style="color:blue">ForeignKey</span> (AuthGroup)
<span style="color: lime">class</span> <span style="color:blue"><b>AuthUserUserPermissions</b></span>(models.Model):
id = models.IntegerField(<span style="color: magenta">primary_key</span> =True) <span style="color: green"># AutoField?</span>
<span style="color:blue">user</span> = models.<span style="color:blue">ForeignKey</span> (AuthUser)
<span style="color:blue">permission</span> = models.<span style="color:blue">ForeignKey</span> (AuthPermission)
</pre></code>
<hr />
Return to: <a href="trogarch.html">Troggle architecture</a><br />
<hr />
</body>
</html>

View File

@ -5,7 +5,7 @@
<title>CUCC Expedition Handbook: Website menu design options</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook - Website menu design options</h2>
<h1>What, How and Why : New menus</h1>

View File

@ -1,15 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Other scripts supporting troggle</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>Other scripts</h1>
<h3 id="inscripts">Current Scripts</a></h3>
<ul>
<li><a href="scriptscurrent.html#folk">make-folklist.py</a> turns the folk.csv file into a webpage.
@ -23,8 +23,8 @@
<li><a href="scriptscurrent.html#latex">seshbook.tex</a> LaTeX script for generating the seshbook - works from the same list of names
<li><a href="scriptscurrent.html#latex">therionpage.tex</a> LaTeX script anbd makefile for generating therion-style protractors</li><br />
<li><a href="scriptscurrent.html#latex">wallets.py</a> generates statuspages and to-do list pages for survey data production.
<li><a href="scriptscurrent.html#svx2qm">svx2qm.py</a> extracts QMs from the survex files
<li><a href="scriptscurrent.html#tabqms">tablize-qms.pl</a> turns the list of QMs extracted into an HTML file
<li><a href="scriptsqms.html#svx2qm">svx2qm.py</a> extracts QMs from the survex files
<li><a href="scriptsqms.html#tabqms">tablize-qms.pl</a> turns the list of QMs extracted into an HTML file
<li><a href="scriptscurrent.html#surface">make_svx.sh</a> generates surface Survex tracks
<li><a href="scriptscurrent.html#svxtrace">svxtrace.py</a> analyses Survex tracks to help find errors
<li><a href="scriptscurrent.html#survex">chk-refs.sh</a> analyses Survex files and wallets files to find reference errors</li><br />
@ -39,15 +39,18 @@
<h3 id="inscripts">Old and possibly obsolete scripts</a></h3>
<ul>
<li><a href="scriptscurrent.html#glossary">make-glossary.pl</a> - used while documenting very complex caves (161 and 204)
<li><a href="scriptscurrent.html#find-dead-qms">find-dead-qms.py</a> - several QM scripts and intermediate files
<li><a href="scriptscurrent.html#glossary">make-glossary.pl</a> - used while documenting very complex caves (161 and 204).
We may need this again for Tunnocks/Balkon.
<li><a href="scriptsqms.html#find-dead-qms">find-dead-qms.py</a> - several QM scripts and intermediate files
<li><a href="scriptscurrent.html#alljs">make-alljs.py</a> - extracts legs and entrances
<li><a href="scriptscurrent.html#indxl4">make-indxal4.pl</a> - obsolete
<li><a href="scriptscurrent.html#logbk">logbk.pl</a> - obsolete
</ul>
<p>There are perl and python scripts scattered through the :drawings: and :loser: (svx files) repos. Not all of the functions in these scripts have been recreated in more recent scripts or programmed into troggle.
<h3 id="newscript">When you write a script</a></h3>
<p>Any script that generates an HTML file should insert <em>&lt;meta name="keywords" content="NOEDIT"&gt;</em>
in the HTML header. Then when troggle renders the page it will not allow the user to edit the generated page. See <a href="../computing/hbmanual1.html">handbook editing</a> for a fuller explanation of troggle post-processing.
<hr />

View File

@ -5,7 +5,7 @@
<title>Handbook Troggle XXX</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>Handbook Troggle XXX</h1>
<p>This is not the page you are looking for.

View File

@ -5,7 +5,7 @@
<title>Other scripts supporting troggle</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<style>
h4 {
margin-top: 1.5em;

View File

@ -0,0 +1,156 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Expo documentation - QMs scripts</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<style>
h4 {
margin-top: 1.5em;
margin-bottom: 0;
}
p {
margin-top: 0;
margin-bottom: 0.5em;
}
var { # to match <code> but inline
font-family: monospace;
font-size: 0.9em;
#font-style: normal;
background-color: #eee;
}
</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>QMs and leads</h1>
tl;dr - use <em>svx2qm.py</em>. Look at the output at:<br>
<a href="/expofiles/writeups/2019/qms2019.txt">qms2019.txt</a><br>
<a href="/expofiles/writeups/2019/qms2019.csv">qms2019.csv</a><br>
<h2>QMs - the fourfold path</h2>
<p>You will be familiar with <a href="../survey/qmentry.html">documenting newly found QMs</a> in the survex file when you type it in. But QMs are only useful if they can be easily scanned by people planning the next pushing trip. That's what we are discussing here.
<p>There are four ways we have used to manage QMs:
<ol>
<li><strong>Perl script</strong> - Historically QMs were not in the survex file but typed up in a separate list <var>qms.csv</var> for each cave system. A perl script turned that into an HTML file for the website.
<li><strong>Perl + troggle</strong> - One of troggle's input parsers "QM parser" is specifically designed to import the three HTML files produced from <var>qms.csv</var> but doesn't do anything with that data (yet).
<li><strong>Python script</strong> - Phil Withnall's 2019 script <em>svx2qm.py</em> scans all the QMs in a single survex file. See below for how to run it on all survex files.
<li><strong>New troggle</strong> - Sam's recent addition to troggle's "survex parser" makes it recognise and store QMs when it parses the survex files.
</ol>
<p>QMs all use <a href="../../qm.html">the same QM description conventions</a>.
<h4 id="tabqmsqms">tablize-qms.pl</h4>
<p>This is a perl script dating from November 2004.
<p>it takes a <em>hand-edited</em> CSV file name as the program's argument and generates an HTML page listing all the QMs.
<p><a href="../../1623/258/tablize-qms.pl" download>Copies of it</a> live in the three cave file folders in <em>:expoweb:/1623/</em>, in <em>258/, 234/</em>, and <em> 204/</em> . These generated html files are live pages in the cave descriptions: <br />
<a href="../../1623/258/qm.html">/1623/258/qm.html</a><br />
<a href="../../1623/234/qm.html">/1623/234/qm.html</a><br />
<a href="../../1623/204/qm.html">/1623/204/qm.html</a><br />
<p>Note that the <var>qms.csv</var> file file used as input by this script is an <em>entirely different format and table structure</em> from the <var>qms.csv</var> file produced by <a href="#svx2qm">svx2qm.py</a>.
<p>There are also three versions of the QM list for cave 161 (Kaninchenhohle) apparently produced by this method but hand-edited:<br />
<a href="../../1623/161/qmaven.html">/1623/161/qmaven.html</a> 1996 version<br />
<a href="../../1623/161/qmtodo.html">/1623/161/qmtodo.html</a> 1998 version<br />
<a href="../../1623/161/qmdone.html">/1623/161/qmdone.html</a> 1999 (incomplete) version
</p>
<p>In the /1623/204/ folder there is a script <em>qmreader.pl</em> which apparently does the inverse of
<em>tablize-qms.pl</em>: it transforms a QMs' HTML file into a CSV file.
<h4 id="qms.py">troggle/parsers/qms.py</a></h4>
<p>The parser <em>troggle/parsers/qms.py</em> currently imports those same <var>qm.csv</var> files from the perl script into troggle using a mixture of csv and html parsers:
<code><pre>parseCaveQMs(cave='stein',inputFile=r"1623/204/qm.csv")
parseCaveQMs(cave='hauch',inputFile=r"1623/234/qm.csv")
parseCaveQMs(cave='kh', inputFile="1623/161/qmtodo.htm")
#parseCaveQMs(cave='balkonhoehle',inputFile=r"1623/264/qm.csv")</pre></code>
but does not apparently have any output webpage to display them (yet).
</p>
<p>Note that the hand-edited <var>qm.csv</var> for Balkonhohle was apparently abandoned unfinished as we transitioned to putting the QMs in the survex files instead. It contains QMs from 2014 and 2016:<br />
<a href="../../1623/264/qm.csv" download>/1623/264/qm.csv</a> - unused <br/>
<h4 id="svx2qm">svx2qm.py</a></h4>
<p>Philip Withnall's 2019 QM extractor <em>svx2qm.py</em> (in :loser:/qms/) can be used to generate a list of all the QMs in all the svx files in either text or CSV format. When run together with <em>file</em> and <em>xargs</em> it will produce a output listing all the QMs:
<pre><code>cd loser
find -name '*.svx' | xargs qms/svx2qm.py --format csv
</code></pre>
and --format human produces a simple text format.
<p>
<b>
FINISH - the 2019 copies are online HERE and HERE
</b>
<p>
This will work on all survex *.svx files even those which have not yet been run through the troggle import process.
<p>Phil says (13 April 2020): <em>"The generated files are not meant to be served by the webserver, its a tool for people to run locally. Someone could modify it to create HTML output (or post-process the CSV output to do the same), but that is work still to be done."</em>
<h4 id="samqms">Sam's parser additions</a></h4>
<p>Troggle <em>troggle/parsers/survex.py</em> currently parses and stores all the QMs it finds in survex files. The tables where the data is put are listed in <a href="datamodel.html">the current data model</a> including structure for ticking them off.
<p>There is not yet a troggle report listing the QMs.
<h2>QMs - other oddments</h2>
<h4 id="find-dead-qms">find-dead-qms.py</h4>
<p>This finds references to <em>completed</em> qms in the qm.csv files in the cave folders (/1623/ etc.) in the :expoweb: repository. It looks to see which QMs have been completed but where there is not yet a matching text in the cave description.
<blockquote><em>Quick and dirty Python script to find references to completed qms in the
cave description pages. Run this to find which bits of description
need updating.
<br>
The list of qms is read from the qm.csv file and any with an entry in the
"Completion description" column (column 7) are searched for in all the html
files.
<br>
The script prints a list of the completed qms that it found references to
and in which file.
<br>
Nial Peters - 2011
</em></blockquote>
<hr>
<pre>
From: Philip Withnall [tecnocode]
Sent: 13 April 2020 23:41
To: Philip Sargent (Gmail)
Subject: Re: svx2qm
Hi Philip,
Hope youre well, thanks for getting in touch about this.
The generated files are not meant to be served by the webserver, its a tool for people to run locally.
Someone could modify it to create HTML output (or post-process the CSV output to do the same),
but that is work still to be done.
I can't see any problem with moving it all to expoweb/scripts/ - so long as it is
run with the loser top level directory specified - but I might be mistaken:
find /home/expo/loser -name '*.svx' | xargs ./svx2qm.py --format human
and it should go into the Makefile too at some point.
Feel free to move it wherever; I am not planning on doing any further work on it.
The script itself just expects to be passed some (relative or absolute) paths to SVX files,
so can be placed wherever, as long as its passed appropriate relative paths.
I havent written any other scripts which post-process the data or otherwise format it.
I guess it all depends on what questions people are trying to answer using the QM data,
as to how (and where) best to present it. Im afraid I dont have any suggestions there.
:Rob Watson wrote some documentation about QMs
:http://expo.survex.com/handbook/survey/qmentry.html
:is there anything subtle missing as to how they are used ?
Nope, I think Robs page covers it all. That page also documents the correct QM format
which is what svx2qm.py understands. (There were some older or artisanal QM formats
floating around at one point, although I think I reformatted them all so the tool
would understand them, and so people would hopefully standardise on what Robs
documented from then on.)
Philip</pre>
<hr>
Return to: <a href="otherscripts.html">Other scripts</a><br />
<hr />
</body>
</html>

View File

@ -5,7 +5,7 @@
<title>Handbook - Expo Server</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>The Expo server</h1>
<p>Troggle is the software which runs the the expo cave survey data management and website. It is not the only thing running on the expo server.

View File

@ -5,7 +5,7 @@
<title>Handbook Troggle Architecture</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>Troggle Architecture</h1>
@ -20,7 +20,9 @@ The core of troggle is the data architecture: the set of tables into which all t
</figure>
<h3>Architecture description</h3>
<p>Read the proposal: "<a href="../../documents/troggle_paper.pdf" download>Troggle: a novel system for cave exploration information management</a>", by Aaron Curtis</em>. But remember that this paper is an over-ambitious proposal. Only the core datamanagement features have been built. We have none of the person management features and only two forms: for entering cave and cave entrance data.
<p>Read the proposal: "<a href="../../documents/troggle_paper.pdf" download>Troggle: a novel system for cave exploration information management</a>", by Aaron Curtis</em>. But remember that this paper is an over-ambitious proposal. Only the core data management features have been built. We have none of the person management features and only two forms in use: for entering cave and cave entrance data.
<p>
ALSO there have been tables added to the core representation which are not anticipated in that document of this diagram, e.g. Scannedimage, Survexdirectory, Survexscansfolder, Survexscansingle, Tunnelfile, TunnelfileSurvexscansfolders, Survey. See <a href="datamodel.html">Troggle data model</a> python code (3 April 2020).
<h3>Troggle parsers and input files</h3>
[describe which files they read and which tables they write to. Also say what error messages are likely on import and what to do about them.]
@ -44,6 +46,7 @@ The core of troggle is the data architecture: the set of tables into which all t
<hr />
Go on to: <a href="trognotes.html">Troggle uncategorised notes to be edited</a><br />
See: <a href="datamodel.html">Troggle data model</a> in python code <br />
Return to: <a href="trogintro.html">Troggle intro</a><br />
<hr />
</body>

View File

@ -5,7 +5,7 @@
<title>Handbook Troggle Design</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>Troggle Design Decisions</h1>
@ -15,6 +15,7 @@
</ul>
<hr />
Go on to: <a href="trogarch.html">Troggle architecture</a><br />
Go on to: <a href="trogdesignx.html">Troggle design: architecture speculation</a><br />
Return to: <a href="trogintro.html">Troggle intro</a><br />
<hr />
</body>

View File

@ -0,0 +1,94 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Handbook Troggle Architecture Speculations</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>Troggle Architecture Speculations</h1>
<pre>
From: Philip Sargent (Gmail) [mailto:philip.sargent@gmail.com]
Sent: 19 April 2020 01:28
To: expo-tech@lists.wookware.org
Subject: vague thoughts about future troggle architecture
</pre>
<p>
At our last virtual pub Sam confirmed that using today's tools to
re-partition troggle with all the user interface in the user's browser would
be utterly horrible using current tools (javascript frameworks: react,
angular etc.).
<p>
These frameworks get out of date in couple of years or so. So they don't
give us the decade-long stability we need to match available maintenance
effort.
<p>
A web API to expose the troggle database (read-only) would allow some keen
person to write a special-purpose app on a phone, e.g. an entrance-locator
app, talking directly to the database. But replacing the whole user
interface does not seem feasible yet.
<p>
It did occur to me that we are missing a trick: 99+% of the database doesn't
change except for survey data updates which, apart from during expo, happen
only every week or so. And the database is only 10 MB so is entirely
feasible to copy absolutely everything into the browser except for scanned
images and photos.
<p>
So we could partition troggle so that all the user display bits run in the
browser (or a progressive web app) using a python interpreter running in
javascript. [yeah, expofiles would need some subset labelled as needing to
be forcibly downloaded, but the rest coming only on demand.] Some django
enthusiast must have done this already surely ? Ah yes, Brython.<br>
<a href="https://github.com/brython-dev/brython">github.com/brython-dev/brython</a><br>
<a href="https://www.brython.info/">www.brython.info</a>
<p>
Which is fun, but not useful. And not just because it is immature. None of
this addresses our biggest problem: devising something that can be
maintained by fewer, less-expert people who can only devote short snippets
of time and not long-duration immersion.
<p>
I know Wookey has been thinking of a loose federation of independent scripts
working on the same data, but the more I look at troggle and the tasks it
does the less I feel that would work. At the core there is a common data
model that everything must understand - and the only unambiguous way of
presenting that data model is working code, e.g. see
<a href="http://expo.survex.com/handbook/troggle/trogarch.html">Troggle architecture</a> and click on the image
to see a bigger copy. [It is out of date - if someone can quickly generate
an update that would be nice. It's on my <a href="../computing/todo.html">to-do list..</a>] Much of what
wallets.py does (originally by Martin Green) is in troggle already - but
better. [There is a many:many relationship between svx files and wallet
directories in reality, not 1:1]
<p>
Troggle is very nearly fully working (not with as many functions as
originally envisaged admittedly) but very nearly. There are several
import/parsers which are aborting without producing error messages, so most
of the survey blocks don't get loaded where they actually get displayed, and
the surveyscan images only appear as filename strings which are not checked
for referential integrity, so we are missing a consistency check there, and
the QM data display needs writing; but other than that it's in pretty good
shape. [Ah, yes, we should really add "drawings" as a core concept as well
as "surveyscans". That will be a bit of work.]
<p>
The one thing external scripts would be really useful for is syntax checking
and reference checking prior to import. I have found some weird and
wonderful filename paths inside the tunnel and therion drawings, and in
survex *ref paths.
<p>
<h3>Addendum</h3>
<p>There is a templating engine <a href="https://mozilla.github.io/nunjucks/">Nunjucks</a>
which is a port to JavaScript of the Django templating system we use
(via <a href="https://palletsprojects.com/p/jinja/">Jinja</a> - these are the same people who do Flask). This would be an obvious thing to use if we needed to go in that direction.
<p>Several organisations have moved their user-interface layer to the browser using
Nunjucks including <a href="https://service-manual.nhs.uk/design-system/prototyping">
the NHS digital service</a> and Firefox.
<hr />
Go on to: <a href="trogarch.html">Troggle architecture</a><br />
Return to: <a href="trogintro.html">Troggle intro</a><br />
<hr />
</body>
</html>

View File

@ -6,6 +6,7 @@
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>Troggle - Fixing things that break</h1>
<p>The guide to the parser-model-view architecture is in the architecture document.

View File

@ -5,7 +5,7 @@
<title>Handbook Troggle Intro</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>Troggle - what it is</h1>
<p>Troggle is the software which runs the the expo cave survey data management and website.

View File

@ -5,7 +5,7 @@
<title>Handbook Troggle Intro</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>Troggle - Maintenance Manuals</h1>
<p>Troggle is the software which runs the the expo cave survey data management and website.

View File

@ -5,7 +5,7 @@
<title>Handbook Troggle NOTES</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>Troggle - TO BE RESTRUCTURED</h1>
<p>Troggle runs much of the the cave survey data management, presents the data on the website and manages the Expo Handbook.

View File

@ -5,7 +5,7 @@
<title>Handbook Troggle Status</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style>
<h2 id="tophead">CUCC Expedition Handbook</h2>
<h1>Troggle & Expo Systems - status update</h1>
<p>Troggle is the software which runs the the expo cave survey data management and website.

View File

@ -22,7 +22,7 @@ exploration of these annual expeditions.</p>
bulk of material can seem a little overwhelming. However, it's important for
people to have some idea of what they are coming to, in order that they can get
the most out of expo. It is probably worth starting with the
<a href="primer.htm">Expedition Primer</a> - a document intended specifically for
<a href="handbook/primer.html">Expedition Primer</a> - a document intended specifically for
new expo members, and leading to some of the more important pages which you
should read in the <a href="handbook/index.htm">Expo Handbook</a>.</p>