From ad7845cf3d783d246115af7b44d7a42dc438c4ff Mon Sep 17 00:00:00 2001 From: karnem <mikhail.karnevskiy@desy.de> Date: Sat, 12 Oct 2019 21:43:36 +0200 Subject: [PATCH] Add dark overview --- webservice/serve_overview.py | 40 +++++++++++++++++++++++++ webservice/serve_overview.yaml | 3 +- webservice/templates/dark_overview.html | 34 +++++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 webservice/templates/dark_overview.html diff --git a/webservice/serve_overview.py b/webservice/serve_overview.py index 1dcf1120d..bd1281e2b 100644 --- a/webservice/serve_overview.py +++ b/webservice/serve_overview.py @@ -3,6 +3,7 @@ import glob import os import sqlite3 from collections import OrderedDict +from datetime import datetime, timezone from http.server import BaseHTTPRequestHandler, HTTPServer from subprocess import check_output from uuid import uuid4 @@ -158,6 +159,45 @@ class RequestHandler(BaseHTTPRequestHandler): self.wfile.write(bytes(message, "utf8")) return + + if "dark?" in self.path: + # Send headers + self.send_header('Content-type', 'text/html') + self.end_headers() + host = config["server-config"]["host"] + port = config["server-config"]["port"] + reports = {} + for instrument, detectors in cal_config['dark'].items(): + reports[instrument] = {} + for detector in detectors: + det_inset = detector.replace('-', '_') + tmpl = '/gpfs/exfel/exp/{}/*/*/usr/dark/*/{}'.format( + instrument, det_inset) + files = glob.glob(tmpl + '/*pdf') + files += glob.glob(tmpl + '/*/*pdf') + files.sort(key=os.path.getmtime) + file_info = [] + for i, file in enumerate(files): + if 'xfel.pdf' in file: + continue + if (i % 2) == 0: + bgcolor = 'EEEEEE' + else: + bgcolor = 'FFFFFF' + time = os.stat(file).st_mtime + d_time = datetime.fromtimestamp(time).replace( + tzinfo=timezone.utc) + s_time = d_time.strftime('%y-%m-%d %H:%M') + file_info.append([file, s_time, bgcolor]) + + reports[instrument][detector] = file_info + + tmpl = Template(self.templates["dark-overview"]) + message = tmpl.render(reports=reports, host=host, port=port) + + self.wfile.write(bytes(message, "utf8")) + return + # Send headers self.send_header('Content-type', 'text/html') self.end_headers() diff --git a/webservice/serve_overview.yaml b/webservice/serve_overview.yaml index fd2c4b49f..1888dcbcb 100644 --- a/webservice/serve_overview.yaml +++ b/webservice/serve_overview.yaml @@ -6,6 +6,7 @@ templates: running-jobs: ./templates/running_jobs.html request-dark: ./templates/request_dark.html checkbox: ./templates/checkbox.html + dark-overview: ./templates/dark_overview.html css: ./templates/serve_overview.css shell-commands: @@ -49,4 +50,4 @@ server-config: web-service: job-db: ./webservice_jobs.sqlite - cal-config: /home/karnem/myscratch/calibration3/calibration_configurations/default.yaml \ No newline at end of file + cal-config: /home/karnem/myscratch/calibration3/calibration_configurations/default.yaml diff --git a/webservice/templates/dark_overview.html b/webservice/templates/dark_overview.html new file mode 100644 index 000000000..200c63b3b --- /dev/null +++ b/webservice/templates/dark_overview.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <link rel="stylesheet" href="serve_overview.css"> + <title>Overview of dark runs</title> +</head> +<body> + +<div class="block"> + <h1>Dark runs</h1> + {% for instrument, detectors in reports.items() %} + <h2>{{ instrument }}</h2> + + {% for detector, files in detectors.items() %} + <h3>{{ detector }}</h3> + <table> + {% for file in files %} + + <tr bgcolor="{{ file[2] }}"> + <td> <a href=http://{{host}}:{{port}}/file?{{ file[0] }} target="_blank">{{ file[0] }}</a> </td> + <td> {{ file[1] }} </td> + </tr> + + {% endfor %} + </table> + <br> + {% endfor %} + <br> + {% endfor %} + +</div> + +</body> +</html> -- GitLab