| @@ -1,13 +0,0 @@ | |||||
| <%include file="/support/header.mako" args="environ=environ, cookies=cookies, title='EarwigBot Status'"/>\ | |||||
| <%namespace module="toolserver.eb_inter" import="collect_status_info"/>\ | |||||
| <%def name="get_status()" filter="trim"> | |||||
| <% status, since, uptime, host = collect_status_info() %> | |||||
| ${"has been" if status == "online" else "is"} <span class="${status}">${status}</span> | |||||
| % if status == "online": | |||||
| since ${since} (${uptime} uptime) on <tt>${host}</tt> | |||||
| % endif | |||||
| </%def>\ | |||||
| <h1>EarwigBot Status</h1> | |||||
| <p>EarwigBot ${get_status()}.</p> | |||||
| <p>Additional information: <a href="http://status.toolserver.org/">status.toolserver.org</a></p> | |||||
| <%include file="/support/footer.mako" args="environ=environ, cookies=cookies"/> | |||||
| @@ -7,12 +7,6 @@ | |||||
| ("DIVIDER"), | ("DIVIDER"), | ||||
| ("Copyvio Detector", "copyvios", "copyvios", True, | ("Copyvio Detector", "copyvios", "copyvios", True, | ||||
| 'Try to detect <a href="//en.wikipedia.org/wiki/WP:COPYVIO">copyright violations</a> in articles by searching the web for page content, or compare an article to a specific URL.'), | 'Try to detect <a href="//en.wikipedia.org/wiki/WP:COPYVIO">copyright violations</a> in articles by searching the web for page content, or compare an article to a specific URL.'), | ||||
| ("EarwigBot Status", "earwigbot", "earwigbot", True, | |||||
| 'View <a href="//en.wikipedia.org/wiki/User:EarwigBot">EarwigBot</a>\'s current status and read its IRC-based mini-wiki.'), | |||||
| ("Contribution Surveyor", "surveyor", "surveyor", False, | |||||
| "Nothing to see here yet!"), | |||||
| ("SWMT Helper", "swmt", "swmt", False, | |||||
| "Nothing to see here yet!"), | |||||
| ] | ] | ||||
| %>\ | %>\ | ||||
| <% | <% | ||||
| @@ -1,4 +0,0 @@ | |||||
| <%include file="/support/header.mako" args="environ=environ, cookies=cookies, title='Contribution Surveyor'"/> | |||||
| <h1>Contribution Surveyor</h1> | |||||
| <p>This tool does not exist yet. Watch this space for updates.</p> | |||||
| <%include file="/support/footer.mako" args="environ=environ, cookies=cookies"/> | |||||
| @@ -1,4 +0,0 @@ | |||||
| <%include file="/support/header.mako" args="environ=environ, cookies=cookies, title='SWMT Helper'"/> | |||||
| <h1>SWMT Helper</h1> | |||||
| <p>This tool does not exist yet. Watch this space for updates.</p> | |||||
| <%include file="/support/footer.mako" args="environ=environ, cookies=cookies"/> | |||||
| @@ -1,44 +0,0 @@ | |||||
| from datetime import datetime | |||||
| import os | |||||
| import re | |||||
| from shlex import split | |||||
| from subprocess import check_output, CalledProcessError, STDOUT | |||||
| os.environ["SGE_ROOT"] = "/sge/GE" | |||||
| def collect_status_info(context): | |||||
| try: | |||||
| result = str(check_output(split("qstat -j earwigbot"), stderr=STDOUT)) | |||||
| except CalledProcessError: | |||||
| return ["offline", None, None, None] | |||||
| if result.startswith("Following jobs do not exist:"): | |||||
| return ["offline", None, None, None] | |||||
| lines = result.splitlines()[1:] | |||||
| data = {} | |||||
| for line in lines: | |||||
| re_key = re.match(r"(.*?):\s", line) | |||||
| re_val = re.search(r":\s*(.*?)$", line) | |||||
| if re_key and re_val: | |||||
| data[re_key.group(1)] = re_val | |||||
| since, uptime = _format_date(data["submission_time"]) | |||||
| host = data["sge_o_host"] | |||||
| return ["online", since, uptime, host] | |||||
| def _format_date(time): | |||||
| start = datetime.strptime(time, "%a %b %d %H:%M:%S %Y") | |||||
| since = start.strftime("%b %d, %Y %H:%M:%S UTC") | |||||
| diff = (datetime.utcnow() - start) | |||||
| if diff.days: | |||||
| uptime = "{0} days".format(diff.days) | |||||
| if diff.seconds >= 3600: | |||||
| uptime += ", {0} hours".format(diff.seconds / 3600) | |||||
| else: | |||||
| if diff.seconds > 3600: | |||||
| uptime = "{0} hours".format(diff.seconds / 3600) | |||||
| elif diff.seconds > 60: | |||||
| uptime = "{0} minutes".format(diff.seconds / 60) | |||||
| else: | |||||
| uptime = "{0} seconds".format(diff.seconds) | |||||
| return (since, uptime) | |||||