Ejemplo n.º 1
0
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))
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
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})))
Ejemplo n.º 5
0
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))
Ejemplo n.º 6
0
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))
Ejemplo n.º 7
0
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))
Ejemplo n.º 8
0
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))
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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))
Ejemplo n.º 11
0
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))
Ejemplo n.º 12
0
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})
Ejemplo n.º 13
0
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))
Ejemplo n.º 14
0
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"
                })))
Ejemplo n.º 15
0
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))
Ejemplo n.º 16
0
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, {})))
Ejemplo n.º 17
0
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})))
Ejemplo n.º 18
0
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
                    })))
Ejemplo n.º 19
0
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.'} ) 
Ejemplo n.º 20
0
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})
Ejemplo n.º 21
0
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})
Ejemplo n.º 22
0
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
                })))
Ejemplo n.º 23
0
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', {})
Ejemplo n.º 24
0
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.'})
Ejemplo n.º 25
0
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', {})
Ejemplo n.º 26
0
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)
Ejemplo n.º 27
0
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')
Ejemplo n.º 28
0
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')
Ejemplo n.º 29
0
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"})))
Ejemplo n.º 30
0
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})))
Ejemplo n.º 31
0
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)  
Ejemplo n.º 32
0
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")
Ejemplo n.º 34
0
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()
Ejemplo n.º 35
0
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
Ejemplo n.º 36
0
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))
Ejemplo n.º 37
0
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))
Ejemplo n.º 38
0
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))
Ejemplo n.º 39
0
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
                    })))
Ejemplo n.º 40
0
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,{})))
Ejemplo n.º 41
0
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')
Ejemplo n.º 42
0
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})
Ejemplo n.º 43
0
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}) 
Ejemplo n.º 44
0
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
                })))
Ejemplo n.º 45
0
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
Ejemplo n.º 46
0
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)
Ejemplo n.º 47
0
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) + ')')
Ejemplo n.º 48
0
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
                    })))