takes a parameter which is path for loser

This commit is contained in:
Philip Sargent 2020-04-26 23:41:29 +01:00
parent 60fe51df12
commit 2d856f7cd3

View File

@ -1,42 +1,57 @@
#!/usr/bin/env python
import os, operator, urllib, json, re
import sys, os, operator, urllib, json, re, time
# 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-12-17 extra output of links to troggle-generated trip data
loser_dir = "/home/expo/loser/"
#loser_dir = "/mnt/d/CUCC-Expo/loser/" # when running on Win10/bash
#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
html_base = "<html><body>%(body)s</body></html>"
html_year_index = html_base % {"body": "<H1>%(year)s surveys</H1><H2>Persons</H2><UL>%(persons)s</UL><H2>Wallets</H2><table>%(wallets)s</table><H2>Needing Scanning</H2><ul>%(needing scanning)s</ul><H2>Website needing updating</H2><ul>%(website needing updating)s</ul>"}
html_year_person = "<li><a href='%(person)s.html'>%(person)s</a><ul>%(complaints)s</ul></li>"
html_year_wallet_entry = "<tr><td><a href='%(walletindex)s'>%(walletname)s %(cave)s %(name)s</a></td> <td>%(complaints)s</td></tr>"
html_person_wallet_entry = "<li><a href='%(walletindex)s'>%(walletname)s</a> <ul>%(complaints)s</ul></li>"
html_year_scanning_entry = "<li><a href='%(walletindex)s'>%(walletname)s %(cave)s %(name)s</a></li>"
html_wallet_file_entry = "<li><a href='%(fileurl)s'>%(filename)s</a></li>"
html_wallet_index = html_base % {"body": "<H1>%(title)s %(cave)s %(name)s</H1><p>Date %(date)s</p><p>People %(people)s</p><p> <a href='/%(description)s'>Description</a></p><p>Survex file: %(survex)s</p><H2>Issues</H2>%(complaints)s<H2>Files</H2><UL>%(files)s</UL>"}
html_year_index = html_base % {"body": "<H1>%(year)s surveys: wallets status</H1>\n<p>List of trips: <a href=\"http://expo.survex.com/expedition/%(year)s\">expedition/%(year)s</a> - troggle-processed .svx files and logbook entries on server</p>\n<H2>Persons</H2>\n<UL>\n%(persons)s</UL>\n<H2>Wallets</H2>\n<table>%(wallets)s</table>\n<H2>Needing Scanning</H2>\n<UL>\n%(needing scanning)s</ul>\n<H2>Website (Guidebook description) needing updating\n</H2>\n<UL>\n%(website needing updating)s</ul>\n"}
html_year_person = "<li><a href='%(person)s.html'>%(person)s</a><UL>\n%(complaints)s</ul></li>\n"
html_year_wallet_entry = "<tr><td><a href='%(walletindex)s'>%(walletname)s %(cave)s %(name)s</a></td> <td>%(complaints)s</td></tr>\n"
html_person_wallet_entry = "<li><a href='%(walletindex)s'>%(walletname)s</a> <UL>\n%(complaints)s</ul></li>\n"
html_year_scanning_entry = "<li><a href='%(walletindex)s'>%(walletname)s %(cave)s %(name)s</a></li>\n"
html_wallet_file_entry = "<li><a href='%(fileurl)s'>%(filename)s</a></li>\n"
html_wallet_index = html_base % {"body": "<H1>%(title)s : %(cave)s : %(name)s</H1>\n<p>Date: %(date)s</p><p>People: %(people)s</p>\n<p>Cave <a href='%(description)s'>Guidebook description</a> - %(description_needed)s \n<p>Survex file:<br>&nbsp;&nbsp;Local (Windows): <a href='%(loser_dirw)s%(survex)s' download>%(loser_dirw)s%(survex)s</a><br>&nbsp;&nbsp;Local (Linux): <a href='%(loser_dir)s%(survex)s' download>%(loser_dir)s%(survex)s</a><br>&nbsp;&nbsp;Server: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='http://expo.survex.com/survexfile/%(survex)s' download>%(survex)s</a></p><a href='../index.html'>Wallet index for this year</a> </p>\n<H2>Issues</H2>\n%(complaints)s\n<H2>Files</H2>\n<UL>\n%(files)s</UL>\n"}
html_survex_required = {True: "Survex ", False: ""}
html_plan_scanned = {True: "", False: "Plan "}
html_elev_scanned = {True: "", False: "Elev "}
html_description_written = {True: "", False: "Desc "}
html_qms_written = {True: "", False: "QMs "}
html_status = {True: "Issues: ", False: ""}
html_person = html_base % {"body": "<H1>%(person)s</H1><H2>Outstanding Wallets</H2><UL>%(wallets)s</UL>"}
html_person = html_base % {"body": "<H1>%(person)s</H1><H2>Outstanding Wallets</H2><UL>\n%(wallets)s</UL>"}
html_complaint_items = "<li>%(count)i %(complaint)s</li>"
html_items = "<li>%s</li>"
blank_json = {"survex file": "",
"survex not required": False,
"plan not required": False,
"elev not required": False,
"plan drawn": False,
"elev drawn": False,
"description written": False,
"qms written": False,
"website updated": False,
"electronic survey": False,
"elev not required": False,
"date": "",
"people": ["Unknown"],
"description url": "",
"cave": "",
"name": ""}
blank_json = {
"cave": "",
"date": "",
"description url": "",
"description written": False,
"electronic survey": False,
"elev drawn": False,
"elev not required": False,
"name": "",
"people": [
"Unknown"
],
"plan drawn": False,
"plan not required": False,
"qms written": False,
"survex file": "",
"survex not required": False,
"website updated": False}
#need to use wallets as a dict/tuple (id,cave,name) - not sure how.
wallets = []
@ -47,21 +62,29 @@ people = {}
#use dir this file is in to get current year
path,year = os.path.split(os.path.dirname(os.path.realpath(__file__)))
for item in os.listdir("."):
print "Year: " + year
for item in sorted(os.listdir(".")):
if os.path.isdir(item):
files = []
for f in os.listdir(os.path.join(".", item)):
if f not in ["contents.json", "contents.json~","index.html"] and os.path.isfile(os.path.join(".", item, f)):
files.append(f)
contents_path = os.path.join(".", item, "contents.json")
print "Reading file %s" % (contents_path)
# print "Trying to read file %s" % (contents_path)
if not os.path.isfile(contents_path):
print "Creating file %s from template" % (contents_path)
json_file = open(contents_path, "w")
json.dump(blank_json, json_file, indent = 1)
json.dump(blank_json, json_file, sort_keys=True, indent = 1)
json_file.close()
# print "Reading file %s" % (contents_path)
json_file = open(contents_path)
#print json_file
data = json.load(json_file)
if not data["people"]:
data["people"]=["NOBODY"]
json_file.close()
write_required = False
try:
@ -80,14 +103,16 @@ for item in os.listdir("."):
write_required = True
#print write_required
if write_required:
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)
#make wallet descriptions
#Survex
survex_required = (data["survex not required"] and data["survex file"] == "") or \
not (not data["survex not required"] and os.path.isfile(os.path.join(loser_dir, data["survex file"])))
@ -97,7 +122,7 @@ for item in os.listdir("."):
if not data["survex not required"] and data["survex file"] == "":
survex_complaint = "A survex file is required, but has not been specified!"
if not data["survex not required"] and not os.path.isfile(os.path.join(loser_dir, data["survex file"])):
survex_complaint = "The specified survex file (%s) does not exist here!" % data["survex file"]
survex_complaint = "The specified survex file (%s) does not exist here!" % os.path.join(loser_dir, data["survex file"])
complaints = []
person_complaints = []
if survex_required:
@ -117,7 +142,7 @@ for item in os.listdir("."):
complaints.append("The plan needs drawing (no planN.jpg file found)")
person_complaints.append(" plan(s) needs drawing (no planN.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 <em>scanning</em> (no planN.jpg file found)")
wallets_needing_scanning.add(item)
@ -128,13 +153,15 @@ for item in os.listdir("."):
complaints.append("The elev needs drawing (no elevN.jpg file found)")
person_complaints.append(" elev(s) needs drawing (no elevN.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 <em>scanning</em> (no elevN.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")
if not data["description written"]:
complaints.append("The description needs writing")
person_complaints.append(" description(s) needs writing")
description_needed = "Not present, needs doing."
#QMS
if not data["qms written"]:
@ -143,7 +170,7 @@ for item in os.listdir("."):
#Website
if not data["website updated"]:
complaints.append("The website needs updating")
complaints.append("The guidebook description on the website needs updating")
website_needing_updating.add(item)
#Electronic Surveys
@ -160,8 +187,11 @@ for item in os.listdir("."):
"cave": data["cave"],
"name": data["name"],
"date": data["date"],
"people": reduce(operator.add, [" %s" % person for person in data["people"]], ""),
"description": data["description url"],
"people": reduce(operator.add, [" %s," % person for person in data["people"]], ""),
"description": "http://expo.survex.com"+data["description url"],
"description_needed": description_needed,
"loser_dir": loser_dir,
"loser_dirw": loser_dir[5].upper() + ':/' + loser_dir[7:],
"survex": survex_description,
"complaints": reduce(operator.add, ["<p>" + complaint + "</p>" for complaint in complaints], ""),
"files": reduce(operator.add,
@ -172,7 +202,11 @@ for item in os.listdir("."):
"")})
wallet_index_file.close()
wallets.append((item, data["cave"], data["name"], survex_required, plan_scanned, elev_scanned, data["description written"], data["qms written"]))
# Set modification time to be the same as that of contents.json
index_file = item+"/index.html"
os.utime(index_file, ( json_mtime,json_mtime))
#People
for person in data["people"]: