#!/usr/bin/python import urllib import contextlib import json import time import os class SublabStatus(object): json = None def get_json(self): if self.json is not None: return self.json with contextlib.closing(urllib.urlopen('http://beaglebone.local.sublab.org/')) as response: self.json = json.load(response) return self.json def door_status(self): self.get_json() door_status = self.json['door.lock'] if door_status['ts'] + 120 < time.time(): return 'unknown' if not door_status['value']: return 'open' else: return 'closed' if __name__ == '__main__': s = SublabStatus() if s.door_status() == 'open': colors = ('#0f0', '#222', 'status-open.png') elif s.door_status() == 'closed': colors = ('#222', '#f00', 'status-closed.png') else: colors = ('#222', '#222', 'status-unknown.png') css = ''' span.sublabopen { color: %s; } span.sublabclosed { color: %s; } #statusimage { background: url(../img/%s) ; height: 100px; width: 100px; position: absolute; right: 20px; } ''' % colors path = os.path.realpath(os.path.dirname(__file__)) path = os.path.join(path, '..', 'public', 'css', 'sublab.status.css') path_new = path + '.new' with open(path_new, 'w') as css_file: css_file.write(css) os.rename(path_new, path)