コード例 #1
0
ファイル: edit.py プロジェクト: NunoCardoso/foipenalti
	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
				})
			})
コード例 #2
0
ファイル: homepage.py プロジェクト: NunoCardoso/foipenalti
	def renderHTML(self):

		ultima_epoca_na_db = self.getConstants().getUltimaEpocaNaDB()

		noticias_html = self.render_subdir('homepage','gera_mini_blog.html', {
			"posts": self.dados['posts']
		})		
			
		classificacao_real_html = self.render_subdir('homepage','gera_classificacao_real.html', {
			"classificacao_real": self.dados['cl_real'],
			"competicao":self.competicao
		})		
			
		classificacao_virtual_html = self.render_subdir('homepage','gera_classificacao_virtual.html', {
			"classificacao_virtual": self.dados['cl_virtual'],
			"competicao":self.competicao
		})
		
		jornada_anterior_html = None
		if self.dados.has_key("jornada_anterior") and self.dados.has_key("jornada_anterior_dados") :
			jornada_anterior_html = self.render_subdir('homepage','gera_jornada.html', {
			"jornada": self.dados['jornada_anterior'],
			"jornada_dados": self.dados['jornada_anterior_dados']
			})
		
		jornada_corrente_html = None
		if self.dados.has_key("jornada_corrente") and self.dados.has_key("jornada_corrente_dados") :
			jornada_corrente_html = self.render_subdir('homepage','gera_jornada.html', {
			"jornada": self.dados['jornada_corrente'],
			"jornada_dados": self.dados['jornada_corrente_dados']
		})
		
		jornada_posterior_html = None
		if self.dados.has_key("jornada_posterior") and self.dados.has_key("jornada_posterior_dados") :
			jornada_posterior_html = self.render_subdir('homepage','gera_jornada.html', {
			"jornada": self.dados['jornada_posterior'],
			"jornada_dados": self.dados['jornada_posterior_dados']
		})

		top_arbitros_ica_html = self.render_subdir('homepage','gera_tops_arbitros_ica.html', {
			"top_arbitros_bons_ica": self.dados['top_arbitros_bons_ica'],
			"top_arbitros_maus_ica": self.dados['top_arbitros_maus_ica']
		})
		
		top_clubes_icc_html = self.render_subdir('homepage','gera_tops_clubes_icc.html', {
			"top_clubes_beneficiados_icc": self.dados['top_clubes_beneficiados_icc'],
			"top_clubes_prejudicados_icc": self.dados['top_clubes_prejudicados_icc']
		})
		
		top_3_grandes_arbitros_html = self.render_subdir('homepage','gera_3_grandes_arbitros.html', {
			"top_tabela_icc_3_grandes": self.dados['top_tabela_icc_3_grandes']
		})
		
		html = self.render_subdir('homepage','homepage.html', {
		
			"homepage_info":self.homepage_info,
			
			"classificacao_real_html":classificacao_real_html,
			"classificacao_virtual_html":classificacao_virtual_html,
			
			"jornada_anterior_html":jornada_anterior_html,
			"jornada_corrente_html":jornada_corrente_html,
			"jornada_posterior_html":jornada_posterior_html,
			
			"noticias_html": noticias_html,
						
			"jogos_calendario": self.dados['jogos_calendario'],
			
			"last_month":self.dados['last_month'],
			"last_year":self.dados['last_year'],
			"today_month":self.dados['today_month'],
			"today_year":self.dados['today_year'],
			"next_month":self.dados['next_month'],
			"next_year":self.dados['next_year'],
			
			"top_arbitros_ica_html":top_arbitros_ica_html,
			"top_clubes_icc_html":top_clubes_icc_html,
			"top_3_grandes_arbitros_html":top_3_grandes_arbitros_html,
				
			"jogadores_populares":self.dados['jogadores_populares'],
			"clubes_populares":self.dados['clubes_populares'],
			"jogos_populares":self.dados['jogos_populares'],
			"lances_populares":self.dados['lances_populares'],
			"arbitros_populares":self.dados['arbitros_populares'],
			
			"jogadores_recentes":self.dados['jogadores_recentes'],
			"jogos_recentes":self.dados['jogos_recentes'],
			"lances_recentes":self.dados['lances_recentes'],
			"arbitros_recentes":self.dados['arbitros_recentes'],

			"competicoes":listas.get_lista_competicoes_por_visitas(),
			"epocas":listas.get_lista_epocas(),
			"epoca":self.epoca, 
			"competicao":self.competicao,
			"data":datetime.datetime.now()
		})
	
		return html
コード例 #3
0
ファイル: home.py プロジェクト: NunoCardoso/foipenalti
	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
			})
コード例 #4
0
    def get(self):

        jogos = None
        num_resultados = self.request.get("nr")
        # critérios
        jog_realizados = self.request.get("jr")
        # 		jog_epoca = self.request.get("ep")
        jog_competicao = self.request.get("cmp")
        # 		jog_jornada_numero = self.request.get("jr")
        jog_clube1 = self.request.get("clu1")
        jog_clube2 = self.request.get("clu2")
        jog_arbitro = self.request.get("arb")
        jog_golos_clube1 = self.request.get("gol1")
        jog_golos_clube2 = self.request.get("gol2")
        jog_jogador = self.request.get("jgd")
        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 [
                    "jogo",
                    "jogador",
                    "clube_tem_jogador",
                    "jogador_joga_jogo",
                    "epoca",
                    "competicao",
                    "jornada",
                ]:
                    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'

                jogos = Jogo.all()

                # primeiro nível: 1
                if jog_realizados:
                    if jog_realizados == "ja":
                        jogos.filter("jog_data <= ", datetime.datetime.now())
                    else:
                        jogos.filter("jog_data > ", datetime.datetime.now())

                        # primeiro nível: 2
                        # if jog_epoca:
                        # 	epoca = Epoca.get_by_id(int(jog_epoca))
                        # 	jogos.filter("jog_epoca = ", epoca)

                        # segundo nível: 2x2
                if jog_competicao:
                    competicao = Competicao.get_by_id(int(jog_competicao))
                    jogos.filter("jog_competicao = ", competicao)

                    # segundo nível: 2x2
                    # if jog_jornada_numero:
                    # 	jornadas = Jornada.all().filter("jor_nome_curto = ",jog_jornada_numero).fetch(1000)
                    # 	jogos.filter("jog_jornada in ", jornadas)

                # FILTRO POR PROPRIEDADES (jogadores, golos, árbitros)
                # ou seja: estes filtros FILTRAM a GqlQuery 'jogos'
                # jog_jogador = self.request.get("jog_jogador")
                #
                if jog_clube1:
                    clube = Clube.get_by_id(int(jog_clube1))
                    jogos.filter("jog_clube1 = ", clube)

                if jog_clube2:
                    clube = Clube.get_by_id(int(jog_clube2))
                    jogos.filter("jog_clube2 = ", clube)

                if jog_arbitro:
                    arbitro = Arbitro.get_by_id(int(jog_arbitro))
                    jogos.filter("jog_arbitro = ", arbitro)

                if jog_golos_clube1:
                    jogos.filter("jog_golos_clube1 = ", int(jog_golos_clube1))

                if jog_golos_clube2:
                    jogos.filter("jog_golos_clube2 = ", int(jog_golos_clube2))

                if jog_jogador:
                    jogador = Jogador.all().filter("jgd_nome = ", jog_jogador).get()
                    if jogador:
                        jogos_list = []
                        for jjj in jogador.jgd_jogos:
                            jogos_list.append(jjj.jjj_jogo.key())
                        jogos.filter("__key__ in ", jogos_list)

                # FIM DA FILTRAGEM

                # INÍCIO DA PAGINAÇÃO

                # now, let's prepare the pages
                # 		jogos.order("-jog_numero_visitas")
                myPagedQuery = PagedQuery(jogos, int(num_resultados))
                myPagedQuery.order("-jog_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 = jogos.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": "jogo", "panel": "pesquisa", "total": results_total, "nr": num_resultados},
                "content": [],
            }

            if results_page:

                count = (page_index - 1) * int(num_resultados)

                for jogo in results_page:

                    count += 1

                    resultados["content"].append(
                        {
                            "nome": jogo.printjogo(),
                            "logo1": jogo.jog_clube1.clu_link_logo,
                            "logo2": jogo.jog_clube2.clu_link_logo,
                            "data": jogo.jog_data.strftime("%Y-%m-%d"),
                            "jornada": jogo.jog_jornada.jor_nome,
                            "jornada_id": jogo.jog_jornada.key().id(),
                            "competicao": jogo.jog_jornada.jor_competicao.cmp_nome_completo
                            + " "
                            + jogo.jog_jornada.jor_competicao.cmp_epoca.epo_nome,
                            "competicao_id": jogo.jog_jornada.jor_competicao.key().id(),
                            "id": jogo.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_jogo.html",
            {
                # 		"jog_epoca": jog_epoca,
                "jog_competicao": jog_competicao,
                # 		"jog_jornada_numero": jog_jornada_numero,
                "jog_clube1": jog_clube1,
                "jog_clube2": jog_clube2,
                "jog_arbitro": jog_arbitro,
                "jog_golos_clube1": jog_golos_clube1,
                "jog_golos_clube2": jog_golos_clube2,
                "jog_jogador": jog_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(),
                "epocas": listas.get_lista_epocas(),
                "competicoes": listas.get_lista_competicoes(),
                "arbitros": listas.get_lista_arbitros(),
                "resultados": [15, 30, 40],
            },
        )
コード例 #5
0
	def get(self):

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

		# critérios
		epoca_id = self.request.get("epo")
		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
			
			# 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 ['epoca']:
					cache = memcache.get(elem)
					if cache and cache['date'] > cacheresultados['date']:
						cache_old = True
					
			if not cacheresultados or cache_old:
			
				epocas = Epoca.all()

				# primeiro nível: 1
				if epoca_id:
					e = Epoca.get_by_id(int(epoca_id))
					if e:
						epocas.filter("__key__ = ", e.key())
		
# FIM DA FILTRAGEM
					
# INÍCIO DA PAGINAÇÃO
					
				# now, let's prepare the pages
		#		jogos.order("-jog_numero_visitas")
				myPagedQuery = PagedQuery(epocas, int(num_resultados))
				myPagedQuery.order("-epo_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 = epocas.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":"epoca",
				"panel":"pesquisa",
				"total":results_total,
				"nr":num_resultados
			}, 
			"content":[]
			}

			if results_page:
			
				count = (page_index - 1)*int(num_resultados)
			
				for epoca in results_page:
				
					count += 1
				
					resultados["content"].append({
					"nome":epoca.epo_nome,
					"id":epoca.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_epoca.html', {
			"epo_nome": epoca_id,
			"num_resultados": num_resultados, 
			
			"flash":flash_message,
			
			# search results
			"results": resultados,
			"results_total": results_total,
			"results_page_links":results_page_links,

			# memcache stuff
			"epocas": listas.get_lista_epocas(), 
			"resultados": [15, 30, 40]
		})
コード例 #6
0
	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]
		})