Explain (in the wallets process) how to view the surveys
+ online so that (1) you can see an example of how to do your new one,
+ and (2) so that you can check that you have done it properly when you
+ have finished.
+
Explain how to link a new cave into the other caves in
+ troggle filesystem
+
+
+
Troggle architecture
+
+
Handbook: explain how troggle works - much better and simpler. Fix
+ mistakes I wrote. For future system maintainers
+
Copy the .wiki material into the documentation somewhere
+
+
+
Surveyscans
+
+
explain where the image files are referenced from: svx, tunnel/therion, and why there are so many broken links
+
+
+
+
Photos
+
+
Capitalisation in filenames problem
+
+
run the duplicate filename script on the server in
+ /photos/xml/ as there are files which differ only in
+ capitalisation of their names.
+
Fix such duplicates in the /photos/ folders where this
+ problem originates
+
Document this issue of duplicate photo filenames produced by
+ multiple cameras running similar software
+
somehow fix the photo filenames which use capital letters on
+ import or upload, or by a cron job
+
+
+
+
Surveys data entry
+
+
2019 surveyscans
+
+
edit all the content.json
+
try to autocomplete the content.json by parsing .svx files
+
Put personal names into canonical form
+
+
+
+
Troggle
+
Expo Server
+
+
www-data:www-data permissions
+
+
Fix permissions so that all files served by troggle have
+ www-data:www-data ownership and group ownership, otherwise the
+ "Edit this page" fails with a permissions error, or
+
+
Or fix group
+ membership for the process running django so that it can write
+ files owned by 'expo'
+
We need two of these: 1.for expo systems work (troggle & scripts) - the current priority as we have nowhere currently that Wookey is willing to use
+ 2.for survey data progress/issues (though troggle itself can be used for some of this if cleaned up a bit)
+
+
+
+
Try to automate simple functions in javascript
+
+
to control this document
+ in-place (tick, delete) instead of using the
+ tinymce HTML editor in Django
+
Maybe restructure whole page as JSON and use
+ javascript editor to create (edit), re-order and demote items. So long
+ as the content is inserted into the DOM, it should work ?
+
Implement comments on an issue, mimicking GitHub issues wiki
+
Use javascript to skip over the _edit page and submit changes
+ direct to server when updating
+
checkboxes so that items can be ticked
+ (which also does strike-through)
+
bin icon to delete an item? Better to have an archive process.
+
+
+
+
+
+ Testing area..
+
Demonstation as initially read from disc
+
+
+
+
diff --git a/handbook/survey/README b/handbook/survey/README
new file mode 100644
index 000000000..a1ced9ffd
--- /dev/null
+++ b/handbook/survey/README
@@ -0,0 +1,10 @@
+Add new folders of the form
+2017#01 (where 01 is a serial number) for surveys with physical notes
+or
+2017#X01 (where 01 is a serial number) for surveys with only digital data
+
+
+Dummy text to stop mistaken messages about broken links
+from the linkchecker at
+brokenlinkcheck.com
+
diff --git a/handbook/survey/how-to-do-it b/handbook/survey/how-to-do-it
new file mode 100644
index 000000000..3a6808a15
--- /dev/null
+++ b/handbook/survey/how-to-do-it
@@ -0,0 +1,89 @@
+# Instructions
+# 2019-03-02
+# Philip Sargent
+
+Wookey told me to sort out the contents.json files in expofiles/surveyscans/2018/
+and these are my notes to remind myself what this entails.
+This note was written during August 2018.
+
+The job is to populate the contents.json file in each folder, e.g.
+
+expofiles/surveyscans/2018/2018#03/contents.json
+
+using the following input materials:
+- the wallet 2018#03 and the papers inside it. This is in the 2018 lever-arch file.
+- the folder in repo 'loser' holding the appropriate .svx files e.g.
+ "caves-1623/2017-cucc-24/gshclimb.svx"
+- the script expofiles/surveyscans/2018/wallets.py (run by "python wallets.py")
+
+the "wallets.py" script creates index.html files in each folder /2018/2018#nn/
+and creates or updates a webpage for each person listed in any of the contents.json files
+in the folder/2018/ e.g. "Becka Lawson.html".
+
+The script wallets.py requires that the //loser// repo is populated on the machine that you
+run the script on so that it can find the.svx files. Do not run this script on
+the expo server itself as the loser repo is in the wrong place and all the .svx files
+will be flagged as "not found" (Pauul Fox did this once).
+
+wallets.py now (Feb.2019) takes a command-line argument for the location of the loser repo, e.g.
+python wallets.py "/mnt/d/CUCC-Expo/loser/"
+
+Before doing anything else, run wallets.py. This will create empty template contents.json
+files in each folder.
+
+You may need to create missing folders,e.g. I just had to create /2018/2018#30 to #32.
+
+Every time you finish entering the data in contents.json in a folder,
+run wallets.py to update the "person" html files and to
+re-generate the index.html file for the 2018 folder as
+a whole (surveyscans/2018/index.html).
+
+But wallets.py does not delete old files which are not regenerated.
+So it is a good idea to delete all the .html files
+before running it.
+
+The first difficulty is finding out which cave a wallet describes..
+The wallet may say "radaghost to blitzkriek"
+(or whatever) but without the name of the cave you can't find the .svx files
+as you don't know that you need to look in e.g. loser/caves-1626/2018-dm-07/
+Usually this is written by hand on the label of the wallet.
+
+There are ambiguities about how the entries in the contents.json actually lead to
+reminder instructions in the html files produced, and this is particularly
+difficult for electronic caves where the topo files are missing
+and for surface prospecting where it is not clear which of the actions
+should be done and thus which products should be produced.
+
+This needs to be documented.
+
+For prospecting and surface surveying it is not clear whether the default folder
+for the url link should be repo //loser// surface/1623/allplateau.svx
+
+When there are more than one .svx file there seems to be no way of recording the list
+in contents.json so it is impossible to tell what was done on that trip or whether
+there is anything missing. This is especially true if it was electronic and the
+.topo files are missing. Wookey confirms that this ios the case.
+
+wallets.py will not overwrite any contents.json file, it only creates one where one
+doesn't exist.
+
+wallets.py also creates an index.html file inside each wallet folder dewcribing the status of this
+folder. This is linked from the index.html file created in /2018/ by the script which
+summarises everything for this year.
+
+NAMING
+The script detects if there are notesX.jpg planX.jpg and elevX.jpgfiles present, and
+produces a reminder/warning if they are not,even if these have all been scanned
+and given different names.
+
+The job of the checker (perhaps on a second pass) if to rename files so that these
+warnings disappear.
+
+HINT
+When there are a lot on wallets all with the same cave, make your own template
+with the cave name and the right folder prefix for the svx folder
+(in the loser repo) and copy it in to all those wallet folders - overwriting
+the blank template produced by the wallets.py
+
+
+
diff --git a/handbook/survey/onlinewallet.html b/handbook/survey/onlinewallet.html
index 144aca87e..6508379ac 100644
--- a/handbook/survey/onlinewallet.html
+++ b/handbook/survey/onlinewallet.html
@@ -17,7 +17,7 @@
The scanned pages
-
These are simply the scanned imaages (or digital photographs) of each page of the original survey notes.
+
These are simply the scanned images (or digital photographs) of each page of the original survey notes.
They should be named notesXXX.jpg where "XXX" can be
anything you like. Typically we have the scanned pages called notes1.jpg, notes2.jpg, notes3.jpg.
It is important that you use use the .jpg (JPEG) file format, and definitely not PNG (very voluminous)
@@ -25,7 +25,7 @@ or PDF (very hard to re-use elsewhere). Set the scanner at 300 dpi and adjust th
by using photo-editing software to enhance the writing. Also please crop each image to just the area containing
the survey data.
As soon as the notes have been scanned you should (a) copy them to a USB stick or email them to someone, (b) upload the entire online wallet to the expo server in Cambridge
-expo.survex.com. This is so that these precious files are backed-up as soon as possible.
+expo.survex.com. This is so that these precious files are backed-up as soon as possible. (Assuming you have done the key-pair procedure, do the upload by sFTP as you do for photos, but to the directory described in the introduction to online wallets.)
The magic creates index.html files in each folder /2018/2018#nn/
+
The magic also creates walletindex.html files in each folder /2018/2018#nn/
and creates or updates a webpage for each person listed in any of the contents.json files
in the folder/2018/ e.g. Becka Lawson.html.
+
If you want to see what the files are in each online wallet then look at
+expo.survex.com/expofiles/surveyscans/2018/
+and you can navigate to the individual wallet folders too and look directly at the files there.
+
All this magic is created by a script wallets.py.
Setting up the online wallets
@@ -153,8 +157,8 @@ new trip surveys.
python wallets.py
This will create a default contents.json and
-index.html in each online wallet subfolder and also a
-index.html in the /2018/ folder.
+walletindex.html in each online wallet subfolder and also a
+walletindex.html in the /2018/ folder.
This script works fine on Linux (Debian, Xubuntu, etc.) and also now works fine in the Windows 10 bash system.
@@ -177,7 +181,7 @@ You will run
python wallets.py
regularly, after every batch of survey data is entered or scanned.
-
This will always overwrite all the index.html files but it will never touch
+
This will always overwrite all the walletindex.html files but it will never touch
the contents.json files.
You will also regularly synchronise your laptop
and the expo laptop with
@@ -206,7 +210,7 @@ As all this is not under version control the timestamps of the files are really
So script wallets.py has been fixed so that
-
the generated index.html file in each wallet folder is given the same timestamp as the contents.json file there, not the time of when the script is run. This is unusual but intentional and in practice very helpful.
+
the generated walletindex.html file in each wallet folder is given the same timestamp as the contents.json file there, not the time of when the script is run. This is unusual but intentional and in practice very helpful.
the script no longer overwrites the contents.json files every time it runs. It only changes that file's timestamp if it actually changes anything in the contents.json file.
@@ -221,9 +225,11 @@ different formats. It also
checks whether the .svx files listed are actually present in the ::loser:: repository
checks for the presence of notesXXX.jpg, planXXX.jpg and elevXXX.jpg files
+
checks for the presence of XXXnotes.jpg, XXXplan.jpg and XXXelev.jpg files
creates a template contents.json in any wallet which does not have one.
creates helpful URL links to the existing online survey documentation for the cave being surveyed
creates helpful URL links to the working files you are managing on your own laptop
+
Inserts the date & time into each generated file so that anyone can see when it was last updated
Things it might do in future (if someone gets around to it) include:
@@ -237,60 +243,14 @@ different formats. It also
- checking the date is in the recent past etc.
How contents.json fields match
-index.html reports
+walletindex.html reports
to be written...
Old notes, being turned into real documentation...
-# Instructions
-# 2018-08-14
-# Philip Sargent
-Wookey told me to sort out the contents.json files in expofiles/surveyscans/2018/
-and these are my notes to remind myself what this entails.
-
-The job is to populate the contents.json file in each folder, e.g.
-
-expofiles/surveyscans/2018/2018#03/contents.json
-
-using the following input materials:
-- the wallet 2018#03 and the papers inside it. This is in the 2018 lever-arch file.
-- the folder in repo 'loser' holding the appropriate .svx files e.g.
- "caves-1623/2017-cucc-24/gshclimb.svx"
-- the script expofiles/surveyscans/2018/wallets.py (run by "python wallets.py")
-
-the "wallets.py" script creates index.html files in each folder /2018/2018#nn/
-and creates or updates a webpage for each person listed in any of the contents.json files
-in the folder/2018/.
-
-The script wallets.py requires that the //loser// repo is populated on the machine that you
-run the script on so that it can find the.svx files.
-
-If your machine has the ::loser:: repo in a different place from that expected by the script, you can just
-put the path on the command line:
-
-python wallets.py "/mnt/d/CUCC-Expo/loser/"
-
-Before doing anything else, run wallets.py. This will create empty template contents.json
-files in each folder.
-
-You may need to create missing folders,e.g. I just had to create /2018/2018#30 to #32.
-
-Every time you finish entering the data in contents.json in a folder,
-run wallets.py to update the "person" html files and to
-re-generate the index.html file for the 2018 folder as
-a whole (surveyscans/2018/index.html).
-
-There are ambiguities about how the entries in the contents.json actually lead to
-reminder instructions in the html files produced, and this is particularly
-difficult for electronic caves where the topo files are missing
-and for surface prospecting where it is not clear which of the actions
-should be done and thus which products should be produced.
-
-This needs to be documented.
-
For prospecting and surface surveying it is not clear whether the default folder
for the url link should be repo ::loser:: surface/1623/allplateau.svx
@@ -309,14 +269,14 @@ the blank template produced by the wallets.py
# Update March 2019
a consolidated to-do list of the last 3 years on the server:
-http://expo.survex.com/expofiles/surveyscans/2016-18/index.html
+http://expo.survex.com/expofiles/surveyscans/2016-18/walletindex.html
This is a hand-done kludge and only the first level of links works - which is to the individual person's page.
the lists for the last 3 years individually and all the links are working for each wallet page:
both local links to your PC and to the right location of the .svx files on the troggle server.
-http://expo.survex.com/expofiles/surveyscans/2016/index.html
-http://expo.survex.com/expofiles/surveyscans/2017/index.html
-http://expo.survex.com/expofiles/surveyscans/2018/index.html
+http://expo.survex.com/expofiles/surveyscans/2016/walletindex.html
+http://expo.survex.com/expofiles/surveyscans/2017/walletindex.html
+http://expo.survex.com/expofiles/surveyscans/2018/walletindex.html
and all the names of people have been hand-edited in the .json files to be consistent and identical.
2015 has now been done stand-alone but there is no consolidated report for 2015-18 yet.
diff --git a/noinfo/wallets.py b/noinfo/wallets.py
old mode 100644
new mode 100755
index b0e58a829..d44917ed4
--- a/noinfo/wallets.py
+++ b/noinfo/wallets.py
@@ -1,43 +1,55 @@
#!/usr/bin/env python
import sys, os, operator, urllib, json, re, time
+from datetime import datetime
# 2017 originally by Martin Green
# 2018-08-27 edited Philip Sargent
-# 2019-03-02 extended to take command line argument of loser_dir and set mod time of index.html to be sane as json file
+# 2019-03-02 extended to take command line argument of loser_dir and set mod time of index.html to be same as json file
# 2019-12-17 extra output of links to troggle-generated trip data
+# 2019-12-31 bits to make website link-checker not barf so much. Added endswith() to .startswith() for notes, elev, plan filenames
+# 2020-01-21 Now we are using Windows10-WSL1, +links to expedition logbook on every generated page
+# 2020-03-14 Adding timestamp tovisible outputs
-loser_dir = "/home/expo/loser/"
-#loser_dir = "/mnt/d/CUCC-Expo/loser/" # when running on Win10/bash
+loser_dir = "/home/expo/loser"
+#loser_dir = "/mnt/d/CUCC-Expo/loser/" # when running on Win10-WSL1
#loser_dir = "/media/philip/SD-huge/CUCC-Expo/loser/" # when running on xubuntu laptop 'barbie'
if len(sys.argv) > 1 :
if sys.argv[1] != "":
loser_dir = sys.argv[1]
-print "Loser repo is assumed to be in: " + loser_dir
+dateTimeObj=datetime.now(tz=None)
+timestamp = dateTimeObj.strftime("%d-%b-%Y (%H:%M)")
+
+print "Loser repo (for svx files) is assumed to be in: " + loser_dir + "/"
+
+drawings_dir = loser_dir[0:len(loser_dir)-5] + "drawings"
+print "Drawings repo (for drawings files) is assumed to be in: " + drawings_dir + "/"
html_base = "%(body)s"
-html_year_index = html_base % {"body": "
%(year)s surveys: wallets status
\n
List of trips: expedition/%(year)s - troggle-processed .svx files and logbook entries on server
List of trips: expedition/%(year)s - troggle-processed .svx files and logbook entries on server
\n
Outstanding Wallets
\nAs of %(timestamp)s\n
\n%(wallets)s
"}
html_complaint_items = "
%(count)i %(complaint)s
"
html_items = "
%s
"
+
+
blank_json = {
"cave": "",
"date": "",
- "description url": "",
+ "description url": "/caves",
"description written": False,
"electronic survey": False,
"elev drawn": False,
@@ -53,6 +65,7 @@ blank_json = {
"survex not required": False,
"website updated": False}
+
#need to use wallets as a dict/tuple (id,cave,name) - not sure how.
wallets = []
wallets_needing_scanning = set()
@@ -106,7 +119,8 @@ for item in sorted(os.listdir(".")):
print "Writing file %s" % (contents_path)
json_file = open(contents_path, "w")
json.dump(data, json_file, indent = 1)
- json_file.close()
+ json_file.close()
+
# Get modification time of contents.json
# print("json last modified: %s" % time.ctime(os.path.getmtime(contents_path)))
json_mtime = os.path.getmtime(contents_path)
@@ -131,36 +145,39 @@ for item in sorted(os.listdir(".")):
#Notes
notes_scanned = reduce(operator.or_, [f.startswith("note") for f in files], False)
+ notes_scanned = reduce(operator.or_, [f.endswith("note") for f in files], notes_scanned)
if not notes_scanned:
- complaints.append("The notes needs scanning (no noteN.jpg file found)")
+ complaints.append("The notes needs scanning (no noteNN.jpg or XXnote.jpg file found)")
wallets_needing_scanning.add(item)
#Plan drawing required
plan_scanned = reduce(operator.or_, [f.startswith("plan") for f in files], False)
+ plan_scanned = reduce(operator.or_, [f.endswith("plan") for f in files], plan_scanned)
plan_drawing_required = not (plan_scanned or data["plan drawn"])
if plan_drawing_required:
- complaints.append("The plan needs drawing (no planN.jpg file found)")
- person_complaints.append(" plan(s) needs drawing (no planN.jpg file found)")
+ complaints.append("The plan needs drawing (no planNN.jpg or XXplan.jpg file found)")
+ person_complaints.append(" plan(s) needs drawing (no planNN.jpg or XXplan.jpg file found)")
if not plan_drawing_required and not plan_scanned:
- complaints.append("The plan needs scanning (no planN.jpg file found)")
+ complaints.append("The plan needs scanning (no planNN.jpg or XXplan.jpg file found)")
wallets_needing_scanning.add(item)
#Elev drawing required
elev_scanned = reduce(operator.or_, [f.startswith("elev") for f in files], False)
+ elev_scanned = reduce(operator.or_, [f.endswith("elev") for f in files], elev_scanned)
elev_drawing_required = not (elev_scanned or data["elev drawn"])
if elev_drawing_required:
- complaints.append("The elev needs drawing (no elevN.jpg file found)")
- person_complaints.append(" elev(s) needs drawing (no elevN.jpg file found)")
+ complaints.append("The elev needs drawing (no elevNN.jpg or XXelev.jpg file found)")
+ person_complaints.append(" elev(s) needs drawing (no elevNN.jpg or XXelev.jpg file found)")
if not elev_drawing_required and not elev_scanned:
- complaints.append("The elev needs scanning (no elevN.jpg file found)")
+ complaints.append("The elev needs scanning (no elevNN.jpg or XXelev.jpg file found)")
wallets_needing_scanning.add(item)
#Description
if not data["description written"]:
complaints.append("The description needs writing")
person_complaints.append(" description(s) needs writing")
- description_needed = "Not present, needs doing."
+ description_needed = "A description is indicated as being needed, so may need adding into this cave page."
#QMS
@@ -170,12 +187,12 @@ for item in sorted(os.listdir(".")):
#Website
if not data["website updated"]:
- complaints.append("The guidebook description on the website needs updating")
+ complaints.append("The website is marked as needing updating (using the guidebook description)")
website_needing_updating.add(item)
#Electronic Surveys
if not data["electronic survey"]:
- complaints.append("Tunnel / Therion files need drawing")
+ complaints.append("Tunnel / Therion drawing files need drawing")
if data["survex file"]:
survex_description = data["survex file"]
@@ -183,7 +200,7 @@ for item in sorted(os.listdir(".")):
survex_description = "Not specified"
wallet_index_file = open(os.path.join(item, "index.html"), "w")
- wallet_index_file.write(html_wallet_index % {"title": item,
+ wallet_index_file.write(html_wallet_index % {"title": item, "year": year,
"cave": data["cave"],
"name": data["name"],
"date": data["date"],
@@ -237,7 +254,7 @@ for person, person_wallets in people.items():
person_summary = dict(person_summary)
year_index_file = open("index.html", "w")
-year_index_file.write(html_year_index % {"year": year, "persons": reduce(operator.add, [html_year_person % {"person": person,
+year_index_file.write(html_year_index % {"year": year, "timestamp": timestamp, "persons": reduce(operator.add, [html_year_person % {"person": person,
"complaints": reduce(operator.add,
[html_complaint_items % {"complaint": complaint,
"count": count}
@@ -270,7 +287,7 @@ year_index_file.close()
for person, item_complaint_list in people.items():
person_file = open(person + ".html", "w")
- person_file.write(html_person % {"person": person,
+ person_file.write(html_person % {"person": person, "year": year, "timestamp": timestamp,
"wallets": reduce(operator.add, [html_person_wallet_entry % {"walletname": wallet,
"walletindex": urllib.quote(wallet) + "/index.html",
"complaints": reduce(operator.add,
diff --git a/photos/adamc.jpg b/photos/adamc.jpg
deleted file mode 100644
index 50cde459c..000000000
Binary files a/photos/adamc.jpg and /dev/null differ
diff --git a/photos/aggy_finn.jpg b/photos/aggy_finn.jpg
deleted file mode 100644
index 1f23cb2de..000000000
Binary files a/photos/aggy_finn.jpg and /dev/null differ
diff --git a/photos/ajday.jpg b/photos/ajday.jpg
deleted file mode 100644
index 42a08b908..000000000
Binary files a/photos/ajday.jpg and /dev/null differ
diff --git a/photos/alexc.jpg b/photos/alexc.jpg
deleted file mode 100644
index 5e2527dbc..000000000
Binary files a/photos/alexc.jpg and /dev/null differ
diff --git a/photos/alim.jpg b/photos/alim.jpg
deleted file mode 100644
index cb3c42ed9..000000000
Binary files a/photos/alim.jpg and /dev/null differ
diff --git a/photos/andy_farrow.jpg b/photos/andy_farrow.jpg
deleted file mode 100644
index b2af18644..000000000
Binary files a/photos/andy_farrow.jpg and /dev/null differ
diff --git a/photos/andya.jpg b/photos/andya.jpg
deleted file mode 100644
index d5976bf27..000000000
Binary files a/photos/andya.jpg and /dev/null differ
diff --git a/photos/andyc.jpg b/photos/andyc.jpg
deleted file mode 100644
index 0df64e746..000000000
Binary files a/photos/andyc.jpg and /dev/null differ
diff --git a/photos/andyw.jpg b/photos/andyw.jpg
deleted file mode 100644
index 0d1dfb1d4..000000000
Binary files a/photos/andyw.jpg and /dev/null differ
diff --git a/photos/bderby.jpg b/photos/bderby.jpg
deleted file mode 100644
index d3b0760de..000000000
Binary files a/photos/bderby.jpg and /dev/null differ
diff --git a/photos/beckal.jpg b/photos/beckal.jpg
deleted file mode 100644
index a6805d667..000000000
Binary files a/photos/beckal.jpg and /dev/null differ
diff --git a/photos/benvm.jpg b/photos/benvm.jpg
deleted file mode 100644
index 671eec76e..000000000
Binary files a/photos/benvm.jpg and /dev/null differ
diff --git a/photos/bill_miners.jpg b/photos/bill_miners.jpg
deleted file mode 100644
index c67549f49..000000000
Binary files a/photos/bill_miners.jpg and /dev/null differ
diff --git a/photos/billh.jpg b/photos/billh.jpg
deleted file mode 100644
index a3d16c025..000000000
Binary files a/photos/billh.jpg and /dev/null differ
diff --git a/photos/bishop.jpg b/photos/bishop.jpg
deleted file mode 100644
index 658a27550..000000000
Binary files a/photos/bishop.jpg and /dev/null differ
diff --git a/photos/bobb.jpg b/photos/bobb.jpg
deleted file mode 100644
index 22f6bacdd..000000000
Binary files a/photos/bobb.jpg and /dev/null differ
diff --git a/photos/brian.jpg b/photos/brian.jpg
deleted file mode 100644
index 9609023da..000000000
Binary files a/photos/brian.jpg and /dev/null differ
diff --git a/photos/budge.jpg b/photos/budge.jpg
deleted file mode 100644
index e9101e3e0..000000000
Binary files a/photos/budge.jpg and /dev/null differ
diff --git a/photos/callum.jpg b/photos/callum.jpg
deleted file mode 100644
index 2f99b87fc..000000000
Binary files a/photos/callum.jpg and /dev/null differ
diff --git a/photos/chrisd.jpg b/photos/chrisd.jpg
deleted file mode 100644
index 4dd9e4062..000000000
Binary files a/photos/chrisd.jpg and /dev/null differ
diff --git a/photos/chriss.jpg b/photos/chriss.jpg
deleted file mode 100644
index a830d5547..000000000
Binary files a/photos/chriss.jpg and /dev/null differ
diff --git a/photos/claire_purnell.jpg b/photos/claire_purnell.jpg
deleted file mode 100644
index 38a582f20..000000000
Binary files a/photos/claire_purnell.jpg and /dev/null differ
diff --git a/photos/clive_george.jpg b/photos/clive_george.jpg
deleted file mode 100644
index 993d9ddca..000000000
Binary files a/photos/clive_george.jpg and /dev/null differ
diff --git a/photos/dan_mace.jpg b/photos/dan_mace.jpg
deleted file mode 100644
index 4946b1f5b..000000000
Binary files a/photos/dan_mace.jpg and /dev/null differ
diff --git a/photos/dave_collins.jpg b/photos/dave_collins.jpg
deleted file mode 100644
index e755b76de..000000000
Binary files a/photos/dave_collins.jpg and /dev/null differ
diff --git a/photos/dave_galvin.jpg b/photos/dave_galvin.jpg
deleted file mode 100644
index 87add7583..000000000
Binary files a/photos/dave_galvin.jpg and /dev/null differ
diff --git a/photos/dave_horsley.jpg b/photos/dave_horsley.jpg
deleted file mode 100644
index 4bc92041e..000000000
Binary files a/photos/dave_horsley.jpg and /dev/null differ
diff --git a/photos/daveb.jpg b/photos/daveb.jpg
deleted file mode 100644
index 983456965..000000000
Binary files a/photos/daveb.jpg and /dev/null differ
diff --git a/photos/davef.jpg b/photos/davef.jpg
deleted file mode 100644
index b9e900351..000000000
Binary files a/photos/davef.jpg and /dev/null differ
diff --git a/photos/daveh.jpg b/photos/daveh.jpg
deleted file mode 100644
index ead14637e..000000000
Binary files a/photos/daveh.jpg and /dev/null differ
diff --git a/photos/davel.jpg b/photos/davel.jpg
deleted file mode 100644
index e515b3f06..000000000
Binary files a/photos/davel.jpg and /dev/null differ
diff --git a/photos/del.jpg b/photos/del.jpg
deleted file mode 100644
index 93de5f09e..000000000
Binary files a/photos/del.jpg and /dev/null differ
diff --git a/photos/dolby.jpg b/photos/dolby.jpg
deleted file mode 100644
index 6281041bd..000000000
Binary files a/photos/dolby.jpg and /dev/null differ
diff --git a/photos/dougf.jpg b/photos/dougf.jpg
deleted file mode 100644
index ecb3dd369..000000000
Binary files a/photos/dougf.jpg and /dev/null differ
diff --git a/photos/earl.jpg b/photos/earl.jpg
deleted file mode 100644
index b95b1713b..000000000
Binary files a/photos/earl.jpg and /dev/null differ
diff --git a/photos/emma_wilson.jpg b/photos/emma_wilson.jpg
deleted file mode 100644
index 9ef658985..000000000
Binary files a/photos/emma_wilson.jpg and /dev/null differ
diff --git a/photos/erin.jpg b/photos/erin.jpg
deleted file mode 100644
index 6edd85ac2..000000000
Binary files a/photos/erin.jpg and /dev/null differ
diff --git a/photos/fay.jpg b/photos/fay.jpg
deleted file mode 100644
index c7ec32954..000000000
Binary files a/photos/fay.jpg and /dev/null differ
diff --git a/photos/fran.jpg b/photos/fran.jpg
deleted file mode 100644
index ec22410ec..000000000
Binary files a/photos/fran.jpg and /dev/null differ
diff --git a/photos/francis_turner.jpg b/photos/francis_turner.jpg
deleted file mode 100644
index cee416564..000000000
Binary files a/photos/francis_turner.jpg and /dev/null differ
diff --git a/photos/frankt.jpg b/photos/frankt.jpg
deleted file mode 100644
index 478552ae4..000000000
Binary files a/photos/frankt.jpg and /dev/null differ
diff --git a/photos/gails.jpg b/photos/gails.jpg
deleted file mode 100644
index 8eb56f351..000000000
Binary files a/photos/gails.jpg and /dev/null differ
diff --git a/photos/gill_lindsey.jpg b/photos/gill_lindsey.jpg
deleted file mode 100644
index 71cb621eb..000000000
Binary files a/photos/gill_lindsey.jpg and /dev/null differ
diff --git a/photos/glen.jpg b/photos/glen.jpg
deleted file mode 100644
index 5c18f774d..000000000
Binary files a/photos/glen.jpg and /dev/null differ
diff --git a/photos/gnash.jpg b/photos/gnash.jpg
deleted file mode 100644
index 1366fe7a7..000000000
Binary files a/photos/gnash.jpg and /dev/null differ
diff --git a/photos/haines.jpg b/photos/haines.jpg
deleted file mode 100644
index 4b5b4d215..000000000
Binary files a/photos/haines.jpg and /dev/null differ
diff --git a/photos/henri_welbourne.jpg b/photos/henri_welbourne.jpg
deleted file mode 100644
index ce230f67b..000000000
Binary files a/photos/henri_welbourne.jpg and /dev/null differ
diff --git a/photos/hilary_greaves.jpg b/photos/hilary_greaves.jpg
deleted file mode 100644
index b32aa3f48..000000000
Binary files a/photos/hilary_greaves.jpg and /dev/null differ
diff --git a/photos/hippo.jpg b/photos/hippo.jpg
deleted file mode 100644
index 10d50be4b..000000000
Binary files a/photos/hippo.jpg and /dev/null differ
diff --git a/photos/hughs.jpg b/photos/hughs.jpg
deleted file mode 100644
index 413082edf..000000000
Binary files a/photos/hughs.jpg and /dev/null differ
diff --git a/photos/ian_harris.jpg b/photos/ian_harris.jpg
deleted file mode 100644
index 8da51e36d..000000000
Binary files a/photos/ian_harris.jpg and /dev/null differ
diff --git a/photos/ianm.jpg b/photos/ianm.jpg
deleted file mode 100644
index 65672c3ed..000000000
Binary files a/photos/ianm.jpg and /dev/null differ
diff --git a/photos/jab.jpg b/photos/jab.jpg
deleted file mode 100644
index 6970a772d..000000000
Binary files a/photos/jab.jpg and /dev/null differ
diff --git a/photos/janetm.jpg b/photos/janetm.jpg
deleted file mode 100644
index 3cdf6b65f..000000000
Binary files a/photos/janetm.jpg and /dev/null differ
diff --git a/photos/jared.jpg b/photos/jared.jpg
deleted file mode 100644
index e21539b63..000000000
Binary files a/photos/jared.jpg and /dev/null differ
diff --git a/photos/jennyb.jpg b/photos/jennyb.jpg
deleted file mode 100644
index 1e982a183..000000000
Binary files a/photos/jennyb.jpg and /dev/null differ
diff --git a/photos/jerry.jpg b/photos/jerry.jpg
deleted file mode 100644
index 77225ce7b..000000000
Binary files a/photos/jerry.jpg and /dev/null differ
diff --git a/photos/jjr.jpg b/photos/jjr.jpg
deleted file mode 100644
index 6d896bacb..000000000
Binary files a/photos/jjr.jpg and /dev/null differ
diff --git a/photos/joel.jpg b/photos/joel.jpg
deleted file mode 100644
index fce776d57..000000000
Binary files a/photos/joel.jpg and /dev/null differ
diff --git a/photos/john_cordingley.jpg b/photos/john_cordingley.jpg
deleted file mode 100644
index 46dcf22d2..000000000
Binary files a/photos/john_cordingley.jpg and /dev/null differ
diff --git a/photos/johnp.jpg b/photos/johnp.jpg
deleted file mode 100644
index 483b19712..000000000
Binary files a/photos/johnp.jpg and /dev/null differ
diff --git a/photos/jont_leach.jpg b/photos/jont_leach.jpg
deleted file mode 100644
index 35c61a86c..000000000
Binary files a/photos/jont_leach.jpg and /dev/null differ
diff --git a/photos/jonw.jpg b/photos/jonw.jpg
deleted file mode 100644
index 88d26d828..000000000
Binary files a/photos/jonw.jpg and /dev/null differ
diff --git a/photos/jtodd.jpg b/photos/jtodd.jpg
deleted file mode 100644
index 3c385d6b6..000000000
Binary files a/photos/jtodd.jpg and /dev/null differ
diff --git a/photos/judith.jpg b/photos/judith.jpg
deleted file mode 100644
index 3b8a99bee..000000000
Binary files a/photos/judith.jpg and /dev/null differ
diff --git a/photos/juliab.jpg b/photos/juliab.jpg
deleted file mode 100644
index b8994e2f7..000000000
Binary files a/photos/juliab.jpg and /dev/null differ
diff --git a/photos/julian_shilton.jpg b/photos/julian_shilton.jpg
deleted file mode 100644
index 00067c8c0..000000000
Binary files a/photos/julian_shilton.jpg and /dev/null differ
diff --git a/photos/juliette_kelly.jpg b/photos/juliette_kelly.jpg
deleted file mode 100644
index a31ac7168..000000000
Binary files a/photos/juliette_kelly.jpg and /dev/null differ
diff --git a/photos/justin_powell.jpg b/photos/justin_powell.jpg
deleted file mode 100644
index 937a932d0..000000000
Binary files a/photos/justin_powell.jpg and /dev/null differ
diff --git a/photos/katej.jpg b/photos/katej.jpg
deleted file mode 100644
index 886866f9e..000000000
Binary files a/photos/katej.jpg and /dev/null differ
diff --git a/photos/keith.jpg b/photos/keith.jpg
deleted file mode 100644
index a6437c910..000000000
Binary files a/photos/keith.jpg and /dev/null differ
diff --git a/photos/kenb.jpg b/photos/kenb.jpg
deleted file mode 100644
index 69349c705..000000000
Binary files a/photos/kenb.jpg and /dev/null differ
diff --git a/photos/kristian.jpg b/photos/kristian.jpg
deleted file mode 100644
index 536cbe916..000000000
Binary files a/photos/kristian.jpg and /dev/null differ
diff --git a/photos/mark_byers.jpg b/photos/mark_byers.jpg
deleted file mode 100644
index ccc93861e..000000000
Binary files a/photos/mark_byers.jpg and /dev/null differ
diff --git a/photos/mark_scott.jpg b/photos/mark_scott.jpg
deleted file mode 100644
index ff8ad55b9..000000000
Binary files a/photos/mark_scott.jpg and /dev/null differ
diff --git a/photos/markf.jpg b/photos/markf.jpg
deleted file mode 100644
index 76056296a..000000000
Binary files a/photos/markf.jpg and /dev/null differ
diff --git a/photos/markm.jpg b/photos/markm.jpg
deleted file mode 100644
index 480ff1cb3..000000000
Binary files a/photos/markm.jpg and /dev/null differ
diff --git a/photos/markr.jpg b/photos/markr.jpg
deleted file mode 100644
index aee617cfc..000000000
Binary files a/photos/markr.jpg and /dev/null differ
diff --git a/photos/marks.jpg b/photos/marks.jpg
deleted file mode 100644
index a406e510f..000000000
Binary files a/photos/marks.jpg and /dev/null differ
diff --git a/photos/martin_sluka.jpg b/photos/martin_sluka.jpg
deleted file mode 100644
index b866853b7..000000000
Binary files a/photos/martin_sluka.jpg and /dev/null differ
diff --git a/photos/marting.jpg b/photos/marting.jpg
deleted file mode 100644
index 972e8a403..000000000
Binary files a/photos/marting.jpg and /dev/null differ
diff --git a/photos/mattk.jpg b/photos/mattk.jpg
deleted file mode 100644
index d82628eb5..000000000
Binary files a/photos/mattk.jpg and /dev/null differ
diff --git a/photos/mike_baslington.jpg b/photos/mike_baslington.jpg
deleted file mode 100644
index b544aba95..000000000
Binary files a/photos/mike_baslington.jpg and /dev/null differ
diff --git a/photos/mike_perryman.jpg b/photos/mike_perryman.jpg
deleted file mode 100644
index c3fa788b7..000000000
Binary files a/photos/mike_perryman.jpg and /dev/null differ
diff --git a/photos/mikem.jpg b/photos/mikem.jpg
deleted file mode 100644
index 0571d7a37..000000000
Binary files a/photos/mikem.jpg and /dev/null differ
diff --git a/photos/miketa.jpg b/photos/miketa.jpg
deleted file mode 100644
index 2680d5b96..000000000
Binary files a/photos/miketa.jpg and /dev/null differ
diff --git a/photos/msabry.jpg b/photos/msabry.jpg
deleted file mode 100644
index f30ebb896..000000000
Binary files a/photos/msabry.jpg and /dev/null differ
diff --git a/photos/msd.jpg b/photos/msd.jpg
deleted file mode 100644
index 4d43a0d41..000000000
Binary files a/photos/msd.jpg and /dev/null differ
diff --git a/photos/msd204.jpg b/photos/msd204.jpg
deleted file mode 100644
index 3badc3f08..000000000
Binary files a/photos/msd204.jpg and /dev/null differ
diff --git a/photos/mts.jpg b/photos/mts.jpg
deleted file mode 100644
index 262e5d429..000000000
Binary files a/photos/mts.jpg and /dev/null differ
diff --git a/photos/muff.jpg b/photos/muff.jpg
deleted file mode 100644
index 0b2a4ee50..000000000
Binary files a/photos/muff.jpg and /dev/null differ
diff --git a/photos/nadia.jpg b/photos/nadia.jpg
deleted file mode 100644
index e94281e06..000000000
Binary files a/photos/nadia.jpg and /dev/null differ
diff --git a/photos/naomi.jpg b/photos/naomi.jpg
deleted file mode 100644
index c2b4c3df0..000000000
Binary files a/photos/naomi.jpg and /dev/null differ
diff --git a/photos/natdalton.jpg b/photos/natdalton.jpg
deleted file mode 100644
index 9093ba9f6..000000000
Binary files a/photos/natdalton.jpg and /dev/null differ
diff --git a/photos/nialp.jpg b/photos/nialp.jpg
deleted file mode 100644
index f2efca906..000000000
Binary files a/photos/nialp.jpg and /dev/null differ
diff --git a/photos/nick_proctor.jpg b/photos/nick_proctor.jpg
deleted file mode 100644
index ea5636c2e..000000000
Binary files a/photos/nick_proctor.jpg and /dev/null differ
diff --git a/photos/nickt.jpg b/photos/nickt.jpg
deleted file mode 100644
index c158ae8ae..000000000
Binary files a/photos/nickt.jpg and /dev/null differ
diff --git a/photos/nicky.jpg b/photos/nicky.jpg
deleted file mode 100644
index 2a510d00f..000000000
Binary files a/photos/nicky.jpg and /dev/null differ
diff --git a/photos/olly.jpg b/photos/olly.jpg
deleted file mode 100644
index 1518a49cb..000000000
Binary files a/photos/olly.jpg and /dev/null differ
diff --git a/photos/ollym.jpg b/photos/ollym.jpg
deleted file mode 100644
index 47ec5a530..000000000
Binary files a/photos/ollym.jpg and /dev/null differ
diff --git a/photos/paul_hammond.jpg b/photos/paul_hammond.jpg
deleted file mode 100644
index 17e87e1c0..000000000
Binary files a/photos/paul_hammond.jpg and /dev/null differ
diff --git a/photos/paul_theobald.jpg b/photos/paul_theobald.jpg
deleted file mode 100644
index d0e9ae77b..000000000
Binary files a/photos/paul_theobald.jpg and /dev/null differ
diff --git a/photos/pauls.jpg b/photos/pauls.jpg
deleted file mode 100644
index 10e4ffe06..000000000
Binary files a/photos/pauls.jpg and /dev/null differ
diff --git a/photos/penny.jpg b/photos/penny.jpg
deleted file mode 100644
index 0f117e0c7..000000000
Binary files a/photos/penny.jpg and /dev/null differ
diff --git a/photos/pete_swain.jpg b/photos/pete_swain.jpg
deleted file mode 100644
index 8b3c3bfa9..000000000
Binary files a/photos/pete_swain.jpg and /dev/null differ
diff --git a/photos/petel.jpg b/photos/petel.jpg
deleted file mode 100644
index c628c6c70..000000000
Binary files a/photos/petel.jpg and /dev/null differ
diff --git a/photos/peterc.jpg b/photos/peterc.jpg
deleted file mode 100644
index 4986b71ad..000000000
Binary files a/photos/peterc.jpg and /dev/null differ
diff --git a/photos/phil_underwood.jpg b/photos/phil_underwood.jpg
deleted file mode 100644
index dc041b850..000000000
Binary files a/photos/phil_underwood.jpg and /dev/null differ
diff --git a/photos/philt.jpg b/photos/philt.jpg
deleted file mode 100644
index fd8d9e986..000000000
Binary files a/photos/philt.jpg and /dev/null differ
diff --git a/photos/planc.jpg b/photos/planc.jpg
deleted file mode 100644
index ca38c76e6..000000000
Binary files a/photos/planc.jpg and /dev/null differ
diff --git a/photos/planc2.jpg b/photos/planc2.jpg
deleted file mode 100644
index 0c6a4216b..000000000
Binary files a/photos/planc2.jpg and /dev/null differ
diff --git a/photos/plgod.jpg b/photos/plgod.jpg
deleted file mode 100644
index 391174a2f..000000000
Binary files a/photos/plgod.jpg and /dev/null differ
diff --git a/photos/pms.jpg b/photos/pms.jpg
deleted file mode 100644
index 1afcd35a5..000000000
Binary files a/photos/pms.jpg and /dev/null differ
diff --git a/photos/pms2.jpg b/photos/pms2.jpg
deleted file mode 100644
index 921c48675..000000000
Binary files a/photos/pms2.jpg and /dev/null differ
diff --git a/photos/rachel.jpg b/photos/rachel.jpg
deleted file mode 100644
index 4ce71ab8f..000000000
Binary files a/photos/rachel.jpg and /dev/null differ
diff --git a/photos/ralph_harwood.jpg b/photos/ralph_harwood.jpg
deleted file mode 100644
index 200785a42..000000000
Binary files a/photos/ralph_harwood.jpg and /dev/null differ
diff --git a/photos/rhrw.jpg b/photos/rhrw.jpg
deleted file mode 100644
index c87f65cd5..000000000
Binary files a/photos/rhrw.jpg and /dev/null differ
diff --git a/photos/rmt.jpg b/photos/rmt.jpg
deleted file mode 100644
index b82661c04..000000000
Binary files a/photos/rmt.jpg and /dev/null differ
diff --git a/photos/roshni.jpg b/photos/roshni.jpg
deleted file mode 100644
index 7efafee5b..000000000
Binary files a/photos/roshni.jpg and /dev/null differ
diff --git a/photos/saml.jpg b/photos/saml.jpg
deleted file mode 100644
index cc53ab120..000000000
Binary files a/photos/saml.jpg and /dev/null differ
diff --git a/photos/sandeep.jpg b/photos/sandeep.jpg
deleted file mode 100644
index bd1d5143e..000000000
Binary files a/photos/sandeep.jpg and /dev/null differ
diff --git a/photos/sarah_white.jpg b/photos/sarah_white.jpg
deleted file mode 100644
index e89def26e..000000000
Binary files a/photos/sarah_white.jpg and /dev/null differ
diff --git a/photos/scf77.jpg b/photos/scf77.jpg
deleted file mode 100644
index 307670ae9..000000000
Binary files a/photos/scf77.jpg and /dev/null differ
diff --git a/photos/simon_flower.jpg b/photos/simon_flower.jpg
deleted file mode 100644
index 809ebaa62..000000000
Binary files a/photos/simon_flower.jpg and /dev/null differ
diff --git a/photos/simonk.jpg b/photos/simonk.jpg
deleted file mode 100644
index 964d9afc2..000000000
Binary files a/photos/simonk.jpg and /dev/null differ
diff --git a/photos/simonr.jpg b/photos/simonr.jpg
deleted file mode 100644
index 36a892ba7..000000000
Binary files a/photos/simonr.jpg and /dev/null differ
diff --git a/photos/stefk.jpg b/photos/stefk.jpg
deleted file mode 100644
index 54ce43d91..000000000
Binary files a/photos/stefk.jpg and /dev/null differ
diff --git a/photos/steveb.jpg b/photos/steveb.jpg
deleted file mode 100644
index 4f8b30ed9..000000000
Binary files a/photos/steveb.jpg and /dev/null differ
diff --git a/photos/stuartb.jpg b/photos/stuartb.jpg
deleted file mode 100644
index 8ed393c4b..000000000
Binary files a/photos/stuartb.jpg and /dev/null differ
diff --git a/photos/sue_sharman.jpg b/photos/sue_sharman.jpg
deleted file mode 100644
index 7bbd7276b..000000000
Binary files a/photos/sue_sharman.jpg and /dev/null differ
diff --git a/photos/tanya.jpg b/photos/tanya.jpg
deleted file mode 100644
index 926b13981..000000000
Binary files a/photos/tanya.jpg and /dev/null differ
diff --git a/photos/tess.jpg b/photos/tess.jpg
deleted file mode 100644
index c8aab9a3e..000000000
Binary files a/photos/tess.jpg and /dev/null differ
diff --git a/photos/tim_farrar.jpg b/photos/tim_farrar.jpg
deleted file mode 100644
index 73b5a3a96..000000000
Binary files a/photos/tim_farrar.jpg and /dev/null differ
diff --git a/photos/timp.jpg b/photos/timp.jpg
deleted file mode 100644
index 0c84713c8..000000000
Binary files a/photos/timp.jpg and /dev/null differ
diff --git a/photos/timvb.jpg b/photos/timvb.jpg
deleted file mode 100644
index 14993beea..000000000
Binary files a/photos/timvb.jpg and /dev/null differ
diff --git a/photos/tinaw.jpg b/photos/tinaw.jpg
deleted file mode 100644
index 49d1567a0..000000000
Binary files a/photos/tinaw.jpg and /dev/null differ
diff --git a/photos/tonym.jpg b/photos/tonym.jpg
deleted file mode 100644
index da72181f1..000000000
Binary files a/photos/tonym.jpg and /dev/null differ
diff --git a/photos/tonyr.jpg b/photos/tonyr.jpg
deleted file mode 100644
index e5376ebcc..000000000
Binary files a/photos/tonyr.jpg and /dev/null differ
diff --git a/photos/vicb.jpg b/photos/vicb.jpg
deleted file mode 100644
index 6428adfa4..000000000
Binary files a/photos/vicb.jpg and /dev/null differ
diff --git a/photos/wiggy.jpg b/photos/wiggy.jpg
deleted file mode 100644
index 86a8dda14..000000000
Binary files a/photos/wiggy.jpg and /dev/null differ
diff --git a/photos/wook91.jpg b/photos/wook91.jpg
deleted file mode 100644
index 0958f494b..000000000
Binary files a/photos/wook91.jpg and /dev/null differ
diff --git a/photos/wookey.jpg b/photos/wookey.jpg
deleted file mode 100644
index d7affcd39..000000000
Binary files a/photos/wookey.jpg and /dev/null differ
diff --git a/photos/wstead.jpg b/photos/wstead.jpg
deleted file mode 100644
index 2e74e8bce..000000000
Binary files a/photos/wstead.jpg and /dev/null differ
diff --git a/scripts/detect-filename-clashes.py b/scripts/detect-filename-clashes.py
new file mode 100644
index 000000000..bdfe564e5
--- /dev/null
+++ b/scripts/detect-filename-clashes.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+"""
+Recursively checks that no filenames from the current working directory
+down are the same, even if they are in different subdirectories. Exits
+with status 0 if no matching filenames are found, or 1 if a match is
+found.
+
+2020-03-25 PMS Copied originally from https://gist.github.com/seanh/229455
+Modified to lowercase everything before checking, to detect clashes caused
+by capitalisation, and to capture full path for all clashing files
+"""
+import sys,os
+print "Checking for filename clashes...",
+
+def sortSecond(val):
+ return val[1]
+
+allfilenames = []
+detect = []
+clashes = []
+report = []
+exclude = set([".git",".hg"])
+for root, dirs, files in os.walk('.', topdown=True):
+ dirs[:] = [d for d in dirs if d not in exclude] # modifies dirs in-place.
+ for filename in files:
+ if filename.endswith('~'):
+ # Ignore automatically created backup files.
+ continue
+ if os.path.islink(os.path.join(root,filename)):
+ # Don't count symlinks as filename clashes.
+ continue
+ allfilenames.append((root,filename))
+ if filename.lower() in detect:
+ clashes.append(filename.lower())
+ else:
+ detect.append(filename.lower())
+
+print len(allfilenames), 'files found...',
+if clashes == []:
+ print 'OK'
+ sys.exit(0)
+else:
+ print len(clashes)," clash(es) found."
+ for r,f in allfilenames:
+ if f in clashes:
+ report.append((r,f))
+ # sorts the array in descending according to
+ # second element: the clashing filename
+ report.sort(key = sortSecond)
+ for r,f in report:
+ print os.path.join(r,f)
+ print len(clashes)," clash(es) found."
+ sys.exit(1)
\ No newline at end of file
diff --git a/years/2012/logbook.html b/years/2012/logbook.html
index 55335d1d8..3a3dbf2ef 100644
--- a/years/2012/logbook.html
+++ b/years/2012/logbook.html
@@ -4,10 +4,6 @@
2012 Expo Logbook
-
-
Expo 2012
-
-
+
+
Expo 2012
+
+
+
2012-07-29
Julia Bradshaw, Anthony Day, Martin Green, Jessica Stirrups, Emma Wilson
Holy Bondage
@@ -29,7 +30,7 @@ Witnessed: Jessica Stirrups
Emma Wilson
-
+
Rope for rigging down to pushing in 204
@@ -54,12 +55,12 @@ Fat Cat => 140 10mm
2012-08-07
-
Wookey Serena
+
Wookey, Serena
Wook comes out in the Wookmobile
Wook & Serena filled the van with lots of food & gear & set off for
expo. Remarkably traffic-free trip in the UK & across europe. Realised
-at dover that we'd failed to bring a map of europe in physical or
+at Dover that we'd failed to bring a map of europe in physical or
digital form, so did a quick download + make plan on cheap UK data.
Worked very well offline so failed to get lost at all. Had 4hrs kip
en-route.
diff --git a/years/2013/logbook.html b/years/2013/logbook.html
index 5d23438c9..34b7991fa 100644
--- a/years/2013/logbook.html
+++ b/years/2013/logbook.html
@@ -4,22 +4,22 @@
2013 Expo Logbook
+
-
-
CUCC Logbook 2013
-
+
+
CUCC Logbook 2013
2013-07-23
@@ -710,14 +710,14 @@ out and slowly caved back to outside.
T/U: 14hrs
-
+
2013-08-07
+
hris
+
String Theory Rigging Guide
Estimated lengths by CD. Please amend on derig! Chris
-
-
For the Bad Aussee rag:
Some poeple may wonder who the muddy group are who camp opposite the
@@ -726,7 +726,7 @@ back over the last 30 years. The group is the Cambridge University
Caving Club, and they have been exploring caves that lie beneath the
Loser plateau. The local sheperds will be aware of the many holes on
the plateau that can swallow their sheep, -
-
+
2013-08-07
@@ -1014,12 +1014,12 @@ further 10-15m pitch which is undescended.
The team then derigged.
-
+
Dear Expo, Thanks very much for having us! See you again another year. Fleur & Pete
PS - We have taken the old stretcher, some rope + Stu + Chris and all
their shit. Will return CUCC kit at Hidden Earth.