class VigenereHandler(webapp.RequestHandler): def post(self): self.session=Session() mode = self.session.get("mode") msg=self.session.get("msg") txtinput = self.request.get('method') if (txtinput=='v'): txtinput="You have chosen Vigenere cipher. Your mode is " + mode +" and your message is " + msg +". Please enter a string of letters to use as a key(ex: vkey-ELFMENG)" elif (txtinput == 'key'): key=self.request.get("keystr") vig = vigenere.VigenereCipherTool(mode,msg) vig.storekey(key) translated=vig.getTranslatedMessage() txtinput="Your translated message is " + translated else: txtinput="Error, invalid command! Please type again. Please select which cipher you would like to use - Caesar cipher(c), Substitution cipher(s), Transposition cipher(t), Vigenere cipher(v), or Affine cipher(a). Please type \"use-cipher method\"(ex - use-s)" array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class ShowUserHandler(webapp.RequestHandler): def get(self): self.session = Session() pkey = self.session.get('userkey') current_user = db.get(pkey) if current_user.admin == "True": doRender(self, 'show_user.html', {}) else: doRender(self, 'main.html', {'msg': 'Require admin previlege!'}) def post(self): self.session = Session() pkey = self.session.get('userkey') current_user = db.get(pkey) if current_user.admin == "False": doRender(self, 'main.html', {'msg': 'Require admin previlege!'}) return que = db.Query(User) if self.request.get('show_admin') == 'True': # if this will show admin admin = que.filter('admin =', 'True') admin = admin.fetch(limit=100) doRender(self, 'show_user.html', {'user_list': admin}) return else: user = que.filter('admin =', 'False') user = user.fetch(limit=500) doRender(self, 'show_user.html', {'user_list': user}) return
class SubstitutionHandler(webapp.RequestHandler): def post(self): self.session = Session() mode = self.session.get("mode") msg = self.session.get("msg") txtinput = self.request.get('method') if (txtinput == 's'): txtinput = "You have chosen Substitution. Your mode is " + mode + " and your message is " + msg + ". Please enter the 26-letter string of characters to use as a key (ex skey-QWERTYUIOPASDFGHJKLZXCVBNM)" elif (txtinput == 'key'): key = str(self.request.get("keystr")) subs = substitution.SubstitutionCipherTool(mode, msg) if (subs.checkValidKey(key) != True): txtinput = "The key you entered is not valid. Please re-enter the 26-letter string of characters to use as a key (ex skey-QWERTYUIOPASDFGHJKLZXCVBNM)" else: subs.storekey(key) translated = subs.getTranslatedMessage() txtinput = "Your translated message is " + translated array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class MainHandler(webapp.RequestHandler): def get (self): #filepath = self.request.path self.session = Session() loggedUser="" greeting="" if (self.session.get('username')): greeting="Welcome, " loggedUser = self.session.get('username') if (self.session.get('role') == 'teacher'): temp = os.path.join(os.path.dirname(__file__), 'templates/teachermain.html') #self.response.out.write(temp) self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp,{'loggedUser':loggedUser, "greeting":greeting}))) elif (self.session.get('role') == 'student'): temp = os.path.join(os.path.dirname(__file__), 'templates/studentmain.html') #self.response.out.write(temp) self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp,{'loggedUser':loggedUser, "greeting":greeting}))) else: temp = os.path.join(os.path.dirname(__file__), 'templates/main.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp,{'loggedUser':loggedUser, "greeting":greeting})))
class VigenereHandler(webapp.RequestHandler): def post(self): self.session=Session() mode = self.session.get("mode") msg=self.session.get("msg") txtinput = self.request.get('method') if (txtinput=='v'): txtinput="You have chosen Vigenere cipher. Your mode is " + mode +" and your message is " + msg +". Please enter a string of letters to use as a key(ex: vkey-ELFMENG)" elif (txtinput == 'key'): key=self.request.get("keystr") vig = vigenere.VigenereCipherTool(mode,msg) vig.storekey(key) translated=vig.getTranslatedMessage() txtinput="Your translated message is " + translated array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class AffineHandler(webapp.RequestHandler): def post(self): self.session = Session() mode = self.session.get("mode") msg = self.session.get("msg") symbols = """ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] ^_`abcdefghijklmnopqrstuvwxyz{|}~""" lenofsym = len(symbols) maxsize = len(msg) txtinput = self.request.get('method') if (txtinput == 'a'): txtinput = "You have chosen Affine cipher. Your mode is " + mode + " and your message is " + msg + ". Please enter a key (ex: akey-87)." elif (txtinput == 'key'): key = self.request.get("keynum") aff = affine.AffineCipherTool(mode, msg, maxsize, lenofsym) #get key if (aff.storeKey(key) == False): txtinput = aff.badKey else: translated = aff.getTranslatedMessage() txtinput = "Your translated message is " + translated array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class CaesarHandler(webapp.RequestHandler): def post(self): self.session=Session() mode = self.session.get("mode") msg=self.session.get("msg") txtinput = self.request.get('method') if (txtinput=='c'): txtinput="You have chosen Caesar cipher. Your mode is " + mode +" and your message is " + msg +". Please enter key size(1-26) as key-{key size} (ex ckey-22)" elif (txtinput == 'key'): key=self.request.get("keynum") caes = caesar.CaesarCipherTool(mode,msg) #get key if(int(key) >= 1 and int(key) <= 26): txtinput="Your key is " + key caes.storekey(key) txtinput="Your translated message: " + caes.getTranslatedMessage() + ". Please type tb for toolbox, h for help" else: txtinput="Your key is not valid it must be in range (1 <= key <= 26). Please try again. key-{key size} (ex ckey-22)" + key array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class SubstitutionHandler(webapp.RequestHandler): def post(self): self.session=Session() mode = self.session.get("mode") msg=self.session.get("msg") txtinput = self.request.get('method') if (txtinput=='s'): txtinput="You have chosen Substitution. Your mode is " + mode +" and your message is " + msg +". Please enter the 26-letter string of characters to use as a key (ex skey-QWERTYUIOPASDFGHJKLZXCVBNM)" elif (txtinput == 'key'): key=str(self.request.get("keystr")) subs = substitution.SubstitutionCipherTool(mode,msg) if (subs.checkValidKey(key) != True): txtinput="The key you entered is not valid. Please re-enter the 26-letter string of characters to use as a key (ex skey-QWERTYUIOPASDFGHJKLZXCVBNM)" else: subs.storekey(key) translated=subs.getTranslatedMessage() txtinput="Your translated message is " + translated array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class ShowUserHandler(webapp.RequestHandler): def get(self): self.session = Session() pkey = self.session.get('userkey') current_user = db.get(pkey) if current_user.admin == "True": doRender(self, 'show_user.html', { }) else: doRender(self, 'main.html', {'msg' : 'Require admin previlege!'}) def post(self): self.session = Session() pkey = self.session.get('userkey') current_user = db.get(pkey) if current_user.admin == "False": doRender(self, 'main.html', {'msg' : 'Require admin previlege!'}) return que = db.Query(User) if self.request.get('show_admin') == 'True': # if this will show admin admin = que.filter('admin =', 'True') admin = admin.fetch(limit = 100) doRender(self, 'show_user.html', {'user_list' : admin } ) return else: user = que.filter('admin =', 'False') user = user.fetch(limit = 500) doRender(self, 'show_user.html', {'user_list' : user } ) return
class TransHandler(webapp.RequestHandler): def post(self): self.session = Session() mode = self.session.get("mode") msg = self.session.get("msg") txtinput = self.request.get('method') if (txtinput == 't'): txtinput = "You have chosen Transposition cipher. Your mode is " + mode + " and your message is " + msg + ". Please enter a key(1<= key <= length of your message) (ex: tkey-3)" elif (txtinput == 'key'): key = int(self.request.get("keystr")) maxlen = len(msg) trans = transposition.TranspositionCipherTool(mode, msg, maxlen) keynum = trans.display() if (key >= 1 and key <= int(maxlen)): trans.storekey(key) translated = trans.getTranslatedMessage() txtinput = "Your translated message is " + translated else: self.session.delete_item("msg") txtinput = "Your key is not valid. Please re-enter a new message( ex: tmsg-{'This is message'})" elif (txtinput == 'tmsg'): msg = self.request.get("keystr") self.session['msg'] = msg txtinput = "Please enter a key(1<= key <= length of your message) (ex: tkey-3)" array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class CaesarHandler(webapp.RequestHandler): def post(self): self.session=Session() mode = self.session.get("mode") msg=self.session.get("msg") txtinput = self.request.get('method') if (txtinput=='c'): txtinput="You have chosen Caesar cipher. Your mode is " + mode +" and your message is " + msg +". Please enter key size(1-26) as key-{key size} (ex ckey-22)" elif (txtinput == 'key'): key=self.request.get("keynum") caes = caesar.CaesarCipherTool(mode,msg) #get key if(int(key) >= 1 and int(key) <= 26): txtinput="Your key is " + key caes.storekey(key) txtinput="Your translated message: " + caes.getTranslatedMessage() + ". Please type tb for toolbox, h for help" else: txtinput="Your key is not valid it must be in range (1 <= key <= 26). Please try again. key-{key size} (ex ckey-22)" + key else: txtinput="Error, invalid command! Please type again. Please select which cipher you would like to use - Caesar cipher(c), Substitution cipher(s), Transposition cipher(t), Vigenere cipher(v), or Affine cipher(a). Please type \"use-cipher method\"(ex - use-s)" array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class TDSettingHandler(BaseHandler): def get(self): if self.guest(): return self.session = Session() key = self.session.get('userkey') user = db.get(key) form = UserForm() self.doRender( 'td_setting.html', {'form': form, 'u': user, \ 'info': ', please update your profile'}) def post(self): self.session = Session() pkey = self.session.get('userkey') user = db.get(pkey) form = UserForm(self.request.POST) if form.validate(): user.cwid = form.cwid.data user.major = form.major.data user.email = form.email.data user.phone = form.phone.data user.d_hours = form.d_hours.data user.put() self.doRender( 'td_setting.html', {'msg' : ', profile updated', 'u': user} ) else: # form validation failed self.doRender('td_setting.html', {'form': form})
class CaesarHandler(webapp.RequestHandler): def post(self): self.session = Session() mode = self.session.get("mode") msg = self.session.get("msg") txtinput = self.request.get('method') if (txtinput == 'c'): txtinput = "You have chosen Caesar cipher. Your mode is " + mode + " and your message is " + msg + ". Please enter key size(1-26) as key-{key size} (ex ckey-22)" elif (txtinput == 'key'): key = self.request.get("keynum") caes = caesar.CaesarCipherTool(mode, msg) #get key if (int(key) >= 1 and int(key) <= 26): txtinput = "Your key is " + key caes.storekey(key) txtinput = "Your translated message: " + caes.getTranslatedMessage( ) + ". Please type tb for toolbox, h for help" else: txtinput = "Your key is not valid it must be in range (1 <= key <= 26). Please try again. key-{key size} (ex ckey-22)" + key array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class SavingHandler(webapp.RequestHandler): def get(self): self.session = Session() level = self.session.get("userCheck") username = self.session.get("username") userid = self.session.get("id") #Create new db for student result = (db.GqlQuery("SELECT * FROM StudentDB WHERE student_id = :1", userid)).get() result.attempt = level result.put() level = str(level) addr = "game" + level msg = "Your game is saved" temp = os.path.join(os.path.dirname(__file__), 'templates/' + addr + '.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render(temp, { "username": username, 'msg': msg, "level": level + " / 5" })))
class SubstitutionHandler(webapp.RequestHandler): def post(self): self.session=Session() mode = self.session.get("mode") msg=self.session.get("msg") txtinput = self.request.get('method') if (txtinput=='s'): txtinput="You have chosen Substitution. Your mode is " + mode +" and your message is " + msg +". Please enter the 26-letter string of characters to use as a key (ex skey-QWERTYUIOPASDFGHJKLZXCVBNM)" elif (txtinput == 'key'): key=str(self.request.get("keystr")) subs = substitution.SubstitutionCipherTool(mode,msg) if (subs.checkValidKey(key) != True): txtinput="The key you entered is not valid. Please re-enter the 26-letter string of characters to use as a key (ex skey-QWERTYUIOPASDFGHJKLZXCVBNM)" else: subs.storekey(key) translated=subs.getTranslatedMessage() txtinput="Your translated message is " + translated else: txtinput="Error, invalid command! Please type again. Please select which cipher you would like to use - Caesar cipher(c), Substitution cipher(s), Transposition cipher(t), Vigenere cipher(v), or Affine cipher(a). Please type \"use-cipher method\"(ex - use-s)" array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class SmainHandler(webapp.RequestHandler): def get(self): self.session = Session() userid = self.session.get("id") username = self.session.get("username") operation = self.request.get("op") error_msg = "" goback = "" #control if (operation == '0'): result = (db.GqlQuery("SELECT * FROM GameDB WHERE student_id = :1", userid)).fetch(limit=100) temp = os.path.join(os.path.dirname(__file__), 'templates/scontrol.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render(temp, { "loggedUser": username, "result": result }))) #start a new game elif (operation == '1'): temp = os.path.join(os.path.dirname(__file__), 'templates/sgameintro.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str(template.render(temp, {"username": username}))) elif (operation == '2'): greeting = "Hello, " temp = os.path.join(os.path.dirname(__file__), 'templates/gameload.html') result = (db.GqlQuery("SELECT * FROM GameDB WHERE student_id = :1", userid)).fetch(limit=100) if (len(result) == 0): error_msg = "Error! No saved game!" goback = "Back to Main" self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render( temp, { "greeting": greeting, "username": userid, "result": result, "error_msg": error_msg, "goback": goback }))) else: temp = os.path.join(os.path.dirname(__file__), 'templates/main.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp, {})))
class TmainHandler(webapp.RequestHandler): def get(self): self.session=Session() logged_name=self.session.get("username") logged_id=self.session.get("id") greeting="Hello" lookup=(db.GqlQuery("SELECT * FROM TeacherDB WHERE teacher_id = :1", logged_id)).get() classid_teacher=lookup.teacher_class_id result=(db.GqlQuery("SELECT * FROM StudentDB WHERE classid = :1", classid_teacher)).fetch(limit=100) temp = os.path.join(os.path.dirname(__file__), 'templates/tcontrol.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp,{'loggedUser':logged_id, "greeting":greeting,"result":result})))
class MainHandler(webapp.RequestHandler): def get(self): #filepath = self.request.path self.session = Session() loggedUser = "" greeting = "" if (self.session.get('username')): greeting = "Welcome, " loggedUser = self.session.get('username') if (self.session.get('role') == 'teacher'): temp = os.path.join(os.path.dirname(__file__), 'templates/teachermain.html') #self.response.out.write(temp) self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render(temp, { 'loggedUser': loggedUser, "greeting": greeting }))) elif (self.session.get('role') == 'student'): temp = os.path.join(os.path.dirname(__file__), 'templates/studentmain.html') #self.response.out.write(temp) self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render(temp, { 'loggedUser': loggedUser, "greeting": greeting }))) else: temp = os.path.join(os.path.dirname(__file__), 'templates/main.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render(temp, { 'loggedUser': loggedUser, "greeting": greeting })))
class LogoutHandler(webapp.RequestHandler): def get(self): self.session = Session() un = self.session.get('username') self.session.delete_item('username') self.session.delete_item('userkey') doRender(self, 'index.html', {'msg' : un + ' logout successful.'} )
class EventHandler(BaseHandler): '''The parent page is Main''' def post(self): if self.guest(): return self.session = Session() pkey = self.session.get('userkey') user = db.get(pkey) # got current user ckey = self.request.get('session_key') csession = db.get(ckey) # got the target session td = csession.td # target session.td event = csession.event # target session.event if event != None: message_list = toList(event) self.doRender('show_event.html', {'td': td, 'session': csession, \ 'event': event, 'session_key': ckey, 'message_list': message_list}) else: # not event yet if td != None and td.username == user.username: self.doRender('add_event.html', {'td': td, 'session': csession, \ 'session_key': ckey, 'apply_off': 'True' }) else: self.doRender('add_event.html', {'td': td, 'session': csession, \ 'session_key': ckey})
class ManageEventHandler(BaseHandler): '''The parent page is event view''' def post(self): if self.guest(): return self.session = Session() pkey = self.session.get('userkey') current_user = db.get(pkey) # got user t_note = self.request.get('note') t_active = self.request.get('active_status') ckey = self.request.get('session_key') update = self.request.get('update_event') ckey = self.request.get('session_key') csession = db.get(ckey) # got session td = csession.td # got TD if update == 'True': new_event = csession.event new_event.active = (t_active == 'True') new_message = Message(note = t_note, user = current_user) new_event.messages.append( new_message.put()) new_event.put() else: new_message = Message(note = t_note, user = current_user) new_event = Event(active = t_active == 'True', csession = ckey) new_event.messages.append( new_message.put() ) csession.event = new_event.put() # put event, and, update session.event csession.put() message_list = toList(new_event) self.doRender('show_event.html', {'td': td, 'session': csession, \ 'event': new_event, 'msg':'Event just updated', \ 'message_list': message_list, 'session_key': ckey})
class GameloadHandler(webapp.RequestHandler): def get(self): self.session = Session() start_msg = "" gid = self.request.get("gid") self.session['game_id'] = gid #get current level for game id result_game = (db.GqlQuery("SELECT * FROM GameDB WHERE game_id = :1", gid)).get() glevel = result_game.current_level if (glevel): start_msg = "START THE GAME" #level=self.request.get("level") if (self.session.get('level')): self.session.delete_item('level') self.session['level'] = glevel temp = os.path.join(os.path.dirname(__file__), 'templates/gameload.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render(temp, { "start_msg": start_msg, "level": glevel })))
class DeleteUserHandler(webapp.RequestHandler): def post(self): self.session = Session() pkey = self.session.get('userkey') current_user = db.get(pkey) if current_user.admin == "False": doRender(self, 'main.html', {'msg' : 'Require admin previlege!'}) return delete_list = self.request.get_all('key_to_delete') ''' # Testing! doRender(self, 'test.html', {'msg' : first[0], 'msg2': str(len(first))}) return ''' if len(delete_list) == 0: doRender(self, 'show_user.html', {}) return for item in delete_list: que = db.Query(User).filter('username ='******'show_user.html', {})
class LogoutHandler(webapp.RequestHandler): def get(self): self.session = Session() un = self.session.get('username') self.session.delete_item('username') self.session.delete_item('userkey') doRender(self, 'index.html', {'msg': un + ' logout successful.'})
class DeleteUserHandler(webapp.RequestHandler): def post(self): self.session = Session() pkey = self.session.get('userkey') current_user = db.get(pkey) if current_user.admin == "False": doRender(self, 'main.html', {'msg': 'Require admin previlege!'}) return delete_list = self.request.get_all('key_to_delete') ''' # Testing! doRender(self, 'test.html', {'msg' : first[0], 'msg2': str(len(first))}) return ''' if len(delete_list) == 0: doRender(self, 'show_user.html', {}) return for item in delete_list: que = db.Query(User).filter('username ='******'show_user.html', {})
class editprofile(webapp.RequestHandler): def get(self): #check for sessions here to det which template to render data = {} #check if there's a username entry in the session self.session = Session() data['user'] = self.session.get('username', None) user = self.session.get('username', None) if user: que = db.Query(Poller) que.filter('email', user) res = que.fetch(limit=1) current_user = res[0] data['email'] = current_user.email data['fullname'] = current_user.fullname data['password'] = current_user.password render(self,"profile.html",data) else: render(self, "index.html",data) def post(self): data={} em = self.request.get('em') pw = self.request.get('pw') pwa = self.request.get('pwa') fn = self.request.get('fn') if pw == pwa: que = db.Query(Poller) que.filter('email',em) res = que.fetch(limit=1) poller = res[0] #get the first (and only) dude in the match poller.fullname = fn poller.password = pw poller.put() data['updatesuccess'] = True render(self,"profile.html",data) else: data['pwmismatch'] = True data['error_msg'] = "The passwords you are trying to change do not match" render(self,"profile.html", data)
class MainHandler(webapp.RequestHandler): def get(self): self.session = Session() if self.session.get('username') == None: self.redirect('/') doRender(self, 'main.html') def post(self): doRender(self, 'test.html')
class MainHandler(webapp.RequestHandler): def get(self): self.session = Session() if self.session.get('username') == None: self.redirect('/') doRender(self, 'main.html') def post(self): doRender(self, 'test.html')
class SavingHandler(webapp.RequestHandler): def get(self): self.session=Session() level=self.session.get("userCheck") username=self.session.get("username") userid=self.session.get("id") #Create new db for student result=(db.GqlQuery("SELECT * FROM StudentDB WHERE student_id = :1", userid)).get() result.attempt=level result.put() level=str(level) addr="game" + level msg="Your game is saved" temp=os.path.join(os.path.dirname(__file__), 'templates/'+addr +'.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp,{"username":username,'msg':msg, "level":level+" / 5"})))
class DetailHandler(webapp.RequestHandler): def get(self): self.session=Session() logged_id=self.session.get("id") sid=self.request.get("id") result=(db.GqlQuery("SELECT * FROM StudentDB WHERE student_id = :1", sid)).fetch(limit=100) temp = os.path.join(os.path.dirname(__file__), 'templates/tdetail.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp,{'loggedUser':logged_id, "result":result})))
class about(webapp.RequestHandler): def get(self): data = {} #check if there's a username entry in the session self.session = Session() data['user'] = self.session.get('username', None) render(self,"about.html",data)
class TransHandler(webapp.RequestHandler): def post(self): self.session=Session() mode = self.session.get("mode") msg=self.session.get("msg") txtinput = self.request.get('method') if (txtinput=='t'): txtinput="You have chosen Transposition cipher. Your mode is " + mode +" and your message is " + msg +". Please enter a key(1<= key <= length of your message) (ex: tkey-3)" elif (txtinput == 'key'): key=int(self.request.get("keystr")) maxlen=len(msg) trans = transposition.TranspositionCipherTool(mode,msg,maxlen) keynum=trans.display() if(key >= 1 and key <= int(maxlen)): trans.storekey(key) translated=trans.getTranslatedMessage() txtinput="Your translated message is " + translated else: self.session.delete_item("msg") txtinput="Your key is not valid. Please re-enter a new message( ex: tmsg-{'This is message'})" elif (txtinput=='tmsg'): msg=self.request.get("keystr") self.session['msg']=msg txtinput="Please enter a key(1<= key <= length of your message) (ex: tkey-3)" else: txtinput="Error, invalid command! Please type again. Please select which cipher you would like to use - Caesar cipher(c), Substitution cipher(s), Transposition cipher(t), Vigenere cipher(v), or Affine cipher(a). Please type \"use-cipher method\"(ex - use-s)" array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class MapPage(webapp.RequestHandler): def get(self): self.session=Session() path=self.request.path temp=os.path.join(os.path.dirname(__file__),'templates/map.html') html=template.render(temp,{'path':path,'username':self.session.get('username')}) self.response.out.write(html) def post(self): import sys, getpass self.session=Session() ft_client=self.session.get('ft_client') if ft_client is not None: '''rent = self.request.get('rent')''' bedrooms = self.request.get('bedrooms') rating = self.request.get('rating') rowid = (ft_client.query(SQL().insert(1269105, {'ADDRESS':str(address), 'Rent': str(rent), 'Bedrooms': str(bedrooms),'Rating': str(rating),'Review': str(review)}))) '''self.response.out.write(str(rowid))''' self.redirect("/map")
class createQuestion(webapp.RequestHandler): def get(self): data = {} #check if there's a username entry in the session self.session = Session() data['user'] = self.session.get('username', None) render(self, "create_question.html",data) def post(self): self.response.out.write()
class getResponses(webapp.RequestHandler): def get(self): data = {} #check if there's a username entry in the session self.session = Session() data['user'] = self.session.get('username', None) render(self, "view_responses.html",data) def post(self): #get input from the forms, using the name = value from the input fields self.request.headers
class VigenereHandler(webapp.RequestHandler): def post(self): self.session = Session() mode = self.session.get("mode") msg = self.session.get("msg") txtinput = self.request.get('method') if (txtinput == 'v'): txtinput = "You have chosen Vigenere cipher. Your mode is " + mode + " and your message is " + msg + ". Please enter a string of letters to use as a key(ex: vkey-ELFMENG)" elif (txtinput == 'key'): key = self.request.get("keystr") vig = vigenere.VigenereCipherTool(mode, msg) vig.storekey(key) translated = vig.getTranslatedMessage() txtinput = "Your translated message is " + translated array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class AffineHandler(webapp.RequestHandler): def post(self): self.session=Session() mode = self.session.get("mode") msg=self.session.get("msg") symbols=""" !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] ^_`abcdefghijklmnopqrstuvwxyz{|}~""" lenofsym=len(symbols) maxsize=len(msg) txtinput = self.request.get('method') if (txtinput=='a'): txtinput="You have chosen Affine cipher. Your mode is " + mode +" and your message is " + msg + ". Please enter a key (ex: akey-87)." elif (txtinput == 'key'): key=self.request.get("keynum") aff = affine.AffineCipherTool(mode,msg,maxsize,lenofsym) #get key if(aff.storeKey(key) == False): txtinput = aff.badKey else: translated = aff.getTranslatedMessage() txtinput="Your translated message is " + translated else: txtinput="Error, invalid command! Please type again. Please select which cipher you would like to use - Caesar cipher(c), Substitution cipher(s), Transposition cipher(t), Vigenere cipher(v), or Affine cipher(a). Please type \"use-cipher method\"(ex - use-s)" array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class AffineHandler(webapp.RequestHandler): def post(self): self.session=Session() mode = self.session.get("mode") msg=self.session.get("msg") symbols=""" !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] ^_`abcdefghijklmnopqrstuvwxyz{|}~""" lenofsym=len(symbols) maxsize=len(msg) txtinput = self.request.get('method') if (txtinput=='a'): txtinput="You have chosen Affine cipher. Your mode is " + mode +" and your message is " + msg + ". Please enter a key (ex: akey-87)." elif (txtinput == 'key'): key=self.request.get("keynum") aff = affine.AffineCipherTool(mode,msg,maxsize,lenofsym) #get key if(aff.storeKey(key) == False): txtinput = aff.badKey else: translated = aff.getTranslatedMessage() txtinput="Your translated message is " + translated array = {'text': txtinput} # Output the JSON self.response.headers['Content-Type'] = 'application/json' self.response.out.write(json.dumps(array))
class TmainHandler(webapp.RequestHandler): def get(self): self.session = Session() logged_name = self.session.get("username") logged_id = self.session.get("id") greeting = "Hello" lookup = (db.GqlQuery("SELECT * FROM TeacherDB WHERE teacher_id = :1", logged_id)).get() classid_teacher = lookup.teacher_class_id result = (db.GqlQuery("SELECT * FROM StudentDB WHERE classid = :1", classid_teacher)).fetch(limit=100) temp = os.path.join(os.path.dirname(__file__), 'templates/tcontrol.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render( temp, { 'loggedUser': logged_id, "greeting": greeting, "result": result })))
class SmainHandler(webapp.RequestHandler): def get(self): self.session=Session() userid=self.session.get("id") username = self.session.get("username") operation = self.request.get("op") error_msg="" goback="" #control if(operation=='0'): result=(db.GqlQuery("SELECT * FROM GameDB WHERE student_id = :1", userid)).fetch(limit=100) temp = os.path.join(os.path.dirname(__file__), 'templates/scontrol.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp,{"loggedUser":username, "result":result}))) #start a new game elif(operation=='1'): temp = os.path.join(os.path.dirname(__file__), 'templates/sgameintro.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp,{"username":username}))) elif(operation=='2'): greeting="Hello, " temp = os.path.join(os.path.dirname(__file__), 'templates/gameload.html') result=(db.GqlQuery("SELECT * FROM GameDB WHERE student_id = :1", userid)).fetch(limit=100) if (len(result) == 0): error_msg="Error! No saved game!" goback="Back to Main" self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp,{"greeting": greeting, "username":userid, "result":result,"error_msg":error_msg, "goback":goback}))) else: temp = os.path.join(os.path.dirname(__file__), 'templates/main.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write(str(template.render(temp,{})))
class PrivateHandler(webapp.RequestHandler): def get(self): self.session = Session() username = self.session.get('username', None) if username == None: doRender(self,'noauth.htm') return newaccess = Access(account=username, path=self.request.path); newaccess.put(); if doRender(self,self.request.path) : return doRender(self,'index.htm')
class AddLocationHandler(webapp.RequestHandler): def post(self): self.session = Session() pkey = self.session.get('userkey') current_user = db.get(pkey) t_rname = self.request.get('name') t_camera = self.request.get('camera') t_size = self.request.get('size') new_location = Location(rname=t_rname, camera=t_camera, size=t_size) new_location.put() que = db.Query(Location) location_list = que.fetch(limit=5000) doRender(self, 'setting.html', {'location_list': location_list})
class AddLocationHandler(webapp.RequestHandler): def post(self): self.session = Session() pkey = self.session.get('userkey') current_user = db.get(pkey) t_rname = self.request.get('name') t_camera = self.request.get('camera') t_size = self.request.get('size') new_location = Location(rname = t_rname, camera = t_camera, size = t_size) new_location.put() que = db.Query(Location) location_list = que.fetch(limit = 5000) doRender(self, 'setting.html', {'location_list' : location_list})
class DetailHandler(webapp.RequestHandler): def get(self): self.session = Session() logged_id = self.session.get("id") sid = self.request.get("id") result = (db.GqlQuery("SELECT * FROM StudentDB WHERE student_id = :1", sid)).fetch(limit=100) temp = os.path.join(os.path.dirname(__file__), 'templates/tdetail.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render(temp, { 'loggedUser': logged_id, "result": result })))
class UserInfoHandler(BaseHandler): def get(self): if self.guest(): return self.session = Session() pkey = self.session.get('userkey') user = db.get(pkey) name = user.name que = db.Query(CSession).filter('td =', pkey) session_list = que.fetch(limit = 100) self.doRender( 'user_info.html', {'sessions' : session_list, \ 'length': str(len(session_list)), \ 'name': name}) def post(self): pass
class index(webapp.RequestHandler): def get(self): #check for sessions here to det which template to render data = {} #check if there's a username entry in the session self.session = Session() data['user'] = self.session.get('username', None) data['noinfo'] = False render(self, "index.html", data) def post(self): data={} render(self, "index.html", data)
class RatingsHandler(webapp.RequestHandler): def get(self): logging.info('RatingsHandler.get()') self.session = Session() if 'user_key' not in self.session: logging.warn('User attempting to access ratings without logging in') return drink_id = self.request.get('drink_id') user_key = self.session.get('user_key') if(drink_id == ''): logging.warn('RatingsHandler called with no drink-id') return # get current user's rating of drink (if any) drink = Drink.get_by_id(int(drink_id)) if drink is None: logging.warn("drink not found for id == " + drink_id) return else: logging.info(drink) query1 = db.Query(DrinkRating).filter('drink = ', drink.key()).filter('ratedBy = ', user_key) my_rating = query1.get() if my_rating is None: my_score = 0 else: my_score = my_rating.score # get average rating query2 = db.Query(AverageRating).filter('drink = ',drink.key()) ave_rating = query2.get() logging.info(ave_rating) if ave_rating is None: ave_score = 0.0 else: ave_score = ave_rating.ave_score doRender(self,'ratings.html',{'drink_key':drink.key(), 'drink_id':drink.key().id(), 'ave_score':ave_score, 'my_score':my_score}) def post(self): logging.info('RatingsHandler.post()') self.session = Session() if 'user_key' not in self.session: logging.warn('User attempting to post ratings without logging in') return user_key = self.session.get('user_key') drink_id = self.request.get('drink_id') score_str = self.request.get('score') if(drink_id == '' or score_str == ''): return logging.info('score == ' + score_str) logging.info('drink_id = ' + drink_id) logging.info('user_key = ' + str(user_key)) num = int(score_str) drink = Drink.get_by_id(int(drink_id)) logging.info(drink) query = db.Query(DrinkRating).filter('ratedBy = ',user_key).filter('drink = ',drink.key()) ratings = query.fetch(limit=1) logging.info(len(ratings)) if len(ratings) < 1: # put new entry in Datastore logging.info('saving rating') rating = DrinkRating(drink=drink.key(), ratedBy=user_key, score=num) rating.put() logging.info(rating.score) logging.info(rating.drink.title) logging.info(rating.ratedBy.name) logging.info(rating.key()) else: # update existing entry rating = ratings[0] rating.score = num rating.put() # Next need to update the display logging.info(rating) self.calculateAverage(drink.key()) self.get() def calculateAverage(self,bkey): ave_query = db.Query(AverageRating).filter('drink = ',bkey) ave_rating = ave_query.get() if ave_rating is None: ave_rating = AverageRating(drink=bkey, count=0, ave_score=0.0) ratings_query = db.Query(DrinkRating).filter('drink = ',bkey) total = 0.0 count = 0 ratings = ratings_query.fetch(limit=1000) for item in ratings: total = total + float(item.score) count = count + 1 ave_rating.ave_score = total / float(count) ave_rating.count = count ave_rating.put() logging.info('calculated average rating of ' + str(ave_rating.ave_score) + ' (n=' + str(ave_rating.count) + ')')
class GameHandler(webapp.RequestHandler): def get(self): self.session = Session() self.session['userCheck'] = 0 userid = self.session.get("id") username = self.session.get("username") level = self.request.get("level") if (self.session.get('level')): self.session.delete_item('level') self.session['level'] = level final = self.request.get("c") errormsg = "" result_student = (db.GqlQuery( "SELECT * FROM StudentDB WHERE student_id = :1", userid)).get() if (level == '1'): self.session.delete_item('userCheck') self.session['userCheck'] = 1 temp = os.path.join(os.path.dirname(__file__), 'templates/game1.html') current_level = int(level) #create a new gamedb for the user if (self.session.get('game_id')): gameid = self.session.get('gid') else: gameid = userid + "_" + str(randint(1, 99999)) self.session['game_id'] = gameid newDB = GameDB(student_id=userid, game_id=gameid, current_level=current_level) newDB.put() #update StudentDB with the new gameid result_student.game_id = gameid result_student.attempt = 0 result_student.level_1 = False result_student.level_2 = False result_student.level_3 = False result_student.level_4 = False result_student.level_5 = False result_student.put() elif (level == '2'): self.session.delete_item('userCheck') self.session['userCheck'] = 2 temp = os.path.join(os.path.dirname(__file__), 'templates/game2.html') current_level = int(level) gameid = self.session.get("game_id") result_game = (db.GqlQuery( "SELECT * FROM GameDB WHERE game_id = :1", gameid)).get() #update game DB with current level result_game.current_level = current_level result_game.put() #update student DB with current level result_student.attempt = current_level result_student.put() elif (level == '3'): self.session.delete_item('userCheck') self.session['userCheck'] = 3 temp = os.path.join(os.path.dirname(__file__), 'templates/game3.html') current_level = int(level) gameid = self.session.get("game_id") result_game = (db.GqlQuery( "SELECT * FROM GameDB WHERE game_id = :1", gameid)).get() result_game.current_level = current_level result_game.put() #update student DB with current level result_student.attempt = current_level result_student.put() elif (level == '4'): self.session.delete_item('userCheck') self.session['userCheck'] = 4 temp = os.path.join(os.path.dirname(__file__), 'templates/game4.html') current_level = int(level) gameid = self.session.get("game_id") result_game = (db.GqlQuery( "SELECT * FROM GameDB WHERE game_id = :1", gameid)).get() result_game.current_level = current_level result_game.put() #update student DB with current level result_student.attempt = current_level result_student.put() elif (level == '5'): self.session.delete_item('userCheck') self.session['userCheck'] = 5 temp = os.path.join(os.path.dirname(__file__), 'templates/game5.html') current_level = int(level) gameid = self.session.get("game_id") result_game = (db.GqlQuery( "SELECT * FROM GameDB WHERE game_id = :1", gameid)).get() result_game.current_level = current_level result_game.put() #update student DB with current level result_student.attempt = current_level result_student.put() elif (level == '0'): self.session['userCheck'] = 0 temp = os.path.join(os.path.dirname(__file__), 'templates/game0.html') gameid = self.session.get("game_id") result_game = (db.GqlQuery( "SELECT * FROM GameDB WHERE game_id = :1", gameid)).get() result_game.completion = True result_game.put() elif (final == "1"): temp = os.path.join(os.path.dirname(__file__), 'templates/gameterm.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render( temp, { "username": username, "level": level + " / 5", "error_msg": errormsg }))) def post(self): self.session = Session() userid = self.session.get("id") username = self.session.get("username") level = self.session.get("level") operation = self.request.get("op") decoded = self.request.get("decodedmsg") error_msg = "" msg = "" solved = None flag = True result = (db.GqlQuery("SELECT * FROM StudentDB WHERE student_id = :1", userid)).get() decoded = decoded.upper() if (operation == '11'): temp = os.path.join(os.path.dirname(__file__), 'templates/game1.html') if (decoded == 'GO TO LIBRARY'): result.level_1 = True msg = "CONTINUE" solved = 1 flag = False #start session for putting the level into the db elif (operation == '12'): temp = os.path.join(os.path.dirname(__file__), 'templates/game2.html') if (decoded == 'GET MYSTERY OF TIME AND GO TO AIRPORT'): result.level_2 = True flag = False solved = 1 msg = "CONTINUE" elif (operation == '13'): temp = os.path.join(os.path.dirname(__file__), 'templates/game3.html') if (decoded == 'HE HAS BROWN HAIR, RED SCARF, YELLOW SHOES'): result.level_3 = True flag = False solved = 1 msg = "CONTINUE" elif (operation == '14'): temp = os.path.join(os.path.dirname(__file__), 'templates/game4.html') if (decoded == 'I LOVE YELLOW AND SKY IS PURPLE'): result.level_4 = True flag = False solved = 1 msg = "CONTINUE" elif (operation == '15'): temp = os.path.join(os.path.dirname(__file__), 'templates/game5.html') if (decoded == 'GO TO GRANDMA HOUSE CODE IS 42'): result.level_5 = True flag = False solved = 1 msg = "CONTINUE" elif (operation == '0'): temp = os.path.join(os.path.dirname(__file__), 'templates/game0.html') if (decoded == '42'): flag = False solved = 1 msg = "CONTINUE" if (flag): error_msg = "I'm sorry. Your decode seems incorrect. Please try again." result.put() self.response.headers['Content-Type'] = 'text/html' self.response.out.write( str( template.render( temp, { "username": username, 'error_msg': error_msg, 'msg': msg, "level": level + " / 5", "solved": solved })))