import time, json
def init_server():
global title, choices, already_voted, started
started = time.time()
already_voted = {}
title = u"What shall we eat?"
choices = {u"Tacos": 0,\
u"Pizza": 0,\
u"Sushi": 0}
print "Voting starts"
def vote_status():
voting_closed = time.time() - started > 60
results = []
for choice, count in choices.items():
results.append((count, choice))
return voting_closed, max(results)
def process_json(query):
voting_closed, winner = vote_status()
if voting_closed:
return {"closed": True, "winner": winner}
msg = ""
if "choice" in query:
if query["voter"] in already_voted:
msg = "You have voted already"
else:
choices[query["choice"]] += 1
already_voted[query["voter"]] = True
msg = "Thank you for your vote!"
return {"title": title, "winner": winner,\
"choices": choices, "msg": msg}
def process_get(path, query):
voting_closed, winner = vote_status()
msg = "<html><body><h1>Vote: %s</h1><br/>" % title
for choice, count in choices.items():
msg += "<b>%s</b> %d<br/>" % (choice, count)
if voting_closed:
msg += "<p><h2>Voting closed.</h2></p>"
msg += "<h1>The winner is: %s</h1>" % winner[1]
else:
msg += "<h2>%d seconds until closing</h2>" %\
(60 - (time.time() - started))
return "text/html", "%s</body></html>" % msg
init_server()
httpd = Server(('', 9000), Handler)
httpd.serve_forever()