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 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
def get(self, objname): sid = self.get_sid_from_cookie() flash_message = None if sid: flash_message = memcache.get(str(sid), namespace="flash") if flash_message: memcache.delete(str(sid), namespace="flash") # gera a lista de entradas para este obj_name # objs, objname, filter_field, filter_needle, url, page_index, limit initial_objs = None fields = None tab = self.request.get("tab") if objname == "clube": initial_objs = Clube.all() fields = Clube.fields elif objname == "jogador": initial_objs = Jogador.all() fields = Jogador.fields elif objname == "epoca": initial_objs = Epoca.all() fields = Epoca.fields elif objname == "competicao": initial_objs = Competicao.all() fields = Competicao.fields elif objname == "jogo": initial_objs = Jogo.all() fields = Jogo.fields elif objname == "arbitro": initial_objs = Arbitro.all() fields = Arbitro.fields elif objname == "comentador": initial_objs = Comentador.all() fields = Comentador.fields elif objname == "fonte": initial_objs = Fonte.all() fields = Fonte.fields elif objname == "jornada": initial_objs = Jornada.all() fields = Jornada.fields elif objname == "lance": initial_objs = Lance.all() fields = Lance.fields elif objname == "clube_tem_jogador": initial_objs = ClubeTemJogador.all() fields = ClubeTemJogador.fields elif objname == "clube_joga_competicao": initial_objs = ClubeJogaCompeticao.all() fields = ClubeJogaCompeticao.fields elif objname == "jogador_joga_jogo": initial_objs = JogadorJogaJogo.all() fields = JogadorJogaJogo.fields elif objname == "comentador_comenta_lance": initial_objs = ComentadorComentaLance.all() fields = ComentadorComentaLance.fields elif objname == "jogador_em_lance": initial_objs = JogadorEmLance.all() fields = JogadorEmLance.fields elif objname == "acumulador_jornada": initial_objs = AcumuladorJornada.all() fields = AcumuladorJornada.fields elif objname == "acumulador_competicao": initial_objs = AcumuladorCompeticao.all() fields = AcumuladorCompeticao.fields elif objname == "acumulador_epoca": initial_objs = AcumuladorEpoca.all() fields = AcumuladorEpoca.fields lista = List().gera_lista_vazia({ "objs":initial_objs, "objname":objname, "filter_field":None, "filter_needle":None, "url":self.request.url, "referrer":objname, "flash":None, "fields":fields }) # lista = List().gera_lista({ # "objs":initial_objs, # "objname":objname, # "filter_field":None, # "filter_needle":None, # "url":self.request.url, # "referrer":objname, # "page_index":1, # "limit":15, # "flash":None}) ############# ### EPOCA ### ############# if objname == "epoca": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ################## ### COMPETICAO ### ################## elif objname == "competicao": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True, 'epocas':listas.get_lista_epocas() }) new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { 'objname': objname, 'fields': fields, 'new_multiple':True, 'howmany':10, 'epocas':listas.get_lista_epocas() }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ############### ### JORNADA ### ############### elif objname == "jornada": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True, 'competicoes':listas.get_lista_competicoes() }) new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { 'objname': objname, 'fields': fields, 'new_multiple':True, 'howmany':10, 'competicoes':listas.get_lista_competicoes() }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ############ ### JOGO ### ############ elif objname == "jogo": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True, 'clubes':listas.get_lista_clubes(),# para select com clubes, 'arbitros':listas.get_lista_arbitros(), # para select com árbitros, 'tacticas':listas.get_lista_tacticas() }) new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { 'objname': objname, 'fields': fields, 'new_multiple':True, 'howmany':10, 'clubes':listas.get_lista_clubes(),# para select com clubes, 'arbitros':listas.get_lista_arbitros(), # para select com árbitros, 'tacticas':listas.get_lista_tacticas() }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ############# ### LANCE ### ############# elif objname == "lance": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True, 'tipos_lances':listas.get_lista_tipos_lances(), 'tipos_jels':listas.get_lista_tipos_jels(), 'comentadores':listas.get_lista_comentadores() }) new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { 'objname': objname, 'fields': fields, 'new_multiple':True, 'howmany':10, 'tipos_lances':listas.get_lista_tipos_lances(), 'tipos_jels':listas.get_lista_tipos_jels(), 'comentadores':listas.get_lista_comentadores() }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ############# ### CLUBE ### ############# elif objname == "clube": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ############### ### JOGADOR ### ############### elif objname == "jogador": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True, 'posicoes': listas.get_lista_posicoes(), 'clubes': listas.get_lista_clubes(), 'epocas':listas.get_lista_epocas() }) # new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { # 'objname': objname, # 'fields': fields, # 'new_multiple':True, # 'howmany':10, # 'posicoes': listas.get_lista_posicoes(), # 'clubes': listas.get_lista_clubes(), # 'epocas':listas.get_lista_epocas() # }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, # 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ############### ### ARBITRO ### ############### elif objname == "arbitro": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) # new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { # 'objname': objname, # 'fields': fields, # 'new_multiple':True, # 'howmany':10 # }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ################## ### COMENTADOR ### ################## elif objname == "comentador": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ############# ### FONTE ### ############# elif objname == "fonte": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ######################### ### CLUBE_TEM_JOGADOR ### ######################### elif objname == "clube_tem_jogador": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { 'objname': objname, 'fields': fields, 'new_multiple':True, 'howmany':10 }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ############################# ### CLUBE_JOGA_COMPETICAO ### ############################# elif objname == "clube_joga_competicao": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { 'objname': objname, 'fields': fields, 'new_multiple':True, 'howmany':10 }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ######################### ### JOGADOR_JOGA_JOGO ### ######################### elif objname == "jogador_joga_jogo": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { 'objname': objname, 'fields': fields, 'new_multiple':True, 'howmany':10 }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ################################ ### COMENTADOR_COMENTA_LANCE ### ################################ elif objname == "comentador_comenta_lance": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { 'objname': objname, 'fields': fields, 'new_multiple':True, 'howmany':10 }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ######################## ### JOGADOR_EM_LANCE ### ######################## elif objname == "jogador_em_lance": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { 'objname': objname, 'fields': fields, 'new_multiple':True, 'howmany':10 }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ########################## ### ACUMULADOR JORNADA ### ########################## elif objname == "acumulador_jornada": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) new_multiple = self.render_subdir("admin", 'obj_%s_multiple.html' % objname, { 'objname': objname, 'fields': fields, 'new_multiple':True, 'howmany':10 }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'new_multiple':new_multiple, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ########################## ### ACUMULADOR COMPETICAO ### ########################## elif objname == "acumulador_competicao": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab }) ########################## ### ACUMULADOR EPOCA ### ########################## elif objname == "acumulador_epoca": ## TAB renders new_single = self.render_subdir("admin", 'obj_%s.html' % objname, { 'objname': objname, 'fields': fields, 'new_single':True }) ## HOME render self.render_subdir_to_output("admin", 'home_'+objname+'.html', { 'new_single':new_single, 'objname': objname, 'flash': flash_message, 'list': lista, 'tab':tab })
def 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], }, )
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] })
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] })