#!/usr/bin/python import template, random class One(template.Engine): def __init__(self): template.Engine.__init__(self) def retrieveState(self): # print "I am retrieving state..." (message, n1, n2, m1, m2) = ("", "", "", "", "") if self.input.has_key("message"): message = self.input["message"].value if self.input.has_key("n1"): n1 = self.input["n1"].value if self.input.has_key("n2"): n2 = self.input["n2"].value if self.input.has_key("m1"): m1 = self.input["m1"].value if self.input.has_key("m2"): m2 = self.input["m2"].value return MyState(message, n1, n2, m1, m2) def reset(self): reset = "" if self.input.has_key("reset"): reset = self.input["reset"].value return reset def initializeState(self, s): # print "I am being asked to initialize the state..." s.message = "Welcome" s.n1 = str(random.randrange(-50, 50)) s.n2 = str(random.randrange(-50, 50)) s.m1 = "0" s.m2 = "0" def updateState(self, s): print "I am being asked to update the state based on input..." answer = "" if self.input.has_key("answer"): answer = self.input["answer"].value if answer and int(answer) == int(s.n1) + int(s.n2): s.message = "Very good." s.m1 = str(int(s.m1) + 1) else: s.message = "No, no, no." s.m2 = str(int(s.m2) + 1) s.message += "Score now: " + s.m1 + " out of " + s.m2 s.n1 = str(random.randrange(-50, 50)) s.n2 = str(random.randrange(-50, 50)) def saveState(self, s): print "
" class MyState(template.State): def __init__(self, message, n1, n2, m1, m2): self.message = message self.n1 = n1 self.n2 = n2 self.m1 = m1 self.m2 = m2 def isEmpty(self): # print "I am being asked if I am empty..." return not self.message import MySQLdb, sys class Two(One): def retrieveState(self): if self.input.has_key("session_ID"): id = self.input["session_ID"].value print "Content-type: text/html\n\n" print "Your id is:", id, "" self.id = id Con = MySQLdb.Connect(host="silo.cs.indiana.edu", port=44089, user="lbird", passwd="sp00n", db="homeworkThree") Cursor = Con.cursor() sql = "SELECT message, n1, n2, m1, m2 FROM hwFour WHERE session_id = '%s'" % id Cursor.execute(sql) Results = Cursor.fetchall() (message, n1, n2, m1, m2) = Results[0] Con.close() return MyState(message, str(n1), str(n2), str(m1), str(m2)) else: print "Location: http://silo.cs.indiana.edu:44063/cgi-bin/0708/one?session_ID=%s\n\n" % self.generate_ID() sys.exit() def generate_ID(self): id = "" for i in range(8): id += str(random.randrange(10)) Con = MySQLdb.Connect(host="silo.cs.indiana.edu", port=44089, user="lbird", passwd="sp00n", db="homeworkThree") Cursor = Con.cursor() sql = "insert into hwFour (session_id) values ('" + id + "')" for i in range(10): if Cursor.execute(sql): Con.close() return id print "Content-type: text/html\n\nError. Please reload." Con.close() def saveState(self, s): sql = "update hwFour set message = '%s', n1 = '%s', n2 = '%s', m1 = '%s', m2 = '%s' where session_id = '%s'" % (s.message, s.n1, s.n2, s.m1, s.m2, self.id) # print "