From 01f3aaaa6d679535cdd38d9003904dd0080a687c Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Tue, 4 Feb 2014 14:23:26 +0000 Subject: Refactor for code clarity; fix race condition Better method names, clearer APIs, and also avoid a race condition by not querying STATEDB twice. --- lorry-controller-webapp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lorry-controller-webapp b/lorry-controller-webapp index 913275d..0e5fd5c 100755 --- a/lorry-controller-webapp +++ b/lorry-controller-webapp @@ -113,7 +113,7 @@ class StatusRenderer(object): '''Helper class for rendering service status as JSON/HTML''' - def render_as_dict(self, statedb): + def get_status_as_dict(self, statedb): quotes = [ "Never get drunk unless you're willing to pay for it - " "the next day.", @@ -127,12 +127,11 @@ class StatusRenderer(object): } return status - def render_as_html(self, statedb): - status = self.render_as_dict(statedb) + def render_status_as_html(self, status): return STATUS_HTML_TEMPLATE.format(**status) - def write_as_html(self, statedb, filename): - html = self.render_as_html(statedb) + def write_status_as_html(self, status, filename): + html = self.render_status_as_html(status) with open(filename, 'w') as f: f.write(html) @@ -144,8 +143,9 @@ class Status(LorryControllerRoute): def run(self, **kwargs): renderer = StatusRenderer() - renderer.write_as_html(self.statedb, self.app_settings['status-html']) - return renderer.render_as_dict(self.statedb) + status = renderer.get_status_as_dict(self.statedb) + renderer.write_status_as_html(status, self.app_settings['status-html']) + return status class StatusHTML(LorryControllerRoute): @@ -155,8 +155,9 @@ class StatusHTML(LorryControllerRoute): def run(self, **kwargs): renderer = StatusRenderer() - renderer.write_as_html(self.statedb, self.app_settings['status-html']) - return renderer.render_as_html(self.statedb) + status = renderer.get_status_as_dict(self.statedb) + renderer.write_status_as_html(status, self.app_settings['status-html']) + return renderer.render_status_as_html(status) class StartQueue(LorryControllerRoute): -- cgit v1.2.1