示例#1
0
文件: main.py 项目: ThomasMarcel/thas
	def get(self):
		### Session verification code ###
                session = get_current_session()
                try:
                        if session['key'] and session['key'] != '':
				self.redirect('/dashboard')
                except KeyError:
			pass
                #################################

		template_values = {
                'pagename': 'main',
                }

		log = 'disabled'
		logQ = Setting.all().filter("name =", 'log').run()
		for l in logQ:
			log = l.value
		template_values['log'] = log

		indexset = False
		indexsettings = Setting.all().filter("name =", 'index').run()
		for indexsetting in indexsettings:
			indexset = True
			index = indexsetting.value
		if indexset == False:
	                path = os.path.join(os.path.dirname(__file__), 'templates/index.html')
	                self.response.out.write(template.render(path, template_values))
		else:
			try:
				self.redirect(index)
			except UnboundLocalError:
				path = os.path.join(os.path.dirname(__file__), 'templates/index.html')
	                        self.response.out.write(template.render(path, template_values))
示例#2
0
	def get(self):
		nick = self.request.get('nick')

                template_values = {
                'title': 'Projects',
                }

                validuser = False
		pd = ''
                if nick is None or nick == '':
                        ### Session verification code ###
                        session = get_current_session()
                        try:
                                validuser = True
                                user = User.get(session['key'])
                                template_values['logged'] = True
                                template_values['unread'] = UnreadMessages(session['key'])
                        except KeyError:
				validuser = False
                                logging.error('-1')
                                projectdefaults = Setting.all().filter("name =", 'project_default').run()
                                pd = '/?exception=NoVariableNorSession'
                                for projectdefault in projectdefaults:
                                        pd = projectdefault.value
                                logging.error(pd)
                                self.redirect(pd)
                        #################################
                else:
                        validuser = False
                        for user in User.all().filter("nick =", nick).run(limit=1):
                                validuser = True

                if validuser:
			projects = Project.all().filter("user ="******"-date").run()
			active = []
                        completed = []
                        dropped = []
			for project in projects:
                        	if project.status == 0:
	                                active.append(project)
                                elif project.status == 1:
                                        completed.append(project)
                                elif project.status == -1:
                                        dropped.append(project)
                        template_values['projects'] = True
                        template_values['active'] = active
                        template_values['completed'] = completed
                        template_values['dropped'] = dropped
			path = os.path.join(os.path.dirname(__file__), 'templates/projects.html')
                        self.response.out.write(template.render(path, template_values))
		elif pd != '':
			self.redirect(pd)
                else:
                        self.redirect('/?exception=InvalidUser')
示例#3
0
文件: wall.py 项目: ThomasMarcel/thas
	def get(self):
		nick = self.request.get('nick')
		validuser = False
		pins = None

		template_values = {
                'pagename': 'wall',
                }

		if nick is not None and nick != '':
			userQ = User.all().filter("nick =", nick).run(limit=1)
			for user in userQ:
				validuser = True
				pins = Pin.all().filter("user ="******"-date").run(limit=50)
		try:
                        session = get_current_session()
                        if session['key'] and session['key'] != '':
                                unread = UnreadMessages(session['key'])
                                template_values['logged'] = True
                                template_values['unread'] = unread
				validuser = True
                                if pins is None:
                                        pins = Pin.all().filter("user ="******"-date").run(limit=50)
                except KeyError:
			logging.error('Key error getting session. No session opened. PASS.')
		if validuser:

			template_values['pins'] = pins
			path = os.path.join(os.path.dirname(__file__), 'templates/wall.html')
	                self.response.out.write(template.render(path, template_values))
		else:
			#logging.error('User ' + nick + ' not found. EXIT.')
			#self.redirect('/?exception=NickNotFound')
                        walldefaults = Setting.all().filter("name =", 'wall_default').run()
                        wd = '/?exception=NoVariableNorSession'
                        for walldefault in walldefaults:
                                wd = walldefault.value
                        self.redirect(wd)
示例#4
0
	def __init__(self):
		self.regstatus = False
		regstatusesQ = Setting.all().filter("name =", 'register').filter("value =", 'enabled').run()
		for regstatuses in regstatusesQ:
			self.regstatus = True
示例#5
0
文件: game.py 项目: ThomasMarcel/thas
	def get(self):
		puser = self.request.get('user')
		action = self.request.get('action')

		self.response.headers['Content-Type'] = 'application/json'
		if puser is not None and puser != '':
			try:
				user = User.get(puser)
				if action == 'gamelist':
					bogeyslist = []
					gameslist = []
					playerslist = []
					gamesdetails = []
					returndict = {'user': {'nick': user.nick, 'avatar': user.avatar, 'fname': user.fname, 'lname': user.lname}}
					bogeys = Monster.all().filter("user ="******"monster IN", bogeyslist).run()
						for player in players:
							playerslist.append(player.key())
							gameslist.append(player.game)
						for game in gameslist:
							ggame = Game.get(game)
							gamedict = {'name': ggame.name, 'owner': ggame.owner, 'status': ggame.status, 'date': ggame.date}
							playerslist = []
							gplayers = Player.all().filter("game =", game).run()
							for gplayer in gplayers:
								gmonster = Monster.get(gplayer.monster)
								guser = User.get(gmonster.user)
								playerdict = {'nick': user.nick, 'avatar': user.avatar, 'fname': user.fname, 'lname': user.lname, 'monster': {'name': gmonster.name, 'date': gmonster.date}}
								playerslist.append(playerdict)
							gamedict['players'] = playerslist
							gameslist.append(gamedict)
					returndict['games'] = gameslist
					self.response.out.write(json.dumps(returndict))
				elif action == 'newmonster':
					monsterlimit = 3
					smonsterlimits = Setting.all().filter("name =", 'monster_limit').run(limit=1)
					for smonsterlimit in smonsterlimits:
						monsterlimit = smonsterlimit.value
					monsterlist = []
					gmonsters = Monster.all().filter("user ="******"user ="******"name =", 'game_limit').run(limit=1)
                                        for sgamelimit in sgamelimits:
                                                gamelimit = sgamelimit.value
                                        gamelist = []
					monsterlist = []
					gmonsters = Monster.all().filter("user ="******"monster in", monsterlist).run()
                                        for gplayer in gplayers:
						game = Game.get(gplayer.game)
                                                gamedict =  game.name
                                                gamelist.append(gamedict)
                                        if len(gamelist) < gamelimit:
                                                pname = self.request.get('name')
                                                if pname is not None and pname != '':
                                                        if pname not in gamelist:
								size = self.request.get('size').split('x')
								if len(size) == 2:
									pmonster = self.request.get('monster')
									if pmonster is not None and pmonster != '':
										monster = Monster.get(pmonster)
										if monster.user == puser:
											newgame = Game()
											newgame.name = pname
											newgame.owner = puser
											newgame.status = 0
											newgame.put()

											board = Board()
											board.game = str(newgame.key())
											#size = int(size)
											sizeblob = []
											for val in size:
												val = int(val)
												sizeblob.append(val)
											board.size = json.dumps(sizeblob)
											board.put()

											newplayer = Player()
											newplayer.game = str(newgame.key())
											newplayer.monster = pmonster
											newplayer.position = json.dumps([randnum(sizeblob[0]), randnum(sizeblob[1])])
											logging.info('position: ' + str(json.loads(newplayer.position)))
											newplayer.put()

											self.response.out.write(json.dumps({'status': 1, 'message': 'Game ' + pname + ' successfully created.'}))
										else:
											self.response.out.write(json.dumps({'status': -9, 'message': 'Invalid combo monster/user.'}))
									else:
										self.response.out.write(json.dumps({'status': -8, 'message': 'Missing parameter monster.'}))
								else:
									self.response.out.write(json.dumps({'status': -7, 'message': 'Wrong size value, not in range'}))
							else:
								self.response.out.write(json.dumps({'status': -6, 'message': 'The user already is in a game called ' + pname + '.'}))
								
						else:
							self.response.out.write(json.dumps({'status': -4, 'message': 'Missing parameter for game creation'}))
					else:
						self.response.out.write(json.dumps({'status': -5, 'message': 'Game limit of ' + str(gamelimit) + ' reached for user'}))
				elif action == 'joingame':
					ggame = self.request.get('game')
					gmonster = self.request.get('monster')
					if ggame is None or ggame == '' or gmonster is None or gmonster == '':
						self.response.out.write(json.dumps({'status': -10, 'message': 'Missing mandatory parameter(s).'}))
					else:
						game = Game.get(ggame)
						monster = Monster.get(gmonster)
						if monster.user == puser:
							monsterlist = []
							playermonsters = Monster.all().filter("user ="******"monster in", monsterlist).run():
								gamelist.append(playergame.game)
							if ggame not in gamelist:
								ingame = False
								gplayers = Player.all().filter("monster =", gmonster).run(limit=1)
								for gplayer in gplayers:
									ingame = True
								if not ingame:
									gamelimit = 4
									if game.slots != None:
										gamelimit = game.slots
									gameplayerlist = []
									gameplayers = Player.all().filter("game =", ggame).run(limit=gamelimit)
									for gameplayer in gameplayers:
										gameplayerlist.append(gameplayer.monster)
									if len(gameplayerlist) < gamelimit:
										player = Player()
										player.game = ggame
										player.put()
			                                                	self.response.out.write(json.dumps({'status': 1, 'message': 'Successfully joined game ' + game.name + '.'}))
									else:
				                                                self.response.out.write(json.dumps({'status': -12, 'message': 'No open slots left for game ' + ggame + '.'}))
								else:
			                                                self.response.out.write(json.dumps({'status': -13, 'message': 'Player already in game ' + ggame + '.'}))
							else:
		                                                self.response.out.write(json.dumps({'status': -11, 'message': 'Monster already in a game.'}))
						else:
	                                                self.response.out.write(json.dumps({'status': -9, 'message': 'Invalid combo monster/user.'}))
				elif action == 'modifygame':
				#Modify/delete game if the owner is requesting and if it has no player but the owner
					logging.info('action: ' + action)
					method = self.request.get('method')
					if method == 'm':
						logging.info('method: ' + method)
					elif method == 'd':
						logging.info('method: ' + method)
					else:
	                                        self.response.out.write(json.dumps({'status': -14, 'message': 'Invalid method "' + method + '" for action ' + action + '.'}))
				elif action == 'modifymonster':
				#Modify/delete a monster if the owner is requesting it and if the monster is not in a started game
					logging.info('action: ' + action)
					method = self.request.get('method')
					if method == 'm':
						logging.info('method: ' + method)
					elif method == 'd':
						logging.info('method: ' + method)
					else:
	                                        self.response.out.write(json.dumps({'status': -14, 'message': 'Invalid method "' + method + '" for action ' + action + '.'}))
				else:
					self.response.out.write(json.dumps({'status': -3, 'message': 'Invalid action parameter'}))
			except db.BadKeyError:
				self.response.out.write(json.dumps({'status': -2, 'message': 'Invalid key'}))

		else:
			self.response.out.write(json.dumps({'status': -1, 'message': 'Wrong user parameter'}))
示例#6
0
文件: blog.py 项目: ThomasMarcel/thas
	def get(self):
		nick = self.request.get('nick')
		page = self.request.get('page')
		
		template_values = {
                'title': 'Blog',
                }

		validuser = False
		# If a nick value is not given, assuming a user is logged, using his key to get entries
		bd = ''
		if nick is None or nick == '':
			### Session verification code ###
	                session = get_current_session()
	                try:
				logging.error('1')
				validuser = True
				user = User.get(session['key'])
				template_values['logged'] = True
				template_values['unread'] = UnreadMessages(session['key'])
	                except KeyError:
				validuser = False
				logging.error('-1')
				blogdefaults = Setting.all().filter("name =", 'blog_default').run()
                                bd = '/?exception=NoVariableNorSession'
                                for blogdefault in blogdefaults:
                                        bd = blogdefault.value
                                logging.error(bd)
                                self.redirect(bd)
	                #################################
		# If a nick is specified in a variable, get the user's entries
		else:
			logging.error('2')
			validuser = False
			for user in User.all().filter("nick =", nick).run(limit=1):
				validuser = True

		if validuser:
			ref = self.request.get('ref')
			batchsize = self.request.get('batchsize')
	                if ref is not None and ref != '':
	                        pagesref = Entry.all().filter("user ="******"-date").run()
				countentry = 0
	                        for pageref in pagesref:
					if pageref.key().id() != int(ref):
						countentry += 1
					else:
						break
				if batchsize is None or batchsize == '':
	                                batchsize = 5
	                        else:
	                                batchsize = int(batchsize)
				entdiv = countentry / batchsize
				floatdiv = countentry % batchsize
				logging.warning(str(countentry) + " - " + str(entdiv) + " - " + str(floatdiv))
				if floatdiv > 0:
					entdiv += 1
				self.redirect("/blog?page=" + str(entdiv) + "#" + ref)

			# Try to get page number and batch size from given parameters to determine which entries to show. Default [0:5]
			if page is None or page == '' or page == '0':
				page = 1
			else:
				page = int(page)
			if batchsize is None or batchsize == '':
				batchsize = 5
			else:
				batchsize = int(batchsize)
			offset = (int(page) - 1) * batchsize
			
			# Get entries and for each one, get the corresponding pictures, build a dictionary with attributes both from Entry and EntryBlob, and add it to a list of entries
			entries = Entry.all().filter("user ="******"-date").run(offset=offset,limit=batchsize)
			entrieslist = []
			for entry in entries:
				entrydict = {'id': str(entry.key().id()), 'key': str(entry.key()), 'title': entry.title, 'body': entry.body, 'shortdesc': entry.body[0:297] + '...', 'date': str(entry.date).split('.')[0], 'author': user.nick}
				blobslist = []
				entryblob = EntryBlob.all().filter("entry =", str(entry.key())).run()
				for blob in entryblob:
					blobslist.append({'key': str(blob.key()), 'blob': blob.blob, 'position': blob.position})
				entrydict['blobs'] = blobslist
				sharedpics = EntryBlob.all().filter("entry =", str(entry.key())).run(limit=1)
				for pic in sharedpics:
					sharedpic = {'key': str(pic.key()), 'blob': pic.blob}
					entrydict['sharedpic'] = sharedpic

				tags = ""
				taggedQ = Tagged.all().filter("entitykey =", str(entry.key())).run()
				for tagged in taggedQ:
	                                tag = Tag.get(tagged.tagkey)
	                                if tags == "":
	                                        tags += tag.tag        
	                                else:
	                                        tags += ", " + tag.tag        
	                        if len(tags) > 0:
	                                entrydict['tags'] = tags
					logging.info('Tags: ' + tags)

				entrieslist.append(entrydict)
			template_values['entries'] = entrieslist
			path = os.path.join(os.path.dirname(__file__), 'templates/blog.html')
                        self.response.out.write(template.render(path, template_values))
		elif bd != '':
			self.redirect(bd)
		else:
			self.redirect('/?exception=InvalidUser')