def renderDados(self):
		# já tenho os mesu dois acumuladores, quero é populá-los com clubes e árbitros
		lista_clubes = listas.get_lista_clubes()
		hash_clubes = {}
		lista_arbitros = listas.get_lista_arbitros()
		hash_arbitros = {}

		for clube in lista_clubes:
			hash_clubes[clube.key().id()] = clube
		for arbitro in lista_arbitros:
			hash_arbitros[arbitro.key().id()] = arbitro
	
		# preparar a tabela de icc		
		
		tabela_icc = self.acumulador_tabela_icc.acuc_content["tabela_icc"]
		for idx, val in enumerate(tabela_icc):
			if tabela_icc[idx].has_key("arb"):
				if hash_arbitros.has_key(tabela_icc[idx]["arb"]):
					tabela_icc[idx]["arbitro"] = hash_arbitros[tabela_icc[idx]["arb"]]
			if tabela_icc[idx].has_key("clus"):
				for idx2, va2 in enumerate(tabela_icc[idx]["clus"]):
					if (hash_clubes.has_key(tabela_icc[idx]["clus"][idx2]["clu"])):
						tabela_icc[idx]["clus"][idx2]["clube"] = hash_clubes[tabela_icc[idx]["clus"][idx2]["clu"]]

		# obter a lista de clubes pela qual está ordenada a tabela_icc
		
		clubes = []
		if len(tabela_icc) > 0:
			for idx, val in enumerate(tabela_icc[0]["clus"]):
				clubes.append(val["clube"])

		# preparar o gráfico de icc
		grafico_icc = self.acumulador_icc.acuc_content["icc"]
		for idx, val in enumerate(grafico_icc):
			grafico_icc[idx]["clube"] = hash_clubes[grafico_icc[idx]["clu"]]

		# preparar o gráfico de ica
		grafico_ica = self.acumulador_ica.acuc_content["ica"]
		for idx, val in enumerate(grafico_ica):
			grafico_ica[idx]["arbitro"] = hash_arbitros[grafico_ica[idx]["arb"]]

		if len(grafico_ica) > 16: 
			list_1 = grafico_ica[:8]
			list_2 = grafico_ica[-8:]
			for el in list_2:
				list_1.append(el)
			grafico_ica = list_1

		dados = {
		"clubes_tabela_icc":clubes,
		"tabela_icc":tabela_icc,
		"grafico_icc":grafico_icc,
		"grafico_ica":grafico_ica
		}
		return dados
	def renderDados(self):
		acumulador = None
		if self.acuc_obj:
			acumulador = self.acuc_obj.acuc_content[self.nspace]
		else:
			acumulador = classes.getAcumuladorCompeticao( 
			 self.competicao, config.VERSAO_ACUMULADOR, self.nspace)

		clubes = listas.get_lista_clubes()
		clus = {}
		for clube in clubes: 
			clus[clube.key().id()] = clube
		
		# no HTML, escrever só as entradas que tem clube. 
		# se não tiver, são de clubes acessórios e não importantes
		for key, list_values in acumulador.items():
			for idx, val in enumerate(acumulador[key]):
				if clus.has_key(acumulador[key][idx]["clu"]):
					acumulador[key][idx]["clube"] = clus[acumulador[key][idx]["clu"]]

		return acumulador
Example #3
0
	def get(self, objname):
		
		id = self.request.get('id')
		sid = self.get_sid_from_cookie()
		tab = self.request.get('tab')
		flash_message = None
		
		if sid:
			flash_message = memcache.get(str(sid), namespace="flash")
			if flash_message:
				memcache.delete(str(sid), namespace="flash")
		
		# há que forçar o encoding do & também
		raw_referer = "/admin/"+objname+"/"
		if os.environ.has_key('HTTP_REFERER'):
			raw_referer = re.sub("&","%38",urllib.quote_plus(os.environ['HTTP_REFERER']))
		
		values = {}
		omit_properties = [] # propriedades do objecto que não precisam de ser impressas e prontas para ser editadas

#############################
######## EDIT EPOCA #########
#############################		

		if objname == "epoca":
			
			try:
                            obj = Epoca.get_by_id(int(id))
			except: 
                            obj = Epoca.all().filter("epo_nome = ", id).get()

			#### DEPENDENTE 1: COMPETICAO ####
			objname1 = "competicao"
			
			try:
				page_index1 = int(self.request.get("pg_"+objname1,"1"))
			except ValueError:
				page_index1 = 1
				
			limit1 = 10
			
			# para editar batch de competições
			objs = []
			for competicao in obj.epo_competicoes:
				objs.append(competicao)
			
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {

				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': Epoca.fields, 'tab':tab,

				# editar this: editar época
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				}),
				
				# listar dependente 1: competições desta época
				'list1': List().gera_lista({
					"objs":obj.epo_competicoes, "objname":objname1, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index1, "limit":limit1
				}),
				
				# novos dependentes 1: novas múltiplas competições anexadas a esta época
				'mnew1': self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'new_for_parent_id':True,
						'this_id':'epo_id', 'obj':obj, "objname":objname1, 
						'howmany':10
				}),

				# editar dependentes 1: editar múltiplas competições anexadas a esta época
				'medit1':self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'multiple_edit':True, 'obj':obj, 'objs':objs, "objname":objname1, 
						'howmany':len(objs)
				})
				
			})
			
##################################
######## EDIT COMPETICAO #########		
##################################

		elif objname == "competicao":
			try:
                            obj = Competicao.get_by_id(int(id))
			except: 
                            obj = Competicao.all().filter("cmp_nome = ", id).get()
			
			#### DEPENDENTE 1: JORNADAS ####
			objname1 = "jornada"
			objs1 = []
			for o in obj.cmp_jornadas:
				objs1.append(o)

			try:
				page_index1 = int(self.request.get("pg_"+objname1,"1"))
			except ValueError:
				page_index1 = 1
			limit1 = 30

			#### DEPENDENTE 2: CLUBE JOGA COMPETICAO ####
			objname2 = "clube_joga_competicao"
			objs2 = []
			
			ob2 = ClubeJogaCompeticao.all().filter("cjc_competicao = ", obj)
			for o in ob2:
				objs2.append(o)
				
			try:
				page_index2 = int(self.request.get("pg_"+objname2,"1"))
			except ValueError:
				page_index2 = 1
			limit2 = 30

			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': Competicao.fields, 'tab':tab,

				# editar this: editar competição
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj,
						'epocas':listas.get_lista_epocas()
				}),
				
				# listar dependente 1: jornadas desta competição
				'list1': List().gera_lista({
					"objs":obj.cmp_jornadas, "objname":objname1, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index1, "limit":limit1
				}),
				
				# novo dependente 1: novas jornadas anexada a esta competicao
				'mnew1': self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'new_for_parent_id':True, "objname":objname1, 
						'this_id':'cmp_id', 'obj':obj, 'howmany':10
				}),
				
				# editar dependentes 1: editar múltiplas jornadas anexadas a esta competição
				'medit1':self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'multiple_edit':True, "objname":objname1, 
						'obj':obj, 'objs':objs1, 'howmany':len(objs1)
				}),
				
				# listar dependente 2: clubes desta competição
				'list2': List().gera_lista({
					"objs":ob2, "objname":objname2, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index2, "limit":limit2
				}),
				
				# novos dependentes 2: novos clubes anexados a esta competicao
				'mnew2': self.render_subdir("admin", 'obj_%s_multiple.html' % objname2, {
						'new_for_parent_id':True, "objname":objname2, 
						'this_id':'cmp_id', 'obj':obj, 'howmany':10,
						'clubes':listas.get_lista_clubes(),
						'competicoes':listas.get_lista_competicoes()
				}),
				
				# editar dependentes 1: editar múltiplos clubes anexadas a esta competicao
				'medit2':self.render_subdir("admin", 'obj_%s_multiple.html' % objname2, {
						'multiple_edit':True, 'obj':obj, 'objs':objs2, 
						'this_id':'cmp_id','howmany':len(objs2), "objname":objname2, 
						'clubes':listas.get_lista_clubes(),
						'competicoes':listas.get_lista_competicoes()
				})
			})

###############################
######## EDIT JORNADA #########
###############################
		
		elif objname == "jornada":
			
			try:
                            obj = Jornada.get_by_id(int(id))
			except: 
                            obj = Jornada.all().filter("jor_nome = ", id).get()

			#### DEPENDENTE 1: JOGOS ####
			objname1 = 'jogo'
			objs1 = []
			for o in obj.jor_jogos:
				objs1.append(o)
			
			try:
				page_index1 = int(self.request.get("pg_"+objname1,"1"))
			except ValueError:
				page_index1 = 1
			
			limit1 = 10
			
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': Jornada.fields, 'tab':tab,

				# editar this: editar jornada
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj,
						'competicoes':listas.get_lista_competicoes()
				}),
				
				# listar dependente 1: jogos desta jornada
				'list1': List().gera_lista({
					"objs":obj.jor_jogos, "objname":objname1, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index1, "limit":limit1
				}),
				
				# novo dependente 1: novos jogos anexados a esta jornada
				'mnew1': self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'new_for_parent_id':True, "objname":objname1, 
						'this_id':'jor_id', 'obj':obj, 'howmany':10,
						'clubes':listas.get_lista_clubes(),
						'arbitros':listas.get_lista_arbitros(), # para select com árbitros,
						'tacticas':listas.get_lista_tacticas()
				}),
				
				# editar dependentes 1: editar múltiplos jogos anexadas a esta jornada
				'medit1':self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'multiple_edit':True, 'obj':obj, 'objs':objs1, 
						'howmany':len(objs1), 
						'clubes':listas.get_lista_clubes(),
						'arbitros':listas.get_lista_arbitros(), # para select com árbitros,
						'tacticas':listas.get_lista_tacticas()
				})
			})

############################
######## EDIT JOGO #########
############################

		elif objname == "jogo":
			try:
                            obj = Jogo.get_by_id(int(id))
			except: 
                            obj = Jogo.all().filter("jog_nome = ", id).get()

			# DEPENDENTE 1
			objname1 = 'jogador_joga_jogo'
			objs1 = []

			for o in obj.jog_jogadores:
				objs1.append(o)

			# DEPENDENTE 2
			objname2 = 'lance'
			objs2 = []
			for o in obj.jog_lances:
				objs2.append(o)

			try:
				page_index1 = int(self.request.get("pg_"+objname1,"1"))
			except ValueError:
				page_index1 = 1

			try:
				page_index2 = int(self.request.get("pg_"+objname2,"1"))
			except ValueError:
				page_index2 = 1
			
			limit1 = 30
			limit2 = 10		
	
			# vamos buscas jogadores dos dois clubes e colocar na select box
			# aproveitar e retirar aqueles que já lá estão
			todos_jogadores = []
			jogadores_clube1 = []
			jogadores_clube2 = []
			
			for jogador in obj.jog_jogadores:
				todos_jogadores.append(jogador.jjj_jogador)
				if jogador.jjj_clube == obj.jog_clube1:
					jogadores_clube1.append(jogador)
						
				else:
					if jogador.jjj_clube == obj.jog_clube2:
						jogadores_clube2.append(jogador)	

			todos_jogadores_clube1 = Jogador.all().filter("jgd_clube_actual = ", obj.jog_clube1).fetch(1000)
			todos_jogadores_clube2 = Jogador.all().filter("jgd_clube_actual = ", obj.jog_clube2).fetch(1000)
			
			# JOGADOR
			todos_jogadores_clube1 = sorted(todos_jogadores_clube1, cmp=lambda x,y: cmp(x.jgd_numero, y.jgd_numero))
			todos_jogadores_clube2 = sorted(todos_jogadores_clube2, cmp=lambda x,y: cmp(x.jgd_numero, y.jgd_numero))
			todos_jogadores = sorted(todos_jogadores, cmp=lambda x,y: cmp(x.jgd_nome, y.jgd_nome))
			
			# JJJ
			jogadores_clube1 = sorted(jogadores_clube1, cmp=lambda x,y: cmp(x.jjj_jogador.jgd_numero, y.jjj_jogador.jgd_numero))
			jogadores_clube2 = sorted(jogadores_clube2, cmp=lambda x,y: cmp(x.jjj_jogador.jgd_numero, y.jjj_jogador.jgd_numero))
			
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': Jogo.fields, 'tab':tab,

				# editar this: editar jogo
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj,
						'clubes':listas.get_lista_clubes(),
						'arbitros':listas.get_lista_arbitros(), # para select com árbitros,
						'tacticas':listas.get_lista_tacticas()
				}),
				
				# listar dependente 1: jjjs deste jogo
				'list1': List().gera_lista({
					"objs":obj.jog_jogadores, "objname":objname1, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index1, "limit":limit1
				}),
				
				# novo dependente 1: novos jjj anexados a este jogo
				'mnew1': self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'new_for_parent_id':True, "objname":objname1, 
						'this_id':'jog_id', 'obj':obj, 'howmany':28, 
						# parâmetros extra
						'jogadores_clube1':todos_jogadores_clube1,
						'jogadores_clube2':todos_jogadores_clube2,
						'clubes':listas.get_lista_clubes(),
						'posicoes':listas.get_lista_posicoes(),
						'arbitros':listas.get_lista_arbitros(),
						'tacticas':listas.get_lista_tacticas()
						
				}),

				# editar dependentes 1: editar múltiplos jjj anexadas a este jogo
				
				# on the render, use jjj_clube1 and jjj_clube2 instead of obj.jog_jogadores
				# because they are ordered.
				'medit1':self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'multiple_edit':True, 'obj':obj, 'objs':objs1, 
						'howmany':len(objs1),  "objname":objname1, 
						# parâmetros extra
						'jogadores_clube1':todos_jogadores_clube1,
						'jogadores_clube2':todos_jogadores_clube2,
						'clubes':listas.get_lista_clubes(),
						'posicoes':listas.get_lista_posicoes(),
						'jjj_clube1':jogadores_clube1,
						'jjj_clube2':jogadores_clube2,
						'arbitros':listas.get_lista_arbitros(), 
						'tacticas':listas.get_lista_tacticas()
				}),
				
				# listar dependente 2: lances deste jogo
				'list2': List().gera_lista({
					"objs":obj.jog_lances, "objname":objname2, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index2, "limit":limit2
				}),
				
				# novos dependentes 2: novos lances associados a este jogo
				'mnew2': self.render_subdir("admin", 'obj_%s_multiple.html' % objname2, {
						'new_for_parent_id':True, "objname":objname2, 
						'this_id':'jog_id', 'obj':obj, 'howmany':10,
						#parâmetros extra
						'jogadores_clube1':todos_jogadores_clube1,
						'jogadores_clube2':todos_jogadores_clube2,
						'jogadores':todos_jogadores,
						'clubes':listas.get_lista_clubes(),
						'tipos_lances':listas.get_lista_tipos_lances(),
						'tipos_jels':listas.get_lista_tipos_jels(),
						'comentadores':listas.get_lista_comentadores()
				}),
				
				# editar dependentes 1: editar múltiplos lances anexadas a este jogo
				'medit2':self.render_subdir("admin", 'obj_%s_multiple.html' % objname2, {
						'multiple_edit':True, 'obj':obj, 'objs':objs2, 
						'howmany':len(objs2),  "objname":objname2, 
						'jogadores_clube1':todos_jogadores_clube1,
						'jogadores_clube2':todos_jogadores_clube2,
						'jogadores':todos_jogadores,
						'clubes':listas.get_lista_clubes(),
						'tipos_lances':listas.get_lista_tipos_lances(),
						'tipos_jels':listas.get_lista_tipos_jels(),
						'comentadores':listas.get_lista_comentadores()
				}),
			})

#############################
######## EDIT LANCE #########
#############################
			
		elif objname == "lance":
			
			try:
                            obj = Lance.get_by_id(int(id))
			except: 
                            obj = Lance.all().filter("lan_nome = ", id).get()

			# DEPENDENTE 1	
			objname1 = 'comentador_comenta_lance'
			objs1 = []
			for o in ComentadorComentaLance.all().filter("ccl_lance = ", obj):
				objs1.append(o)

			# DEPENDENTE 2			
			objname2 = 'jogador_em_lance'
			objs2 = []
			for o in JogadorEmLance.all().filter("jel_lance = ", obj):
				objs2.append(o)

			try:
				page_index1 = int(self.request.get("pg_"+objname1,"1"))
			except ValueError:
				page_index1 = 1

			try:
				page_index2 = int(self.request.get("pg_"+objname2,"1"))
			except ValueError:
				page_index2 = 1
						
			limit1 = 10
			limit2 = 10
			
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': Lance.fields, 'tab':tab,

				# editar this: editar lance
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj, 'objname':objname,
						'tipos_lances':listas.get_lista_tipos_lances()
				}),
				
				# listar dependente 1: ccls deste lance
				'list1': List().gera_lista({
					"objs":obj.lan_comentadores, "objname":objname1, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index1, "limit":limit1
				}),
				
				# novo dependente 1: novos ccls anexados a este lance
				'mnew1': self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'new_for_parent_id':True, 'objname':objname1,
						'this_id':'lan_id', 'obj':obj, 'howmany':3,
						# parâmetros extra
						'comentadores':listas.get_lista_comentadores()
				}),

				# editar dependentes 1: editar múltiplos ccls anexadas a este lance
				'medit1':self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'multiple_edit':True, 'obj':obj, 'objs':objs1, 
						'this_id':'lan_id','howmany':len(objs1), 'objname':objname1,
						'comentadores':listas.get_lista_comentadores()
				}),
				
				# listar dependente 2: comentadores deste lance
				'list2': List().gera_lista({
					"objs":obj.lan_jogadores, "objname":objname2, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index2, "limit":limit2
				}),
				
				# novo dependente 2: novos ccls associados a este lance
				'mnew2': self.render_subdir("admin", 'obj_%s_multiple.html' % objname2, {
						'new_for_parent_id':True, 'objname':objname2,
						'this_id':'lan_id', 'obj':obj, 'howmany':3,
						#parâmetros extra
						'tipos_jels':listas.get_lista_tipos_jels(),
				}),
				# editar dependentes 1: editar múltiplos ccls anexadas a este lance
				'medit2':self.render_subdir("admin", 'obj_%s_multiple.html' % objname2, {
						'multiple_edit':True, 'obj':obj, 'objs':objs2, 
						'this_id':'lan_id','howmany':len(objs2),'objname':objname2,
						'tipos_jels':listas.get_lista_tipos_jels(),
				}),
			})

#############################
######## EDIT CLUBE #########
#############################
		
		elif objname == "clube":
			
			try:
                            obj = Clube.get_by_id(int(id))
			except: 
                            obj = Clube.all().filter("clu_nome = ", id).get()

			# DEPENDENTE 1	
			objname1 = 'jogador'
			
			# List() use Query object. medit use list of retrieved objectd
			objs = Jogador.all().filter("jgd_clube_actual = ", obj)
			objs1 = []
			for o in Jogador.all().filter("jgd_clube_actual = ", obj):
				objs1.append(o)
			
			objs1 = sorted(objs1, cmp=lambda x,y: cmp(x.jgd_numero, y.jgd_numero))
						
			try:
				page_index1 = int(self.request.get("pg_"+objname1,"1"))
			except ValueError:
				page_index1 = 1
			
			limit1 = 40
			posicoes = listas.get_lista_posicoes()
			clubes = listas.get_lista_clubes()
			
			logging.info("Starting lista")
			foo = List().gera_lista({
				"objs":objs, "objname":objname1, 
				"filter_field":None, "filter_needle":None, 
				"url":self.request.url, "referrer":objname,
				"page_index":page_index1, "limit":limit1
			})
			foo2 = None
			try :
				foo2 = self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
					'new_for_parent_id':True, 'objname':objname1,
					'this_id':'clu_id', 'obj':obj, 'howmany':10,
					'clubes':clubes,
					'posicoes':posicoes
				})
			except:
				logging.info(sys.exc_info())

			foo3 = None
			try :
				foo3 = self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
					'multiple_edit':True, 'obj':obj, 'objs':objs1, 
					'this_id':'clu_id','howmany':len(objs1), 'objname':objname1,
					'clubes':clubes,
					'posicoes':posicoes
					})
			except:
				logging.info(sys.exc_info())
			
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': Clube.fields, 'tab':tab,

				# editar this: editar clube
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj, 'objname': objname
				}),
				
				# listar dependente 1: jogadores actuais deste clube
				'list1': foo,
				
				# novo dependente 1: jogadores actuais deste clube
				'mnew1': foo2,

				# editar dependentes 1: editar jogadores actuais deste clube
				'medit1':foo3,
			})

##############################
####### EDIT JOGADOR #########
##############################

		elif objname == "jogador":
		
			try:
                            obj = Jogador.get_by_id(int(id))
			except: 
                            obj = Jogador.all().filter("jgd_nome = ", id).get()

			#dependente 1
			objname1 = 'clube_tem_jogador'
			objs1 = []
			for o in ClubeTemJogador.all().filter("ctj_jogador = ", obj):
				objs1.append(o)
			
			try:
				page_index1 = int(self.request.get("pg_"+objname1,"1"))
			except ValueError:
				page_index1 = 1

			limit1 = 20
			
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': Jogador.fields, 'tab':tab,

				# editar this: editar jogador
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj,
						'posicoes':listas.get_lista_posicoes(),
						'epocas':listas.get_lista_epocas(),
						'clubes':listas.get_lista_clubes()

				}),
				
				# listar dependente 1: clubes deste jogador
				'list1': List().gera_lista({
					"objs":obj.jgd_clubes, "objname":objname1, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index1, "limit":limit1
				}),
				
				# novo dependente 1: novos CTJs anexados a este jogador
				'mnew1': self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'new_for_parent_id':True,
						'this_id':'jgd_id', 'obj':obj,
						'howmany':10, "objname":objname1, 
						'epocas':listas.get_lista_epocas(),
						'clubes':listas.get_lista_clubes()
				}),
				
				# edit dependente 1: editar CTJs anexados a este jogador
				'medit1': self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'multiple_edit':True, 'obj':obj, 'objs':objs1, 
						'this_id':'jgd_id','howmany':len(objs1), 'objname':objname1,
						'epocas':listas.get_lista_epocas(),
						'clubes':listas.get_lista_clubes()
				}),
				
			})

##############################
####### EDIT ARBITRO #########
##############################
		
		elif objname == "arbitro":
			
			try:
                            obj = Arbitro.get_by_id(int(id))
			except: 
                            obj = Arbitro.all().filter("arb_nome = ", id).get()

			# DEPENDENCIA 1: JOGOS
			objname1 = 'jogo'

			try:
				page_index1 = int(self.request.get("pg_"+objname1,"1"))
			except ValueError:
				page_index1 = 1
			
			limit1 = 10

			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': Arbitro.fields, 'tab':tab,

				# editar this: editar árbitro
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				}),
				
				# listar dependente 1: jogos deste árbitro
				'list1': List().gera_lista({
					"objs":obj.arb_jogos, "objname":objname1, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index1, "limit":limit1
				}),
				
				# novo dependente 1: novos jogos anexados a este árbitro
				'new1': self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'new_for_parent_id':True, "objname":objname1, 
						'this_id':'arb_id', 'obj':obj
				})
			})

#################################
####### EDIT COMENTADOR #########
#################################

		elif objname == "comentador":
			
			obj = Comentador.get_by_id(id)
			# DEPENDENTE 1
			objname1 = 'comentador_comenta_lance'
			
			try:
				page_index1 = int(self.request.get("pg_"+objname1,"1"))
			except ValueError:
				page_index1 = 1
			
			limit1 = 10

			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': Comentador.fields, 'tab':tab,

				# editar this: editar comentador
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				}),
				
				# listar dependente 1: lances deste comentador
				'list1': List().gera_lista({
					"objs":obj.com_lances, "objname":objname1, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index1, "limit":limit1
				}),
				
				# novo dependente 1: novos lances anexados a este comentador
				'new1': self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'new_for_parent_id':True, "objname":objname1, 
						'this_id':'com_id', 'obj':obj, 'howmany':3
				})
			})		

############################
####### EDIT FONTE #########
############################

		elif objname == "fonte":
			
			obj = Fonte.get_by_id(id)

			# DEPENDENCIA1: 
			objname1 = 'comentador'
			
			try:
				page_index1 = int(self.request.get("pg_"+objname1,"1"))
			except ValueError:
				page_index1 = 1
			
			limit1 = 10

			# now let's render the edit page
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': Fonte.fields, 'tab':tab,

				# editar this: editar fonte
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				}),
				
				# listar dependente 1: comentadores desta fonte
				'list1': List().gera_lista({
					"objs":obj.fon_comentadores, "objname":objname1, 
					"filter_field":None, "filter_needle":None, 
					"url":self.request.url, "referrer":objname,
					"page_index":page_index1, "limit":limit1
				}),
				
				# novo dependente 1: novos comentadores anexados a esta fonte
				'new1': self.render_subdir("admin", 'obj_%s_multiple.html' % objname1, {
						'new_for_parent_id':True, "objname":objname1, 
						'this_id':'fon_id', 'obj':obj
				})
			})		
			

######## EDIT clube_tem_jogador #########
			
		elif objname == "clube_tem_jogador":

			obj = ClubeTemJogador.get_by_id(id)

			# now let's render the edit page
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': ClubeTemJogador.fields, 'tab':tab,

				# editar this: editar fonte
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				})
			})
				
######## EDIT clube_joga_competicao #########
				
		elif objname == "clube_joga_competicao":
			obj = ClubeJogaCompeticao.get_by_id(id)

			# now let's render the edit page
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': ClubeJogaCompeticao.fields, 'tab':tab,

				# editar this: editar fonte
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				})
			})

######## EDIT jogador_joga_jogo #########
						
		elif objname == "jogador_joga_jogo":
			obj = JogadorJogaJogo.get_by_id(id)

			# now let's render the edit page
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': JogadorJogaJogo.fields, 'tab':tab,

				# editar this: editar fonte
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				})
			})

######## EDIT comentador_comenta_lance #########

		elif objname == "comentador_comenta_lance":
			obj = ComentadorComentaLance.get_by_id(id)

			# now let's render the edit page
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': ComentadorComentaLance.fields, 'tab':tab,

				# editar this: editar fonte
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				})
			})

######## EDIT jogador_em_lance #########

		elif objname == "jogador_em_lance":
			obj = JogadorEmLance.get_by_id(id)

			# now let's render the edit page
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': JogadorEmLance.fields, 'tab':tab,

				# editar this: editar fonte
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				})
			})
		
######## EDIT acumulador jornada #########
			
		elif objname == "acumulador_jornada":
			obj = AcumuladorJornada.get_by_id(id)

			# now let's render the edit page
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': AcumuladorJornada.fields, 'tab':tab,

				# editar this: editar fonte
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				})
			})
			
			
######## EDIT acumulador competicao #########
			
		elif objname == "acumulador_competicao":
			obj = AcumuladorCompeticao.get_by_id(id)

			# now let's render the edit page
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': AcumuladorCompeticao.fields, 'tab':tab,

				# editar this: editar fonte
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				})
			})
	
######## EDIT acumulador epoca #########
			
		elif objname == "acumulador_epoca":
			obj = AcumuladorEpoca.get_by_id(id)

			# now let's render the edit page
			self.render_subdir_to_output("admin", 'edit_%s.html' % objname, {
				'obj':obj, 'flash': flash_message,
				'objname': objname, 'fields': AcumuladorEpoca.fields, 'tab':tab,

				# editar this: editar fonte
				'edit': self.render_subdir("admin", 'obj_%s.html' % objname, {
						'edit':True, 'obj': obj
				})
			})
Example #4
0
	def renderDados(self):
		
		blogpost_limit = 4

# CRIAR CARROSSEL JORNADAS
		now = datetime.datetime.now()
	#	now_plus_one_day = now + datetime.timedelta(days=1)
		jornadas_passadas = Jornada.all().filter("jor_competicao = ", self.competicao ).filter("jor_data <= ",now).order("-jor_data")
		jornadas_futuras = Jornada.all().filter("jor_competicao = ", self.competicao ).filter("jor_data > ",now).order("jor_data")
		
		jornadas_anteriores = [] 
		for j in jornadas_passadas.fetch(2):
			jornadas_anteriores.append(j)
		jornadas_posteriores = []
		for j in jornadas_futuras.fetch(2):
			jornadas_posteriores.append(j)
			
		jornada_corrente = None
		jornada_posterior = None
		jornada_anterior = None
		
# qual é a jornada corrente? Se a jornada futura já tem jogos de hoje...
		corrente = False
		if len(jornadas_posteriores) > 0:
			for jogo in jornadas_posteriores[0].jor_jogos:
				if jogo.jog_data < now:
					corrente = True
		
		if corrente:
			if len(jornadas_posteriores) > 0:
				jornada_corrente = jornadas_posteriores[0]
			if len(jornadas_posteriores) > 1:
				jornada_posterior = jornadas_posteriores[1]
			if len(jornadas_anteriores) > 0:
				jornada_anterior = jornadas_anteriores[0]
		else:
			if len(jornadas_anteriores) > 0:
				jornada_corrente = jornadas_anteriores[0]
			if len(jornadas_posteriores) > 0:
				jornada_posterior = jornadas_posteriores[0]
			if len(jornadas_anteriores) > 1:
				jornada_anterior = jornadas_anteriores[1]

		jor = DetalheJornada()
		jor_posterior_dados = None
		jor_corrente_dados = None
		jor_anterior_dados = None
		
		if jornada_anterior != None:
			jor.jornada=jornada_anterior
			jor_anterior_dados = jor.renderDados()
		if jornada_corrente != None:
			jor.jornada=jornada_corrente
			jor_corrente_dados = jor.renderDados()
		if jornada_posterior != None:
			jor.jornada=jornada_posterior
			jor_posterior_dados = jor.renderDados()

# CRIAR CARROSSEL CALENDÁRIO
		jogos_calendario, last_month, last_year, today_month, today_year, \
			next_month, next_year = self.gera_carrossel_calendario()
		
# CRIAR CARROSSEL CLASSIFICAÇÃO
		acu_class_real = classes.getAcumuladorCompeticao(self.competicao, config.VERSAO_ACUMULADOR,"classificacao_real")
		cl_real = None
		cl_virtual = None
		
		if acu_class_real:
			cl_real = acu_class_real.acuc_content["classificacao_real"]
		
		acu_class_virtual = classes.getAcumuladorCompeticao(self.competicao, config.VERSAO_ACUMULADOR,"classificacao_virtual")
		if acu_class_virtual:
			cl_virtual = acu_class_virtual.acuc_content["classificacao_virtual"]
			
		lista_clubes = listas.get_lista_clubes()
		clus = {}
		for clube in lista_clubes: 
			clus[clube.key().id()] = clube
	
		if cl_real:
			for idx, item in enumerate(cl_real["total"]):
				cl_real["total"][idx]["clube"] = clus[cl_real["total"][idx]["clu"]]
		if cl_virtual:
			for idx, item in enumerate(cl_virtual["total"]):
				cl_virtual["total"][idx]["clube"] = clus[cl_virtual["total"][idx]["clu"]]

# CRIAR BLOG POSTS		
		posts = Post.all().order('-pub_date').fetch(blogpost_limit)

# CRIAR TOPS CLUBES ICC
		grafico = GraficoICC()
		grafico.load_grafico_icc_for_epoca(self.epoca)

		top_clubes_beneficiados_icc = grafico.get_top_beneficiados(3)
		top_clubes_prejudicados_icc =  grafico.get_top_prejudicados(3)
		
		for idx, val in enumerate(top_clubes_beneficiados_icc):
			top_clubes_beneficiados_icc[idx]["clube"] = Clube.get_by_id(top_clubes_beneficiados_icc[idx]["clu"])
		for idx, val in enumerate(top_clubes_prejudicados_icc):
			top_clubes_prejudicados_icc[idx]["clube"] = Clube.get_by_id(top_clubes_prejudicados_icc[idx]["clu"])	

# CRIAR TOPS ARBITROS ICA
		grafico_ica = GraficoICA()
		grafico_ica.load_grafico_ica_for_epoca(self.epoca)

		top_arbitros_bons_ica = grafico_ica.get_top_bons(3)
		top_arbitros_maus_ica = grafico_ica.get_top_maus(3)

		for idx, val in enumerate(top_arbitros_bons_ica):
			top_arbitros_bons_ica[idx]["arbitro"] = Arbitro.get_by_id(top_arbitros_bons_ica[idx]["arb"])
		for idx, val in enumerate(top_arbitros_maus_ica):
			top_arbitros_maus_ica[idx]["arbitro"] = Arbitro.get_by_id(top_arbitros_maus_ica[idx]["arb"])	

# CRIAR TOPS 3 GRANDES/ÁRBITROS (TABELA ICC)	
		tabela_icc = TabelaICC()
		tabela_icc.load_tabela_icc_for_epoca(self.epoca)
		top_tabela_icc_3_grandes = tabela_icc.get_top_arbitros_para_3_grandes()

		dados = {
			"cl_real":cl_real["total"],
			"cl_virtual":cl_virtual["total"],
			
			"jogos_calendario":jogos_calendario,
			
			"last_month":last_month, 
			"last_year":last_year, 
			"today_month":today_month,
			"today_year":today_year, 
			"next_month":next_month, 
			"next_year":next_year,
			
			"posts":posts,
			
			"top_clubes_beneficiados_icc":top_clubes_beneficiados_icc,
			"top_clubes_prejudicados_icc":top_clubes_prejudicados_icc,
			
			"top_tabela_icc_3_grandes":top_tabela_icc_3_grandes,
			
			"top_arbitros_bons_ica":top_arbitros_bons_ica,
			"top_arbitros_maus_ica":top_arbitros_maus_ica,
			
			"jogadores_populares":listas.get_top_jogadores_populares(),
			"clubes_populares":listas.get_top_clubes_populares(),
			"jogos_populares":listas.get_top_jogos_populares(),
			"lances_populares":listas.get_top_lances_populares(),
			"arbitros_populares":listas.get_top_arbitros_populares(),

			"jogadores_recentes":listas.get_top_jogadores_recentes(),
			"jogos_recentes":listas.get_top_jogos_recentes(),
			"lances_recentes":listas.get_top_lances_recentes(),
			"arbitros_recentes":listas.get_top_arbitros_recentes(),
		}
		
		if jornada_anterior != None:
			dados["jornada_anterior"] = jornada_anterior
		dados["jornada_corrente"]=jornada_corrente
		if jornada_posterior != None:
			dados["jornada_posterior"]=jornada_posterior
			
		if jor_anterior_dados != None:
			dados["jornada_anterior_dados"]=jor_anterior_dados["jornada"]
		if jor_corrente_dados != None:
			dados["jornada_corrente_dados"]=jor_corrente_dados["jornada"]
		if jor_posterior_dados != None:
			dados["jornada_posterior_dados"]=jor_posterior_dados["jornada"]

		return dados
Example #5
0
	def get(self):

		lances = None		
		num_resultados = self.request.get("nr")
		# critérios
	#	lan_epoca = self.request.get("epo")
		lan_competicao = self.request.get("cmp")
		#lan_jornada_numero = self.request.get("lan_jornada_numero")
		lan_clube1 = self.request.get("clu1")
		lan_clube2 = self.request.get("clu2")
		lan_arbitro = self.request.get("arb")
		lan_jogador = self.request.get("jgd")
		lan_classe = self.request.get("cla")
		cache = self.request.get("cache")
		sid =self.get_sid_from_cookie()
		
		# preciso de lista de epocas, lista de competições, lista de clubes, lista de árbitros
		
		try:
			page_index = int(self.request.get("pg","1"))
		except ValueError:
			page_index = 1
			
		# values I want, either from memcache, or to generate now
		resultados = None
		results_page = None
		results_total = None
		results_page_links = None
		
		# ok, if we have num_resultados, we have a search
		if num_resultados: 
			
			# let's take off the page. THe cache stores the full results, not the page view
			memcache_label = self.request.path+":"+self.request.query_string
			
			# if this search is in memcache, let's use it
			cacheresultados = memcache.get(memcache_label)
			
			# IF NOT or if it's obsolete, LET'S REBUILD IT
			cache_old = None
			if cacheresultados and cache != "false": 
				# let's check if there are new stuff from: jogador, clube_tem_jogador
				
				cache_old = False
				for elem in ['lance','comentador_comenta_lance','jogador_em_lance']:
					cache = memcache.get(elem)
					if cache and cache['date'] > cacheresultados['date']:
						cache_old = True
					
				
			if not cacheresultados or cache_old:
			
				# jogos = None, cono está no início
				# devia fazer default a Jogos.all(), mas de notar que há épocas, competições e jornadas 
				# como critérios antecessores. Estes podem já refinar. 
				
# FILTRO POR ANTECESSORES (epoca, competicao, jornada)
# ou seja: estes filtros produzem a GqlQuery 'jogos'
					
				lances = Lance.all()
				
				# primeiro nível: 2
				# if lan_epoca:
				# 	epoca = Epoca.get_by_id(int(lan_epoca))
				# 	lances.filter("lan_epoca = ", epoca)
					
				# segundo nível: 2x2
				if lan_competicao:
					competicao = Competicao.all().filter("cmp_nome = ",lan_competicao).get()
					lances.filter("lan_competicao = ", competicao)
					
				# segundo nível: 2x2
				# if lan_jornada_numero:
				# 	jornadas = Jornada.all().filter("jor_nome_curto = ",lan_jornada_numero).fetch(1000)
				# 	lances.filter("lan_jornada in ", jornadas)

				if lan_clube1:
					clube = Clube.get_by_id(int(lan_clube1))
					lances.filter("lan_clube1 = ", clube)
					
				if lan_clube2:
					clube = Clube.get_by_id(int(lan_clube2))
					lances.filter("lan_clube2 = ", clube)
					
				if lan_arbitro:
					arbitro = Arbitro.get_by_id(int(lan_arbitro))
					lances.filter("lan_arbitro = ", arbitro)
				
				if lan_classe:
					lances.filter("lan_classe = ", int(lan_classe))
				
				if lan_jogador:
					jogador = Jogador.all().filter("jgd_nome =",lan_jogador).get()
					jels = JogadorEmLance.all().filter("jel_jogador = ", jogador).fetch(1000)
					lance_list = []
					for j in jels:
						lance_list.append(j.jel_lance.key())
			
					lances.filter("__key__ in ", lance_list)
					
# FIM DA FILTRAGEM
					
# INÍCIO DA PAGINAÇÃO
					
				# now, let's prepare the pages
				myPagedQuery = PagedQuery(lances, int(num_resultados))
		#		myPagedQuery.order("-lan_data")
		#		try:
				results_page = myPagedQuery.fetch_page(page_index)
		#		except:
		#			error = u"Lamentamos, mas essa combinação de pesquisas não podem ser satisfeitas:<UL><LI>Pesquisas só com épocas</LI><LI>Pesquisas com épocas e nomes de jogadores</LI></UL> Por favor, reformule os critérios para gerar uma pesquisa que o motor de busca consiga satisfazer."

				
					
				myLinks = PageLinks(page=page_index, page_count=myPagedQuery.page_count(), 
					url_root=re.sub("pg=\d+", "", self.request.url), page_field="pg")	
				results_page_links = myLinks.get_links()
				results_total = lances.count()
				
				memcache_label = self.request.path+":"+self.request.query_string
				
				# let's put search results on cache
				memcache.set(memcache_label, 
				{"date":datetime.datetime.today() , "results_page":results_page, 
					"results_total":results_total, "page":page_index, 
					"results_page_links":results_page_links},time=86400)
				
			else:
				results_page = cacheresultados['results_page']
				results_total = cacheresultados['results_total']
				results_page_links = cacheresultados['results_page_links']
		
			resultados = {
			"header":{
				"obj":"lance",
				"panel":"pesquisa",
				"total":results_total,
				"nr":num_resultados
			}, 
			"content":[]
			}

			if results_page:
			
				count = (page_index - 1)*int(num_resultados)
			
				for lance in results_page:
				
					count += 1
				
					prot = []
					for jel in lance.lan_jogadores:
						prot.append(jel.jel_jogador.jgd_nome)

					resultados["content"].append({
					"nome":lance.printlance(),
					"logo1":lance.lan_jogo.jog_clube1.clu_link_logo,
					"logo2":lance.lan_jogo.jog_clube2.clu_link_logo,
					"protagonistas":", ".join(prot),
					"data":lance.lan_jogo.jog_data.strftime("%Y-%m-%d"),
					"tipo":Lance.translation_classe[lance.lan_classe],
					"jogo":lance.lan_jogo.printjogo(),
					"jogo_id":lance.lan_jogo.jog_jornada.key().id(),
					"jornada":lance.lan_jogo.jog_jornada.jor_nome,
					"jornada_id":lance.lan_jogo.jog_jornada.key().id(),
					"competicao":lance.lan_jogo.jog_jornada.jor_competicao.cmp_nome_completo+" "+lance.lan_jogo.jog_jornada.jor_competicao.cmp_epoca.epo_nome,
					"competicao_id":lance.lan_jogo.jog_jornada.jor_competicao.key().id(),
					"id":lance.key().id(),
					"click":count
					})

		flash_message = None
		if sid:
			flash_message = memcache.get(str(sid), namespace="flash")
			if flash_message:
				memcache.delete(str(sid), namespace="flash")
						
		self.render_to_output('procurar_lance.html', {

			## feedback of get variables
		#	"lan_epoca": lan_epoca,
			"lan_competicao": lan_competicao,
		#	"lan_jornada_numero": lan_jornada_numero,
			"lan_clube1": lan_clube1,
			"lan_clube2": lan_clube2,
			"lan_arbitro": lan_arbitro,
			"lan_classe": lan_classe,
			"lan_jogador": lan_jogador,
			"num_resultados": num_resultados, 
			
			"flash":flash_message,
			
			# search results
			"results": resultados,
			"results_total": results_total,
			"results_page_links":results_page_links,

			# memcache stuff
			"clubes": listas.get_lista_clubes(),
			"competicoes": listas.get_lista_competicoes(), 
			"tipos_lances": listas.get_lista_tipos_lances(),
			"arbitros": listas.get_lista_arbitros(), 
			"resultados": [15, 30, 40]
		})
	def get(self):
		
		jogadores = None
		
		num_resultados = self.request.get("nr")
		sid =self.get_sid_from_cookie()
		
		# variáveis get que correspondem aos valores do form
		arb_nome = self.request.get("arb") #ID
		arb_clube1 = self.request.get("clu1") #ID
		arb_clube2 = self.request.get("clu2") #ID
		cache = self.request.get("cache") #ID
		
		try:
			page_index = int(self.request.get("pg","1"))
		except ValueError:
			page_index = 1
			
		# values I want, either from memcache, or to generate now
		arbitros = None 
		resultados = None
		results_page = None
		results_total = None
		results_page_links = None
		
		# ok, if we have num_resultados, we have a search
		if num_resultados: 
			
			# let's take off the page. THe cache stores the full results, not the page view
			memcache_label = self.request.path+":"+self.request.query_string
			
			# if this search is in memcache, let's use it
			cacheresultados = memcache.get(memcache_label)
			
			# IF NOT or if it's obsolete, LET'S REBUILD IT
			cache_old = None
			if cacheresultados and cache != "false": 
				# let's check if there are new stuff from: arbitro, jogo
				
				cache_old = False
				
				for elem in ['arbitro','jogo']:
					cache = memcache.get(elem)
					if cache and cache['date'] > cacheresultados['date']:
						cache_old = True
					
			if not cacheresultados or cache_old:
			
				arbitros = Arbitro.all()
				
				if arb_clube1:
					clube1 = Clube.get_by_id(int(arb_clube1))
					jogos = None
					jogos2 = None
					if arb_clube2:
						clube2 = Clube.get_by_id(int(arb_clube2))
						jogos = Jogo.gql("WHERE jog_clube1 = :1 AND jog_clube2 = :2",  clube1, clube2)
					else: 
						jogos = Jogo.gql("WHERE jog_clube1 = :1",  clube1)
						jogos2 = Jogo.gql("WHERE jog_clube2 = :1",  clube1)
					
					arbs = []	
					if jogos: 
						for jogo in jogos:
							if jogo.jog_arbitro:
								if not jogo.jog_arbitro.key().id() in arbs: 
									arbs.append(jogo.jog_arbitro.key())
					if jogos2: 
						for jogo in jogos2:
							if jogo.jog_arbitro:
								if not jogo.jog_arbitro.key().id() in arbs: 
									arbs.append(jogo.jog_arbitro.key())
					arbitros.filter("__key__ in",arbs)
					
				# arb_nome is an ID, really...
				if arb_nome:
					arbitro_key = Arbitro.get_by_id(int(arb_nome))
					arbitros.filter("__key__ IN",[arbitro_key.key()]) 
				# now, let's prepare the pages
				myPagedQuery = PagedQuery(arbitros, int(num_resultados))
				myPagedQuery.order("-arb_numero_visitas")
				results_page = myPagedQuery.fetch_page(page_index)
				myLinks = PageLinks(page=page_index, page_count=myPagedQuery.page_count(), 
					url_root=re.sub("&?pg=\d+", "", self.request.url), page_field="pg")	
				results_page_links = myLinks.get_links()
				results_total = arbitros.count()
				
				memcache_label = self.request.path+":"+self.request.query_string
				
				# let's put search results on cache
				memcache.set(memcache_label, 
				{"date":datetime.datetime.today() , "results_page":results_page, 
					"results_total":arbitros.count(), "page":page_index, 
					"results_page_links":results_page_links},time=86400)
				
			else:
				results_page = cacheresultados['results_page']
				results_total = cacheresultados['results_total']
				results_page_links = cacheresultados['results_page_links']
		
			resultados = {
			"header":{
				"obj":"arbitro",
				"panel":"pesquisa",
				"total":results_total,
				"nr":num_resultados
			}, 
			"content":[]
			}

			if results_page:
			
				count = (page_index - 1)*int(num_resultados)
			
				for arbitro in results_page:
				
					count += 1
				
					resultados["content"].append({
					"nome":arbitro.arb_nome,
					"foto":arbitro.arb_link_foto,
					"id":arbitro.key().id(),
					"click":count
					})

		flash_message = None
		if sid:
			flash_message = memcache.get(str(sid), namespace="flash")
			if flash_message:
				memcache.delete(str(sid), namespace="flash")

		self.render_to_output('procurar_arbitro.html', {
			"arb_nome": arb_nome,
			"arb_clube1": arb_clube1,
			"arb_clube2": arb_clube2,
			"num_resultados": num_resultados, 
			
			# search results
			"results": resultados,
			"results_total": results_total,
			"results_page_links":results_page_links,

			"flash":flash_message,

			# memcache stuff
			"clubes": listas.get_lista_clubes(),
			"arbitros": listas.get_lista_arbitros(),
			"resultados": [15, 30, 40]
		})
Example #7
0
	def get(self, objname):
		
		sid = self.get_sid_from_cookie()
		flash_message = None
		if sid:
			flash_message = memcache.get(str(sid), namespace="flash")
			if flash_message:
				memcache.delete(str(sid), namespace="flash")

		# gera a lista de entradas para este obj_name
		# objs, objname, filter_field, filter_needle, url, page_index, limit
		
		initial_objs = None
		fields = None
		
		tab = self.request.get("tab")
		
		if objname == "clube":
			initial_objs =  Clube.all()
			fields = Clube.fields
		elif objname == "jogador":
			initial_objs =  Jogador.all()
			fields = Jogador.fields
		elif objname == "epoca":
			initial_objs =  Epoca.all()
			fields = Epoca.fields
		elif objname == "competicao":
			initial_objs =  Competicao.all()
			fields = Competicao.fields
		elif objname == "jogo":
			initial_objs =  Jogo.all()
			fields = Jogo.fields
		elif objname == "arbitro":
			initial_objs =  Arbitro.all()
			fields = Arbitro.fields
		elif objname == "comentador":
			initial_objs =  Comentador.all()
			fields = Comentador.fields
		elif objname == "fonte":
			initial_objs =  Fonte.all()
			fields = Fonte.fields
		elif objname == "jornada":
			initial_objs =  Jornada.all()
			fields = Jornada.fields
		elif objname == "lance":
			initial_objs =  Lance.all()
			fields = Lance.fields
			
		elif objname == "clube_tem_jogador":
			initial_objs =  ClubeTemJogador.all()
			fields = ClubeTemJogador.fields
		elif objname == "clube_joga_competicao":
			initial_objs =  ClubeJogaCompeticao.all()
			fields = ClubeJogaCompeticao.fields
		elif objname == "jogador_joga_jogo":
			initial_objs =  JogadorJogaJogo.all()
			fields = JogadorJogaJogo.fields
		elif objname == "comentador_comenta_lance":
			initial_objs =  ComentadorComentaLance.all()
			fields = ComentadorComentaLance.fields
		elif objname == "jogador_em_lance":
			initial_objs =  JogadorEmLance.all()
			fields = JogadorEmLance.fields

		elif objname == "acumulador_jornada":
			initial_objs =  AcumuladorJornada.all()
			fields = AcumuladorJornada.fields
		elif objname == "acumulador_competicao":
			initial_objs =  AcumuladorCompeticao.all()
			fields = AcumuladorCompeticao.fields
		elif objname == "acumulador_epoca":
			initial_objs =  AcumuladorEpoca.all()
			fields = AcumuladorEpoca.fields
	
                lista = List().gera_lista_vazia({
			"objs":initial_objs, 
			"objname":objname, 
			"filter_field":None,
			"filter_needle":None, 
			"url":self.request.url, 
			"referrer":objname,
			"flash":None,
                        "fields":fields
			})
#		lista = List().gera_lista({
#			"objs":initial_objs, 
#			"objname":objname, 
#			"filter_field":None,
#			"filter_needle":None, 
#			"url":self.request.url, 
#			"referrer":objname,
#			"page_index":1, 
#			"limit":15,
#			"flash":None})

#############
### EPOCA ###
#############

		if objname == "epoca":
			
			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
		
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
				'new_single':new_single,
				'objname': objname,
				'flash': flash_message,
				'list': lista,
				'tab':tab
			})

##################
### COMPETICAO ###
##################

		elif objname == "competicao":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True, 
				'epocas':listas.get_lista_epocas()
			})
		
			new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_multiple':True,
				'howmany':10, 
				'epocas':listas.get_lista_epocas()
			})
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
				'new_single':new_single,
				'new_multiple':new_multiple,
				'objname': objname,
				'flash': flash_message,
				'list': lista,
				'tab':tab
			})

###############
### JORNADA ###
###############

		elif objname == "jornada":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True,
				'competicoes':listas.get_lista_competicoes()

			})
		
			new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_multiple':True,
				'howmany':10,
				'competicoes':listas.get_lista_competicoes()
			})
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
				'new_single':new_single,
				'new_multiple':new_multiple,
				'objname': objname,
				'flash': flash_message,
				'list': lista,
				'tab':tab
			})
			
############
### JOGO ###
############

		elif objname == "jogo":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True,
				'clubes':listas.get_lista_clubes(),# para select com clubes,
				'arbitros':listas.get_lista_arbitros(), # para select com árbitros,
				'tacticas':listas.get_lista_tacticas()
			})
		
			new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_multiple':True,
				'howmany':10,
				'clubes':listas.get_lista_clubes(),# para select com clubes,
				'arbitros':listas.get_lista_arbitros(), # para select com árbitros,
				'tacticas':listas.get_lista_tacticas()
			})
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
				'new_single':new_single,
				'new_multiple':new_multiple,
				'objname': objname,
				'flash': flash_message,
				'list': lista,
				'tab':tab
			})

#############
### LANCE ###
#############

		elif objname == "lance":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True,
				'tipos_lances':listas.get_lista_tipos_lances(),
				'tipos_jels':listas.get_lista_tipos_jels(),
				'comentadores':listas.get_lista_comentadores()
			})
		
			new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_multiple':True,
				'howmany':10,
				'tipos_lances':listas.get_lista_tipos_lances(),
				'tipos_jels':listas.get_lista_tipos_jels(),
				'comentadores':listas.get_lista_comentadores()
			})
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
				'new_single':new_single,
				'new_multiple':new_multiple,
				'objname': objname,
				'flash': flash_message,
				'list': lista,
				'tab':tab
			})

#############
### CLUBE ###
#############

		elif objname == "clube":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
				'new_single':new_single,
				'objname': objname,
				'flash': flash_message,
				'list': lista,
				'tab':tab
			})

###############
### JOGADOR ###
###############

		elif objname == "jogador":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True,
				'posicoes': listas.get_lista_posicoes(),
				'clubes': listas.get_lista_clubes(),
				'epocas':listas.get_lista_epocas()
			})
		
			# new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
			# 	'objname': objname,
			# 	'fields': fields,
			# 	'new_multiple':True,
			# 	'howmany':10,
			# 	'posicoes': listas.get_lista_posicoes(),
			# 	'clubes': listas.get_lista_clubes(),
			#	'epocas':listas.get_lista_epocas()
			# })
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
				'new_single':new_single,
#				'new_multiple':new_multiple,
				'objname': objname,
				'flash': flash_message,
				'list': lista,
				'tab':tab
			})

###############
### ARBITRO ###
###############

		elif objname == "arbitro":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
			
			# new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
			# 	'objname': objname,
			# 	'fields': fields,
			# 	'new_multiple':True,
			# 	'howmany':10
			# })
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})

##################
### COMENTADOR ###
##################

		elif objname == "comentador":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
		
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})
			
#############
### FONTE ###
#############

		elif objname == "fonte":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
		
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})
			
#########################
### CLUBE_TEM_JOGADOR ###
#########################

		elif objname == "clube_tem_jogador":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
		
			new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_multiple':True,
				'howmany':10
			})	
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'new_multiple':new_multiple,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})			

#############################
### CLUBE_JOGA_COMPETICAO ###
#############################

		elif objname == "clube_joga_competicao":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
		
			new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_multiple':True,
				'howmany':10
			})	
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'new_multiple':new_multiple,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})			

#########################
### JOGADOR_JOGA_JOGO ###
#########################

		elif objname == "jogador_joga_jogo":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
		
			new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_multiple':True,
				'howmany':10
			})	
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'new_multiple':new_multiple,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})			

################################
### COMENTADOR_COMENTA_LANCE ###
################################

		elif objname == "comentador_comenta_lance":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
		
			new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_multiple':True,
				'howmany':10
			})	
						
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'new_multiple':new_multiple,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})			

########################
### JOGADOR_EM_LANCE ###
########################

		elif objname == "jogador_em_lance":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
		
			new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_multiple':True,
				'howmany':10
			})	
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'new_multiple':new_multiple,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})			


##########################
### ACUMULADOR JORNADA ###
##########################

		elif objname == "acumulador_jornada":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})

			new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_multiple':True,
				'howmany':10
			})
		
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'new_multiple':new_multiple,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})

##########################
### ACUMULADOR COMPETICAO ###
##########################

		elif objname == "acumulador_competicao":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
		
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})
			
##########################
### ACUMULADOR EPOCA ###
##########################

		elif objname == "acumulador_epoca":

			## TAB renders
			new_single = self.render_subdir("admin", 'obj_%s.html' % objname, {
				'objname': objname,
				'fields': fields,
				'new_single':True
			})
		
			
			## HOME render
			self.render_subdir_to_output("admin", 'home_'+objname+'.html', {
			'new_single':new_single,
			'objname': objname,
			'flash': flash_message,
			'list': lista,
			'tab':tab
			})
	def renderDados(self):

		dados = []
		
		acumuladores = AcumuladorCompeticao.all().filter("acuc_epoca = ", self.epoca).filter("acuc_versao = ", config.VERSAO_ACUMULADOR).filter("acuc_namespace = ", "arbitro")
		
		clubes = {}
		
		lista_clubes = listas.get_lista_clubes()
		clus = {}
		for clube in lista_clubes: 
			clus[clube.key().id()] = clube


		for acu in acumuladores:
			if acu.acuc_content["arbitro"].has_key(self.arbitro.key().id()):
				top_arbitro = acu.acuc_content["arbitro"][self.arbitro.key().id()]
		
				for clube_id, jogos in top_arbitro["c_j"].items():
					if not clubes.has_key(clube_id):
						clubes[clube_id] = {
						"clube":clus[clube_id],
			 			"jogos_realizados":0,
			 			"icc":0,
			 			"cartoes_amarelos":0,
			 			"cartoes_duplo_amarelos":0,
			 			"cartoes_vermelhos":0,
			 			"indisciplina":0
					}
					clubes[clube_id]["jogos_realizados"] += jogos
			
				for clube_id, icc  in top_arbitro["c_i"].items():
					if not clubes.has_key(clube_id):
						clubes[clube_id] = {
						"clube":clus[clube_id],
			 			"jogos_realizados":0,
			 			"icc":0,
			 			"cartoes_amarelos":0,
			 			"cartoes_duplo_amarelos":0,
			 			"cartoes_vermelhos":0,
			 			"indisciplina":0
					}
					clubes[clube_id]["icc"] += icc
			
				for clube_id, amarelo in top_arbitro["c_a"].items():
					if not clubes.has_key(clube_id):
						clubes[clube_id] = {
						"clube":clus[clube_id],
			 			"jogos_realizados":0,
			 			"icc":0,
			 			"cartoes_amarelos":0,
			 			"cartoes_duplo_amarelos":0,
			 			"cartoes_vermelhos":0,
			 			"indisciplina":0
					}
					clubes[clube_id]["cartoes_amarelos"] += amarelo
					clubes[clube_id]["indisciplina"] += amarelo

				for clube_id, damarelo in top_arbitro["c_da"].items():
					if not clubes.has_key(clube_id):
						clubes[clube_id] = {
						"clube":clus[clube_id],
			 			"jogos_realizados":0,
			 			"icc":0,
			 			"cartoes_amarelos":0,
			 			"cartoes_duplo_amarelos":0,
			 			"cartoes_vermelhos":0,
			 			"indisciplina":0
					}
					clubes[clube_id]["cartoes_duplo_amarelos"] += damarelo
					clubes[clube_id]["indisciplina"] += 1.5 * damarelo

				for clube_id, vermelho in top_arbitro["c_v"].items():
					if not clubes.has_key(clube_id):
						clubes[clube_id] = {
						"clube":clus[clube_id],
						"jogos_realizados":0,
						"icc":0,
						"cartoes_amarelos":0,
						"cartoes_duplo_amarelos":0,
						"cartoes_vermelhos":0,
						"indisciplina":0
					}
					clubes[clube_id]["cartoes_vermelhos"] += vermelho
					clubes[clube_id]["indisciplina"] += 2 * vermelho

		return clubes.values()
	def get(self):
		
		jogadores = None
		
		num_resultados = self.request.get("nr")
		jgd_nome = self.request.get("jgd")
		jgd_clube = self.request.get("clu")
		jgd_epoca = self.request.get("epo")
		jgd_numero = self.request.get("num")
		cache = self.request.get("cache")
		sid =self.get_sid_from_cookie()
		
		try:
			page_index = int(self.request.get("pg","1"))
		except ValueError:
			page_index = 1
			
		# values I want, either from memcache, or to generate now
		resultados = None
		ctjogadores = None 
		results_page = None
		results_total = None
		results_page_links = None
		
		# ok, if we have num_resultados, we have a search
		if num_resultados: 
			
			# let's take off the page. THe cache stores the full results, not the page view
			memcache_label = self.request.path+":"+self.request.query_string
			
			logging.info("A procurar memcache por "+memcache_label)
			# if this search is in memcache, let's use it
			cacheresultados = memcache.get(memcache_label)
			
			# IF NOT or if it's obsolete, LET'S REBUILD IT
			cache_old = None
			if cacheresultados and cache != "false": 
				# let's check if there are new stuff from: jogador, clube_tem_jogador
				
				cache_old = False
				for elem in ['jogador','clube_tem_jogador']:
					cache = memcache.get(elem)
					if cache and cache['date'] > cacheresultados['date']:
						logging.info("Modelo '"+elem+"' tem elementos mais frescos ("+str(cache['date'])+") do que a cache desta procura ("+str(cacheresultados['date'])+")")
						cache_old = True
					
				if not cache_old:	
					logging.info ("Cache desta procura ("+str(cacheresultados['date'])+") ainda é fresca.")
				
			if not cacheresultados or cache_old:
			
				logging.info("Memcache para "+memcache_label+" é inexistente ou obsoleta. A gerar novos dados.")
				
				ctjogadores = ClubeTemJogador.all()
			
				# if jog_epoca (id)
				if jgd_epoca:
					epoca = Epoca.get_by_id(int(jgd_epoca))
					ctjogadores.filter("ctj_epocas =", epoca.key())
					
				if jgd_numero:
					ctjogadores.filter("ctj_numero = ", int(jgd_numero))
					logging.info("Fitro:jgd_numero "+ jgd_numero)
				
				# if jog_clube (id)
				if jgd_clube:
					clube = Clube.get_by_id(int(jgd_clube))
					ctjogadores.filter("ctj_clube = ", clube)
					logging.info("Fitro:clube "+ clube.__str__())

				# if jog_nome
				if jgd_nome:
					jogadores = Jogador.all().filter("jgd_nome = ",jgd_nome).order("jgd_nome")
					logging.info("filtro: jgd_nome")
					ctjogadores.filter("ctj_jogador in ", jogadores.fetch(1000))
								
				#data = ctjogadores.fetch(int(num_resultados))
				
				logging.info("Got new ctjogadores, count = "+str(ctjogadores.count())+" (num_resultados = "+str(num_resultados)+")")
				
				# now, let's prepare the pages
				myPagedQuery = PagedQuery(ctjogadores, int(num_resultados))
				# não há ordem, são ctj
				#myPagedQuery.order("jgd_numero_visitas")
				results_page = myPagedQuery.fetch_page(page_index)
				myLinks = PageLinks(page=page_index, page_count=myPagedQuery.page_count(), 
					url_root=re.sub("&?pg=\d+", "", self.request.url), page_field="pg")	
				results_page_links = myLinks.get_links()
				results_total = ctjogadores.count()
				
				memcache_label = self.request.path+":"+self.request.query_string
				
				# let's put search results on cache
				memcache.set(memcache_label, 
				{"date":datetime.datetime.today() , "results_page":results_page, 
					"results_total":results_total, "page":page_index, 
					"results_page_links":results_page_links},time=86400)
				
			else:
				logging.info("Memcache existe para "+memcache_label+", a obter dados da memcache")
				results_page = cacheresultados['results_page']
				results_total = cacheresultados['results_total']
				results_page_links = cacheresultados['results_page_links']

			resultados = {
			"header":{
				"obj":"jogador",
				"panel":"pesquisa",
				"total":results_total,
				"nr":num_resultados
				}, 
			"content":[]
			}

			if results_page:
			
				count = (page_index - 1)*int(num_resultados)
			
				for ctj in results_page:
				
					count += 1
				
					resultados["content"].append({
					"nome":ctj.ctj_jogador.jgd_nome,
					"foto":ctj.ctj_jogador.jgd_link_foto,
					"numero":ctj.ctj_jogador.jgd_numero,
					"clube":ctj.ctj_jogador.jgd_clube_actual.clu_nome_curto,
					"clube_id":ctj.ctj_jogador.jgd_clube_actual.key().id(),
					"id":ctj.ctj_jogador.key().id(),
					"click":count
					})

		flash_message = None
		if sid:
			flash_message = memcache.get(str(sid), namespace="flash")
			if flash_message:
				memcache.delete(str(sid), namespace="flash")

		self.render_to_output('procurar_jogador.html', {
			## feedback of get variables
			"jgd_nome": jgd_nome,
			"jgd_clube": jgd_clube,
			"jgd_epoca": jgd_epoca,
			"jgd_numero": jgd_numero,
			"num_resultados": num_resultados, 
			
			# search results
			"results": resultados,
			"results_total": results_total,
			"results_page_links":results_page_links,

			"flash":flash_message,

			# memcache stuff
			"clubes": listas.get_lista_clubes(),
			"epocas": listas.get_lista_epocas(),
			"resultados": [15, 30, 40]
		})
Example #10
0
	def get(self):

		jogos = None		
		num_resultados = self.request.get("nr")
		sid =self.get_sid_from_cookie()

		# critérios
		clube_id = self.request.get("clu")
		cache = self.request.get("cache")
		
		try:
			page_index = int(self.request.get("pg","1"))
		except ValueError:
			page_index = 1
			
		# values I want, either from memcache, or to generate now
		resultados = None
		results_page = None
		results_total = None
		results_page_links = None
		
		# ok, if we have num_resultados, we have a search
		if num_resultados: 
			
			# let's take off the page. THe cache stores the full results, not the page view
			memcache_label = self.request.path+":"+self.request.query_string
			
			logging.info("A procurar memcache por "+memcache_label)
			# if this search is in memcache, let's use it
			cacheresultados = memcache.get(memcache_label)
			
			# IF NOT or if it's obsolete, LET'S REBUILD IT
			cache_old = None
			if cacheresultados and cache != "false": 
				# let's check if there are new stuff from: jogador, clube_tem_jogador
				
				cache_old = False
				for elem in ['clube']:
					cache = memcache.get(elem)
					if cache and cache['date'] > cacheresultados['date']:
						logging.info("Modelo '"+elem+"' tem elementos mais frescos ("+str(cache['date'])+") do que a cache desta procura ("+str(cacheresultados['date'])+")")
						cache_old = True
					
				if not cache_old:	
					logging.info ("Cache desta procura ("+str(cacheresultados['date'])+") ainda é fresca.")
				
			if not cacheresultados or cache_old:
			
				logging.info("Memcache para "+memcache_label+" é inexistente ou obsoleta. A gerar novos dados.")
				
				clubes = Clube.all()

				# primeiro nível: 1
				if clube_id:
					c = Clube.get_by_id(int(clube_id))
					if c:
						clubes.filter("__key__ = ", c.key())
		
# FIM DA FILTRAGEM
					
# INÍCIO DA PAGINAÇÃO
					
				# now, let's prepare the pages
		#		jogos.order("-jog_numero_visitas")
				myPagedQuery = PagedQuery(clubes, int(num_resultados))
				myPagedQuery.order("-clu_numero_visitas")
				results_page = myPagedQuery.fetch_page(page_index)
				
				myLinks = PageLinks(page=page_index, page_count=myPagedQuery.page_count(), 
					url_root=re.sub("pg=\d+", "", self.request.url), page_field="pg")	
				results_page_links = myLinks.get_links()
				results_total = clubes.count()
				
				memcache_label = self.request.path+":"+self.request.query_string
				
#				logging.info("Setting new memcache data for "+memcache_label+" : "+str(results_page))
				# let's put search results on cache
				memcache.set(memcache_label, 
				{"date":datetime.datetime.today() , "results_page":results_page, 
					"results_total":results_total, "page":page_index, 
					"results_page_links":results_page_links},time=86400)
				
			else:
				logging.info("Memcache existe para "+memcache_label+", a obter dados da memcache")
				results_page = cacheresultados['results_page']
				results_total = cacheresultados['results_total']
				results_page_links = cacheresultados['results_page_links']
		
			resultados = {
			"header":{
				"obj":"clube",
				"panel":"pesquisa",
				"total":results_total,
				"nr":num_resultados
			}, 
			"content":[]
			}

			if results_page:
			
				count = (page_index - 1)*int(num_resultados)
			
				for clube in results_page:
				
					count += 1
				
					resultados["content"].append({
					"nome":clube.clu_nome_curto,
					"foto":clube.clu_link_logo,
					"id":clube.key().id(),
					"click":count
					})

		flash_message = None
		if sid:
			flash_message = memcache.get(str(sid), namespace="flash")
			if flash_message:
				memcache.delete(str(sid), namespace="flash")
			
		self.render_to_output('procurar_clube.html', {
			"clu_nome": clube_id,
			"num_resultados": num_resultados, 
			
			"flash":flash_message,
			
			# search results
			"results": resultados,
			"results_total": results_total,
			"results_page_links":results_page_links,

			# memcache stuff
			"clubes": listas.get_lista_clubes(), 
			"resultados": [15, 30, 40]
		})