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 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 }) })
def parse(self, results): output = {} logging.info("Tenho resultados MaisFutebol em hash, a converter para FoiPenalti") clube1 = Clube.all().filter("clu_nome = ", self.clubes_hash[results["clube1"]]).get() if not clube1: message = u"Não sei que clube é: %s " % results["clube1"] logging.error(message) return self.response.out.write(simplejson.dumps({'status':'Erro', 'message':message})) clube2 = Clube.all().filter("clu_nome = ", self.clubes_hash[results["clube2"]]).get() if not clube2: message = u"Não sei que clube é: %s " % results["clube2"] logging.error(message) return self.response.out.write(simplejson.dumps({'status':'Erro', 'message':message})) logging.info("Clubes detectados") arbitro = None if results.has_key("arbitro"): arbitros = listas.get_lista_arbitros() for arb in arbitros: if arb.arb_nome == results["arbitro"]: arbitro = arb logging.info('Árbitro detectado') if not arbitro: logging.info('Árbitro NÃO detectado') else: output["arbitro"] = arbitro.key().id() if results.has_key("resultado_clube1"): output["resultado_clube1"] = results["resultado_clube1"] if results.has_key("resultado_clube2"): output["resultado_clube2"] = results["resultado_clube2"] logging.info("Resultados detectados") jog_clube1 = Jogador.all().filter("jgd_clube_actual = ", clube1) jog_clube2 = Jogador.all().filter("jgd_clube_actual = ", clube2) remote_jogadores_nome1 = {} remote_jogadores_nome2 = {} local_jogadores_clube1 = {} local_jogadores_clube2 = {} logging.info("A obter jogadores do %s na DB" % results["clube1"]) for j in jog_clube1: if j.jgd_numero != None and j.jgd_numero > 0: local_jogadores_clube1[j.jgd_numero] = j else: logging.error("Jogador %s do %s não tem número, corrige isso!" % (j, results["clube1"])) logging.info("A obter jogadores do %s na DB" % results["clube2"]) for j in jog_clube2: if j.jgd_numero != None and j.jgd_numero > 0: local_jogadores_clube2[j.jgd_numero] = j else: logging.error("Jogador %s do %s não tem número, corrige isso!" % (j, results["clube2"])) logging.info('Índices de jogadores preenchidos.') if results.has_key("tacticas_clube1"): output["tacticas_clube1"] = re.sub("x","-",results["tacticas_clube1"]) if results.has_key("tacticas_clube2"): output["tacticas_clube2"] = re.sub("x","-",results["tacticas_clube2"]) logging.info('Tácticas preenchidas.') # hash now. Use an array so we know the final order output["jogadores_clube1"] = {} output["jogadores_clube2"] = {} jogadores_clube1_order = [] jogadores_clube2_order = [] logging.info("A analisar titulares do %s" % results["clube1"]) # titulares: actualizar índice nome-número remoto, adicionar key a main hash for remote_jogador in results["jogadores_titulares_clube1"]: remote_jogadores_nome1[remote_jogador["nome"]] = remote_jogador["numero"] if local_jogadores_clube1.has_key(remote_jogador["numero"]): local_jogador = local_jogadores_clube1[remote_jogador["numero"]] output["jogadores_clube1"][local_jogador.key().id()] = {} jogadores_clube1_order.append(local_jogador.key().id()) else: logging.error("Jogador MaisFutebol %s do %s com número %s não consta no FoiPenalti, corrige isso!" % (remote_jogador["nome"], results["clube1"], remote_jogador["numero"]) ) logging.info("A analisar titulares do %s" % results["clube2"]) for remote_jogador in results["jogadores_titulares_clube2"]: remote_jogadores_nome2[remote_jogador["nome"]] = remote_jogador["numero"] if local_jogadores_clube2.has_key(remote_jogador["numero"]): local_jogador = local_jogadores_clube2[remote_jogador["numero"]] output["jogadores_clube2"][local_jogador.key().id()] = {} jogadores_clube2_order.append(local_jogador.key().id()) else: logging.error("Jogador MaisFutebol %s do %s com número %s não consta no FoiPenalti, corrige isso!" % (remote_jogador["nome"], results["clube2"], remote_jogador["numero"]) ) # suplentes: apenas actualizar índice nome-número remoto logging.info("A analisar suplentes do %s" % results["clube1"]) for remote_jogador in results["jogadores_suplentes_clube1"]: remote_jogadores_nome1[remote_jogador["nome"]] = remote_jogador["numero"] logging.info("A analisar suplentes do %s" % results["clube2"]) for remote_jogador in results["jogadores_suplentes_clube2"]: remote_jogadores_nome2[remote_jogador["nome"]] = remote_jogador["numero"] # substituições: usar para recuparar mais 3 jogadores e adicionar a main-hash, alterar minutos de substituição logging.info("A analisar substituições do %s" % results["clube1"]) for remote_substituicao in results["substituicoes_clube1"]: remote_jogador_saida_nome = remote_substituicao["jogador_saida"] remote_jogador_entrada_nome = remote_substituicao["jogador_entrada"] remote_jogador_minuto = remote_substituicao["minuto"] if local_jogadores_clube1.has_key(remote_jogadores_nome1[remote_jogador_saida_nome]): local_jogador_saida = local_jogadores_clube1[remote_jogadores_nome1[remote_jogador_saida_nome]] output["jogadores_clube1"][local_jogador_saida.key().id()]["substituicao_saida"] = remote_jogador_minuto else: logging.error("Jogador MaisFutebol %s do %s, substituído ao minuto %s, não consta no FoiPenalti, corrige isso!" % (remote_jogador_saida_nome, results["clube1"], remote_jogador_minuto) ) if local_jogadores_clube1.has_key(remote_jogadores_nome1[remote_jogador_entrada_nome]): local_jogador_entrada = local_jogadores_clube1[remote_jogadores_nome1[remote_jogador_entrada_nome]] output["jogadores_clube1"][local_jogador_entrada.key().id()] = {"substituicao_entrada":remote_jogador_minuto} jogadores_clube1_order.append(local_jogador_entrada.key().id()) else: logging.error("Jogador MaisFutebol %s do %s, que entrou ao minuto %s, não consta no FoiPenalti, corrige isso!" % (remote_jogador_entrada_nome, results["clube1"], remote_jogador_minuto) ) logging.info("A analisar substituições do %s" % results["clube2"]) for remote_substituicao in results["substituicoes_clube2"]: remote_jogador_saida_nome = remote_substituicao["jogador_saida"] remote_jogador_entrada_nome = remote_substituicao["jogador_entrada"] remote_jogador_minuto = remote_substituicao["minuto"] if local_jogadores_clube2.has_key(remote_jogadores_nome2[remote_jogador_saida_nome]): local_jogador_saida = local_jogadores_clube2[remote_jogadores_nome2[remote_jogador_saida_nome]] output["jogadores_clube2"][local_jogador_saida.key().id()]["substituicao_saida"] = remote_jogador_minuto else: logging.error("Jogador MaisFutebol %s do %s, substituído ao minuto %s, não consta no FoiPenalti, corrige isso!" % (remote_jogador_saida_nome, results["clube2"], remote_jogador_minuto) ) if local_jogadores_clube2.has_key(remote_jogadores_nome2[remote_jogador_entrada_nome]): local_jogador_entrada = local_jogadores_clube2[remote_jogadores_nome2[remote_jogador_entrada_nome]] output["jogadores_clube2"][local_jogador_entrada.key().id()] = {"substituicao_entrada":remote_jogador_minuto} jogadores_clube2_order.append(local_jogador_entrada.key().id()) else: logging.error("Jogador MaisFutebol %s do %s, que entrou ao minuto %s, não consta no FoiPenalti, corrige isso!" % (remote_jogador_entrada_nome, results["clube2"], remote_jogador_minuto) ) # CARTOES logging.info("A analisar cartões do %s" % results["clube1"]) for remote_cartoes in results["cartoes_clube1"]: remote_cartao_minuto = remote_cartoes["minuto"] remote_cartao_tipo = remote_cartoes["cartao"] remote_cartao_jogador = remote_cartoes["jogador"] if local_jogadores_clube1.has_key(remote_jogadores_nome1[remote_cartao_jogador]): local_jogador = local_jogadores_clube1[remote_jogadores_nome1[remote_cartao_jogador]] output["jogadores_clube1"][local_jogador.key().id()][remote_cartao_tipo] = remote_cartao_minuto else: logging.error("Jogador MaisFutebol %s do %s, que viu cartão ao minuto %s, não consta no FoiPenalti, corrige isso!" % (remote_cartao_jogador, results["clube1"], remote_cartao_minuto) ) for remote_cartoes in results["cartoes_clube2"]: remote_cartao_minuto = remote_cartoes["minuto"] remote_cartao_tipo = remote_cartoes["cartao"] remote_cartao_jogador = remote_cartoes["jogador"] if local_jogadores_clube2.has_key(remote_jogadores_nome2[remote_cartao_jogador]): local_jogador = local_jogadores_clube2[remote_jogadores_nome2[remote_cartao_jogador]] output["jogadores_clube2"][local_jogador.key().id()][remote_cartao_tipo] = remote_cartao_minuto else: logging.error("Jogador MaisFutebol %s do %s, que viu cartão ao minuto %s, não consta no FoiPenalti, corrige isso!" % (remote_cartao_jogador, results["clube2"], remote_cartao_minuto) ) # GOLOS logging.info("A analisar golos dos jogadores") for remote_golos in results["golos"]: remote_golo_minuto = remote_golos["minuto"] remote_golo_tipo = remote_golos["tipo"] remote_golo_jogador = remote_golos["jogador"] added = False if remote_jogadores_nome1.has_key(remote_golo_jogador) and local_jogadores_clube1.has_key(remote_jogadores_nome1[remote_golo_jogador]): local_jogador = local_jogadores_clube1[remote_jogadores_nome1[remote_golo_jogador]] if not output["jogadores_clube1"].has_key(local_jogador.key().id()): output["jogadores_clube1"][local_jogador.key().id()] = {} if not output["jogadores_clube1"][local_jogador.key().id()].has_key("golos"): output["jogadores_clube1"][local_jogador.key().id()]["golos"] = [] output["jogadores_clube1"][local_jogador.key().id()]["golos"].append({ "minuto":remote_golo_minuto, "tipo":remote_golo_tipo }) added = True if remote_jogadores_nome2.has_key(remote_golo_jogador) and local_jogadores_clube2.has_key(remote_jogadores_nome2[remote_golo_jogador]): local_jogador = local_jogadores_clube2[remote_jogadores_nome2[remote_golo_jogador]] if not output["jogadores_clube2"].has_key(local_jogador.key().id()): output["jogadores_clube2"][local_jogador.key().id()] = {} if not output["jogadores_clube2"][local_jogador.key().id()].has_key("golos"): output["jogadores_clube2"][local_jogador.key().id()]["golos"] = [] output["jogadores_clube2"][local_jogador.key().id()]["golos"].append({ "minuto":remote_golo_minuto, "tipo":remote_golo_tipo }) added = True if not added: logging.error("Jogador MaisFutebol %s, que marcou golo ao minuto %s, não consta no FoiPenalti, corrige isso!" % (remote_golo_jogador, remote_golo_minuto) ) output_jogadores_1 = [] output_jogadores_2 = [] for idx, val in enumerate(jogadores_clube1_order): output_jogadores_1.append({"id":val, "info":output["jogadores_clube1"][val]}) for idx, val in enumerate(jogadores_clube2_order): output_jogadores_2.append({"id":val, "info":output["jogadores_clube2"][val]}) output["jogadores_clube1"] = output_jogadores_1 output["jogadores_clube2"] = output_jogadores_2 return self.response.out.write(simplejson.dumps({"status":"OK", "message":output}))
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] })
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 })