summaryrefslogtreecommitdiffstats
path: root/docs/release/scripts/minimaws/lib/wsgiserve.py
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2021-09-29 15:01:16 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2021-09-29 15:01:16 +1000
commit698df33896bc57187ea4fe443d95c8b53780df38 (patch)
tree6920aad7ab96e342fb67113a3f84f384937b21ef /docs/release/scripts/minimaws/lib/wsgiserve.py
parent9c9b2f30bb67deefbfd869138e66d24bf277ebf1 (diff)
0.236 filestag236
Diffstat (limited to 'docs/release/scripts/minimaws/lib/wsgiserve.py')
-rw-r--r--docs/release/scripts/minimaws/lib/wsgiserve.py34
1 files changed, 25 insertions, 9 deletions
diff --git a/docs/release/scripts/minimaws/lib/wsgiserve.py b/docs/release/scripts/minimaws/lib/wsgiserve.py
index f1ddc5df220..43d5dbc1253 100644
--- a/docs/release/scripts/minimaws/lib/wsgiserve.py
+++ b/docs/release/scripts/minimaws/lib/wsgiserve.py
@@ -67,6 +67,8 @@ class ErrorPageHandler(HandlerBase):
class AssetHandler(HandlerBase):
+ EXTENSIONMAP = { '.js': 'application/javascript', '.svg': 'image/svg+xml' }
+
def __init__(self, directory, app, application_uri, environ, start_response, **kwargs):
super(AssetHandler, self).__init__(app=app, application_uri=application_uri, environ=environ, start_response=start_response, **kwargs)
self.directory = directory
@@ -90,8 +92,11 @@ class AssetHandler(HandlerBase):
else:
try:
f = open(path, 'rb')
- type, encoding = mimetypes.guess_type(path)
- self.start_response('200 OK', [('Content-type', type or 'application/octet-stream'), ('Cache-Control', 'public, max-age=3600')])
+ base, extension = os.path.splitext(path)
+ mimetype = self.EXTENSIONMAP.get(extension)
+ if mimetype is None:
+ mimetype, encoding = mimetypes.guess_type(path)
+ self.start_response('200 OK', [('Content-type', mimetype or 'application/octet-stream'), ('Cache-Control', 'public, max-age=3600')])
return wsgiref.util.FileWrapper(f)
except:
self.start_response('500 %s' % (self.STATUS_MESSAGE[500], ), [('Content-type', 'text/html; charset=utf-8'), ('Cache-Control', 'public, max-age=3600')])
@@ -275,7 +280,7 @@ class MachineHandler(QueryPageHandler):
(self.machine_href(machine_info['romof']), htmlescape(parent[1]), htmlescape(machine_info['romof']))).encode('utf-8')
else:
yield (
- ' <tr><th>Parent machine:</th><td><a href="%s">%s</a></td></tr>\n' %
+ ' <tr><th>Parent ROM set:</th><td><a href="%s">%s</a></td></tr>\n' %
(self.machine_href(machine_info['romof']), htmlescape(machine_info['romof']))).encode('utf-8')
unemulated = []
imperfect = []
@@ -309,6 +314,7 @@ class MachineHandler(QueryPageHandler):
manufacturer=htmlescape(clonemanufacturer or '')).encode('utf-8')
if not first:
yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-clones').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-clones"), document.getElementById("tbl-clones"));</script>\n'.encode('utf-8')
# make a table of software lists
yield htmltmpl.MACHINE_SOFTWARELISTS_TABLE_PROLOGUE.substitute().encode('utf-8')
@@ -354,7 +360,7 @@ class MachineHandler(QueryPageHandler):
size=htmlescape('{:,}'.format(size)),
isdefault=('yes' if isdef else 'no')).encode('utf-8')
if not first:
- yield '</select>\n<script>set_default_ram_option();</script>\n'.encode('utf-8')
+ yield ' </select>\n <script>set_default_ram_option();</script>\n'.encode('utf-8')
# placeholder for machine slots - populated by client-side JavaScript
if self.dbcurs.count_slots(id):
@@ -368,7 +374,7 @@ class MachineHandler(QueryPageHandler):
while pending:
requested = pending.pop()
slots = self.slot_data(self.dbcurs.get_machine_id(requested))
- yield (' slot_info[%s] = %s;\n' % (self.sanitised_json(requested), self.sanitised_json(slots))).encode('utf-8')
+ yield (' slot_info[%s] = %s;\n' % (self.sanitised_json(requested), self.sanitised_json(slots))).encode('utf-8')
for slotname, slot in slots['slots'].items():
for choice, card in slot.items():
carddev = card['device']
@@ -380,17 +386,21 @@ class MachineHandler(QueryPageHandler):
cardid = self.dbcurs.get_machine_id(carddev)
carddev = self.sanitised_json(carddev)
yield (
- ' bios_sets[%s] = %s;\n machine_flags[%s] = %s;\n softwarelist_info[%s] = %s;\n' %
+ ' bios_sets[%s] = %s;\n machine_flags[%s] = %s;\n softwarelist_info[%s] = %s;\n' %
(carddev, self.sanitised_json(self.bios_data(cardid)), carddev, self.sanitised_json(self.flags_data(cardid)), carddev, self.sanitised_json(self.softwarelist_data(cardid)))).encode('utf-8')
yield htmltmpl.MACHINE_SLOTS_PLACEHOLDER_EPILOGUE.substitute(
machine=self.sanitised_json(self.shortname)).encode('utf=8')
+ # add disclosure triangle for options if present
+ if haveoptions:
+ yield htmltmpl.MACHINE_OPTIONS_EPILOGUE.substitute().encode('utf=8')
+
# list devices referenced by this system/device
first = True
for name, desc, src in self.dbcurs.get_devices_referenced(id):
if first:
yield \
- '<h2>Devices Referenced</h2>\n' \
+ '<h2 id="heading-dev-refs">Devices Referenced</h2>\n' \
'<table id="tbl-dev-refs">\n' \
' <thead>\n' \
' <tr><th>Short name</th><th>Description</th><th>Source file</th></tr>\n' \
@@ -400,13 +410,14 @@ class MachineHandler(QueryPageHandler):
yield self.machine_row(name, desc, src)
if not first:
yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-dev-refs').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-dev-refs"), document.getElementById("tbl-dev-refs"));</script>\n'.encode('utf-8')
# list slots where this device is an option
first = True
for name, desc, slot, opt, src in self.dbcurs.get_compatible_slots(id):
if (first):
yield \
- '<h2>Compatible Slots</h2>\n' \
+ '<h2 id="heading-comp-slots">Compatible Slots</h2>\n' \
'<table id="tbl-comp-slots">\n' \
' <thead>\n' \
' <tr><th>Short name</th><th>Description</th><th>Slot</th><th>Choice</th><th>Source file</th></tr>\n' \
@@ -423,13 +434,14 @@ class MachineHandler(QueryPageHandler):
slotoption=htmlescape(opt)).encode('utf-8')
if not first:
yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-comp-slots').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-comp-slots"), document.getElementById("tbl-comp-slots"));</script>\n'.encode('utf-8')
# list systems/devices that reference this device
first = True
for name, desc, src in self.dbcurs.get_device_references(id):
if first:
yield \
- '<h2>Referenced By</h2>\n' \
+ '<h2 id="heading-ref-by">Referenced By</h2>\n' \
'<table id="tbl-ref-by">\n' \
' <thead>\n' \
' <tr><th>Short name</th><th>Description</th><th>Source file</th></tr>\n' \
@@ -439,6 +451,7 @@ class MachineHandler(QueryPageHandler):
yield self.machine_row(name, desc, src)
if not first:
yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-ref-by').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-ref-by"), document.getElementById("tbl-ref-by"));</script>\n'.encode('utf-8')
yield '</html>\n'.encode('utf-8')
@@ -662,6 +675,7 @@ class SoftwareListHandler(QueryPageHandler):
status=htmlescape(machine_info['status'])).encode('utf-8')
if not first:
yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-machines').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-machines"), document.getElementById("tbl-machines"));</script>\n'.encode('utf-8')
first = True
for software_info in self.dbcurs.get_softwarelist_software(softwarelist_info['id'], self.software or None):
@@ -673,6 +687,7 @@ class SoftwareListHandler(QueryPageHandler):
yield '<p>No software found.</p>\n'.encode('utf-8')
else:
yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-software').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-software"), document.getElementById("tbl-software"));</script>\n'.encode('utf-8')
yield '</body>\n</html>\n'.encode('utf-8')
@@ -702,6 +717,7 @@ class SoftwareListHandler(QueryPageHandler):
yield self.clone_row(clone_info)
if not first:
yield htmltmpl.SORTABLE_TABLE_EPILOGUE.substitute(id='tbl-clones').encode('utf-8')
+ yield '<script>make_collapsible(document.getElementById("heading-clones"), document.getElementById("tbl-clones"));</script>\n'.encode('utf-8')
parts = self.dbcurs.get_software_parts(software_info['id']).fetchall()
first = True