<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0mm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0mm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0mm;
        margin-right:0mm;
        margin-bottom:0mm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#44546A;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#993366;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#003300;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:134876461;
        mso-list-type:hybrid;
        mso-list-template-ids:1503797414 134807553 134807555 134807557 134807553 134807555 134807557 134807553 134807555 134807557;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:889655335;
        mso-list-type:hybrid;
        mso-list-template-ids:-1862881794 134807553 134807555 134807557 134807553 134807555 134807557 134807553 134807555 134807557;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l2
        {mso-list-id:1098939098;
        mso-list-type:hybrid;
        mso-list-template-ids:339133012 134807555 134807555 134807557 134807553 134807555 134807557 134807553 134807555 134807557;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0mm;}
ul
        {margin-bottom:0mm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-GB link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>In fixing lots of dead links, I have changed a small thing which I hope you will not object to.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>See <a href="http://expo.survex.com/survexfile/2017-cucc-28">http://expo.survex.com/survexfile/2017-cucc-28</a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>In all the survex files for a complex cave which has subfolders,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>I have changed the label in the left column from the name of the first survex <i>file</i>, to the name of <i>the folder</i> itself.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>So now under 161, the left-hand column has entries such as<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span style='font-size:11.0pt;font-family:Symbol;color:#003300'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>         </span></span></span><![endif]><b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>france<o:p></o:p></span></b></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span style='font-size:11.0pt;font-family:Symbol;color:#003300'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>         </span></span></span><![endif]><b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>triassic<o:p></o:p></span></b></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo3'><![if !supportLists]><span style='font-size:11.0pt;font-family:Symbol;color:#003300'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>         </span></span></span><![endif]><b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>phumour<o:p></o:p></span></b></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>instead of previously where it was:<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo4'><![if !supportLists]><span style='font-size:11.0pt;font-family:Symbol;color:#003300'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>         </span></span></span><![endif]><b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>allfr<o:p></o:p></span></b></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo4'><![if !supportLists]><span style='font-size:11.0pt;font-family:Symbol;color:#003300'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>         </span></span></span><![endif]><b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>alltrias<o:p></o:p></span></b></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo4'><![if !supportLists]><span style='font-size:11.0pt;font-family:Symbol;color:#003300'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>         </span></span></span><![endif]><b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>allphs<o:p></o:p></span></b></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>which I think is more obvious. See <a href="http://expo.survex.com/survexfile/caves/">http://expo.survex.com/survexfile/caves/</a> live now.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>This change is particularly useful for those caves where there is a /cucc/ or /arge/ subdirectory containing earlier versions of the same surveys with the same names, e.g. for 115, 144 and 142.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>The other change is that all the caves without kataster names e.g. <a href="http://expo.survex.com/survexfile/2017-cucc-24">2017-cucc-24</a> now link to the right set of survex files instead of crashing horribly. I just made it look for an unofficial number if it couldn’t find the official one. Exception handling is a wonderful thing.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>So now this page <a href="http://expo.survex.com/survexfile/caves/">http://expo.survex.com/survexfile/caves/</a> is useful in an earlier stage of our process:  before the kataster number has been issued, and also after it has been issued but before someone gets around to go in and rearrange all the folders to match (which takes years, though it shouldn’t).<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>You can now click away with wild abandon on this page without anything horrible happening.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>(Shagged-spit Hohle needs attention though)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>It’s all part of trying to make troggle a useful tool to help us in getting things consistent, rather than a fragile beast that only works if we have already entered the data in precisely the correct manner.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'>Next jobs: make it work with anything other than 1623 and fix the CSRF security editing issue.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#003300'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0mm 0mm 0mm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Philip Sargent [Gmail] [mailto:philip.sargent@gmail.com] <br><b>Sent:</b> 18 March 2021 22:03<br><b>To:</b> 'Expo Nerding'<br><b>Subject:</b> the fossil bits of JavaScript in expo troggle: JSLIB_URL<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>OK expo website people. I am starting on the 10-15 pages of faults and glitches and whatnot that should be done on the expo website software.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Who knows anything about <b>the fossil bits of JavaScript</b> that used to be accessed at <a href="http://expo.survex.com/javascript/">http://expo.survex.com/javascript/</a>...  which is configured in the Apache config and also the Django JSLIB_URL constant, but which point to various jquery things which are not in any of the repositories and are not on the server either – and so not actually loaded or used.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Simplest example:<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#002060'>javascript/<b>jquery-form</b>/jquery.form.min.js  <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>used to be imported into pages showing a survex file, e.g. <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><a href="http://expo.survex.com/survexfile/caves-1623/107/antigrav.svx">http://expo.survex.com/survexfile/caves-1623/107/antigrav.svx</a> <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>but the import currently fails. But the HTML page seems to work fine!  This is the survex file online display & edit page.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>So what was it meant to do, so what functionality is invisibly missing ?<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>The import of </span><span style='font-family:"Calibri","sans-serif";color:#002060'>JSLIB_URL/codemirror/codemirror.min.js</span><span style='font-family:"Calibri","sans-serif";color:#993366'> in the same page also fails. I presume this is a better editor, and may even have survex syntax colouring, but the actual code we used to use has been lost in history.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Elsewhere there are mentions of MEDIA_URL/CodeMirror-0.62/ but none of that is any of the repos either.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Context: on the server today JSLIB_URL points to </span><span style='font-family:"Calibri","sans-serif";color:#002060'>http://expo.survex.com/javascript/ </span><span style='font-family:"Calibri","sans-serif";color:#993366'>which Apache aliases </span><span style='font-family:"Calibri","sans-serif";color:#002060'>to /usr/share/javascript/ </span><span style='font-family:"Calibri","sans-serif";color:#993366'>which, on the sever, has subdirectories<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#002060'>/jquery<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#002060'>/jquery-ui<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#002060'>/CaveView<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#002060'>/openlayers<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>and some others, but <i>not</i> <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#002060'>/jquery-form/<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>I presume these are what come “as standard” with Debian Buster on the server. On my copy of Ubuntu 20.04 on my home machine I have the same /jquery/ (and the same version: 3.3.1) but I don’t have /jquery-ui/   or any of the others. I have found no relevant installation instructions.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Currently none of these javascript imports are under any kind of version control. Neither are any of them documented whatsoever.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Documenting what is <i>supposed</i> to be there would be a start.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Philip<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0mm 0mm 0mm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Philip Sargent [Gmail] [mailto:philip.sargent@gmail.com] <br><b>Sent:</b> 27 February 2021 01:02<br><b>To:</b> 'Expo Nerding'<br><b>Subject:</b> Expo website: troggle updating<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoPlainText>Hi,<o:p></o:p></p><p class=MsoPlainText style='margin-bottom:12.0pt'>OK I am about to re-engage with the Expo website updating. The job is <a href="http://expo.survex.com/handbook/troggle/trogdjango.html">just the Django version</a>:<o:p></o:p></p><p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo2'><![if !supportLists]><span style='font-family:"Courier New"'><span style='mso-list:Ignore'>o<span style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]>The server is on Debian Buster (10.8) and I presume Wookey is not planning on upgrading that before next year but no hurry.<o:p></o:p></p><p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo2'><![if !supportLists]><span style='font-family:"Courier New"'><span style='mso-list:Ignore'>o<span style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]>We are using python 3.7.3 which is in date and will have security updates until mid-2023<o:p></o:p></p><p class=MsoPlainText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo2'><![if !supportLists]><span style='font-family:"Courier New"'><span style='mso-list:Ignore'>o<span style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]>The troggle code is on Django 1.11 which is out of date and no longer getting security updates. The <i>initial need</i> is to migrate to Django 2.2 LTS which will be in-date until Spring 2022. This is compatible with python 3.7.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>I have just finished bringing the CU Yachting Club website up from python2.7 & Django 1.5 to python 3.5 & Django 2.2, which is a much larger job than the Expo website. (It is stuck at python 3.5 because of old plugins: PayPal, Raven link, captchas, Mailman link, Trac link and image management.)<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>So I should do the Expo Django update while this is all fresh in my mind. I will need to remove the registration plugin and move to the Django in-built user system which is now more than adequate for our needs. I am also now much more adept at writing test suites for Django so I will do more automated testing.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>The CUYC python was written by a professional Django developer (in 2009) and so uses a much wider range of programming features than we use. I have learned a lot. (My wallpaper is peeling from all the swearing.)<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>I remain firm in my belief that we should migrate away from Django and replace as much as possible with plain python. Django is just too big for amateurs now. This rewriting can be done a chunk at a time: logbooks, then survex, drawings, QMs and so on.. <o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>We can do import + static publish . No need for multi-user database now that importing everything takes 2 minutes.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Philip<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#993366'>CUYC:<br>14,674 lines</span></b><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#993366'> of non-comment, non-empty python.</span><br><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#993366'>That is <b>> 2x the size</b> of the CUCC Expo django codebase </span><br><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#993366'>and <b>15,658  lines</b> of non-empty HTML & scripts in the /templates/ too <br>That is <b>6x as big</b> as CUCC Expo - but mostly static.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#993366'>Unlike CUCC Expo, <a href="https://www.cuyc.org.uk/training/">the CUYC system</a> is used every week to construct ~35 sailing trips a year and to enrol students in practical classes and theory courses – taking payment via PayPal and authenticating  junior members of the university via the Raven plugin. So it is vital to the everyday functioning of the club. It very significantly reduces the workload on organisers. It will be staying on Django indefinitely and is hosted by SRCF. The club turnover is more than £50k a year.</span><o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p></div></body></html>