def renderDados(self):
		acumulador = None
		if self.acue_obj:
			acumulador = self.acue_obj.acue_content[self.nspace]
		else:
			acumulador =  classes.getAcumuladorEpoca( 
			 self.epoca, config.VERSAO_ACUMULADOR, self.nspace).acue_content[self.nspace]
		
		# agora vamos obter os objectos (clubes) que fazem parte da LIGA desta época
		#, e fazer uma hash invertida.
		liga = self.epoca.epo_competicoes.filter("cmp_tipo = ","Liga").get()

		ac = classes.getAcumuladorCompeticao(liga, config.VERSAO_ACUMULADOR, "clube")
		clus = {}		
		
		if ac:
			clubes_liga_ids = ac.acuc_content["clube"].keys()
		
			clubes = Clube.get_by_id(clubes_liga_ids)

			for clube in clubes: 
				clus[clube.key().id()] = clube
		
		# no HTML, escrever só as entradas que tem clube. 
		# se não tiver, são de clubes acessórios e não importantes
		if acumulador:
			for key, list_values in acumulador.items():
				for idx, val in enumerate(acumulador[key]):
					if clus.has_key(acumulador[key][idx]["clu"]):
						acumulador[key][idx]["clube"] = clus[acumulador[key][idx]["clu"]]
					
		return acumulador
	def renderDados(self):
		acumulador = None
		if self.acue_obj:
			acumulador = self.acue_obj.acue_content[self.nspace]
		else:
			acumulador = classes.getAcumuladorEpoca(self.epoca, config.VERSAO_ACUMULADOR, self.nspace).acue_content[self.nspace]
		
		arb_ids = []
		hash_arbitros = {}
		
		for key, list_values in acumulador.items():
			for idx, val in enumerate(acumulador[key]):
				if not acumulador[key][idx]["arb"] in arb_ids:
					arb_ids.append(acumulador[key][idx]["arb"])
	
		# converter ids em Arbitros
		arb_objs = Arbitro.get_by_id(arb_ids)
		for arb in arb_objs:
			hash_arbitros[arb.key().id()] = arb
			
		for key, list_values in acumulador.items():
			for idx, val in enumerate(acumulador[key]):
				acumulador[key][idx]["arbitro"] = hash_arbitros[acumulador[key][idx]["arb"]]

		return acumulador
	def renderDados(self):
		dados = {}
		epoca_corrente = config.EPOCA_CORRENTE		

		acumulador = classes.getAcumuladorEpoca(self.epoca,
					config.VERSAO_ACUMULADOR, "jogador")
				
		jogadores = Jogador.all().filter("jgd_clube_actual = ", self.clube).order("jgd_nome").fetch(1000)	
		
		# o pickle tinha de vir num hash, portanto, o value é a lista
		top_jogadores = acumulador.acue_content["jogador"]

		dados["jogadores"] = []
		
		#logging.info(top_jogadores.keys())

		for jogador in jogadores:
			key = jogador.key().id()
			ctj = jogador.jgd_clubes.filter("ctj_epocas = ",epoca_corrente.key()).get()
			
			data = {"jogador":jogador,
			 "numero":ctj.ctj_numero if ctj else 0,
			 "posicao":jogador.jgd_posicao,
			 "jogos_realizados":0,
			 "minutos_jogados":0,
			 "golos_marcados":0,
			 "cartoes_amarelos":0,
			 "cartoes_duplo_amarelos":0,
			 "cartoes_vermelhos":0,
			 "indisciplina":0
			}
			
			#logging.info(key)
			
			if top_jogadores.has_key(key):
				
				# vamos ver as states mas só para quando o jogador esteve a jogar neste clube
				clu_id = self.clube.key().id()
				if top_jogadores[key].has_key(clu_id):
				
					if top_jogadores[key][clu_id].has_key("jr"):
						data["jogos_realizados"] =top_jogadores[key][clu_id]["jr"]
					if top_jogadores[key][clu_id].has_key("mj"):
						data["minutos_jogados"] =top_jogadores[key][clu_id]["mj"]
					if top_jogadores[key][clu_id].has_key("gm"):
						data["golos_marcados"] =top_jogadores[key][clu_id]["gm"]
					if top_jogadores[key][clu_id].has_key("ca"):
						data["cartoes_amarelos"] =top_jogadores[key][clu_id]["ca"]
					if top_jogadores[key][clu_id].has_key("cda"):
						data["cartoes_duplo_amarelos"] =top_jogadores[key][clu_id]["cda"]
					if top_jogadores[key][clu_id].has_key("cv"):
						data["cartoes_vermelhos"] =top_jogadores[key][clu_id]["cv"]

					data["indisciplina"] = top_jogadores[key][clu_id]["ca"] + 1.5*top_jogadores[key][clu_id]["cda"] + 2*top_jogadores[key][clu_id]["cv"]
								
			dados["jogadores"].append(data)
		return dados
	def checkCacheFreshen(self):
		
		data_cache = None # data do HTML gerado em cache
		
		self.softcache_html =  memcache.get(self.cache_url, namespace=self.cache_namespace)
		if self.softcache_html:
			data_cache = self.softcache_html['date']
		else:
			self.hardcache_html = CacheHTML.all().filter("cch_url = ",self.cache_url).get()
			if self.hardcache_html:
				data_cache = self.hardcache_html.cch_date
	
		self.acumulador_icc = memcache.get("acumulador-%s-%s" % (self.epoca, config.VERSAO_ACUMULADOR),
		 namespace=self.nspace1)
		
		if not self.acumulador_icc:
			self.acumulador_icc = classes.getAcumuladorEpoca(self.epoca, config.VERSAO_ACUMULADOR, self.nspace1)

		if data_cache and self.acumulador_icc and self.acumulador_icc.acue_date > data_cache:
			self.refreshen_cache = True

		self.acumulador_ica = memcache.get("acumulador-%s-%s" % (self.epoca, config.VERSAO_ACUMULADOR),
		 namespace=self.nspace3)

		if not self.acumulador_ica:
			self.acumulador_ica = classes.getAcumuladorEpoca(self.epoca, config.VERSAO_ACUMULADOR, self.nspace3)

		if data_cache and self.acumulador_ica and self.acumulador_ica.acue_date > data_cache:
			self.refreshen_cache = True
		
		self.acumulador_tabela_icc = memcache.get("acumulador-%s-%s" % (self.epoca, config.VERSAO_ACUMULADOR),
		 namespace=self.nspace2)
		
		if not self.acumulador_tabela_icc:
			self.acumulador_tabela_icc = classes.getAcumuladorEpoca(self.epoca, config.VERSAO_ACUMULADOR, self.nspace2)

		if data_cache and self.acumulador_tabela_icc and self.acumulador_tabela_icc.acue_date > data_cache:
			self.refreshen_cache = True
	def renderDados(self):
		acumulador = None
		if self.acue_obj:
			acumulador = self.acue_obj.acue_content[self.nspace]
		else:
			acumulador = classes.getAcumuladorEpoca(self.epoca, config.VERSAO_ACUMULADOR, self.nspace).acue_content[self.nspace]

		# vamos recolher os ids de todos os jogadores
		ids = []
		for item in acumulador["mais_golos"]:
			# item = {jgd:1L, gol:1L}
			if not item["jgd"] in ids:
				ids.append(item["jgd"])
		for item in acumulador["mais_cartoes"]:
			# item = {jgd:1L, crt:{ca:, cda: cv: tot:}}
			if not item["jgd"] in ids:
				ids.append(item["jgd"])
		for item in acumulador["mais_lances"]:
			# item = {jgd:1L, crt:{ca:, cda: cv: tot:}}
			if not item["jgd"] in ids:
				ids.append(item["jgd"])
		
		# agora vamos obter os objectos, e fazer uma hash invertida.
		jogadores = Jogador.get_by_id(ids)
		jgds = {}
		for jogador in jogadores: 
			if jogador:
				jgds[jogador.key().id()] = jogador
		
		# agora vamos substituir os ids pelos objectos
		for idx, val in enumerate(acumulador["mais_golos"]):
			acumulador["mais_golos"][idx]["jogador"] = jgds[val["jgd"]]
		for idx, val in enumerate(acumulador["mais_cartoes"]):
			acumulador["mais_cartoes"][idx]["jogador"] = jgds[val["jgd"]]
		for idx, val in enumerate(acumulador["mais_lances"]):
			acumulador["mais_lances"][idx]["jogador"] = jgds[val["jgd"]]
	
		return acumulador
	def renderDados(self):

		competicoes = []
		melhores_marcadores = []
		mais_indisciplinados = []
					
		top_list_melhores_marcadores = 5
		top_list_mais_indisciplinados = 5
		
		# top jogadores: 
		acumulador = classes.getAcumuladorEpoca(self.epoca, 
			config.VERSAO_ACUMULADOR, "top_jogadores")
		
		top_jogadores = acumulador.acue_content["top_jogadores"]

		howmany = len(top_jogadores["mais_golos"]) if len(top_jogadores["mais_golos"]) <= top_list_melhores_marcadores else top_list_melhores_marcadores
		for linha in top_jogadores["mais_golos"][:howmany]:
			melhores_marcadores.append(linha)

		howmany = len(top_jogadores["mais_cartoes"]) if len(top_jogadores["mais_cartoes"]) <= top_list_mais_indisciplinados else top_list_mais_indisciplinados
		for linha in top_jogadores["mais_cartoes"][:howmany]:
			mais_indisciplinados.append(linha)

		# vamos recolher os ids de todos os jogadores
		ids = []
		for item in melhores_marcadores:
			# item = {jgd:1L, gol:1L}
			if not item["jgd"] in ids:
				ids.append(item["jgd"])
		for item in mais_indisciplinados:
			# item = {jgd:1L, crt:{ca:, cda: cv: tot:}}
			if not item["jgd"] in ids:
				ids.append(item["jgd"])
		
		# agora vamos obter os objectos, e fazer uma hash invertida.
		jogadores = Jogador.get_by_id(ids)
		jgds = {}
		for jogador in jogadores: 
			jgds[jogador.key().id()] = jogador
		
		# agora vamos substituir os ids pelos objectos
		for idx, val in enumerate(melhores_marcadores):
			melhores_marcadores[idx]["jogador"] = jgds[val["jgd"]]
		for idx, val in enumerate(mais_indisciplinados):
			mais_indisciplinados[idx]["jogador"] = jgds[val["jgd"]]
		
		for competicao in self.epoca.epo_competicoes:

			acumulador = classes.getAcumuladorCompeticao(competicao, 
				config.VERSAO_ACUMULADOR, "classificacao_real")
			
			classificacao_total = None
				
			if acumulador and acumulador.acuc_content.has_key("classificacao_real"):
				classificacao_total = acumulador.acuc_content["classificacao_real"]["total"]
			# vamos tirar a linha que interessa...
			
			competicoes.append({
				"competicao":competicao, 
				"dados":classificacao_total[0] if classificacao_total else None,
				"clube":Clube.get_by_id(classificacao_total[0]["clu"]) if classificacao_total else None
			})
					
		dados = {"competicoes":competicoes,
					"melhores_marcadores":melhores_marcadores,
					"mais_indisciplinados":mais_indisciplinados}

		return dados
	def renderDados(self):
		dados = {}
		epoca_corrente = config.EPOCA_CORRENTE		

		acumulador = classes.getAcumuladorEpoca(self.epoca, config.VERSAO_ACUMULADOR, "jogador")
		logging.info(acumulador)
		top_jogador = acumulador.acue_content["jogador"][self.jogador.key().id()]
		
		arbitros = {}
		
		for jogador_key, jogador_values in top_jogador.items():
		
			arbitros = {}
			arb_ids = []
			hash_arbitros = {}
		
			for arbitro_id, amarelo in jogador_values["a_a"].items():
				if not arbitros.has_key(arbitro_id):
					arbitros[arbitro_id] = {
			 		"cartoes_amarelos":0,
			 		"cartoes_duplo_amarelos":0,
			 		"cartoes_vermelhos":0,
			 		"indisciplina":0
					}
				arb_ids.append(arbitro_id)
				arbitros[arbitro_id]["cartoes_amarelos"] += amarelo
				arbitros[arbitro_id]["indisciplina"] += amarelo

			for arbitro_id, damarelo in jogador_values["a_da"].items():
				if not arbitros.has_key(arbitro_id):
					arbitros[arbitro_id] = {
			 		"cartoes_amarelos":0,
			 		"cartoes_duplo_amarelos":0,
			 		"cartoes_vermelhos":0,
			 		"indisciplina":0
				}
				arb_ids.append(arbitro_id)
				arbitros[arbitro_id]["cartoes_duplo_amarelos"] += damarelo
				arbitros[arbitro_id]["indisciplina"] += 1.5 * damarelo

			for arbitro_id, vermelho in jogador_values["a_v"].items():
				if not arbitros.has_key(arbitro_id):
					arbitros[arbitro_id] = {
			 		"cartoes_amarelos":0,
			 		"cartoes_duplo_amarelos":0,
			 		"cartoes_vermelhos":0,
			 		"indisciplina":0
					}
				arb_ids.append(arbitro_id)
				arbitros[arbitro_id]["cartoes_vermelhos"] += vermelho
				arbitros[arbitro_id]["indisciplina"] += 2 * vermelho

		# converter ids em Arbitros
		arb_objs = Arbitro.get_by_id(arb_ids)
		for arb in arb_objs:
			hash_arbitros[arb.key().id()] = arb
			
		# adicionar o objecto
		for arb_id, arb_value in arbitros.items():
			arbitros[arb_id]["arbitro"] = hash_arbitros[arb_id]

		dados = arbitros.values()
		return dados
	def renderDados(self):
		dados = {}

		acumulador = classes.getAcumuladorEpoca(self.epoca, config.VERSAO_ACUMULADOR, "arbitro")
						
		top_arbitro = acumulador.acue_content["arbitro"][self.arbitro.key().id()]
		
		ids = []
		jogadores = {}
		
		for jogador_id, amarelo in top_arbitro["j_a"].items():
			if not jogador_id in ids:
			 	ids.append(jogador_id)
				jogadores[jogador_id] = {
					"jgd":jogador_id,
			 		"cartoes_amarelos":0,
			 		"cartoes_duplo_amarelos":0,
			 		"cartoes_vermelhos":0,
			 		"indisciplina":0
				}
				jogadores[jogador_id]["cartoes_amarelos"] += amarelo
				jogadores[jogador_id]["indisciplina"] += amarelo

		for jogador_id, damarelo in top_arbitro["j_da"].items():
				if not jogador_id in ids:
				 	ids.append(jogador_id)
					jogadores[jogador_id] = {
					"jgd":jogador_id,
			 		"cartoes_amarelos":0,
			 		"cartoes_duplo_amarelos":0,
			 		"cartoes_vermelhos":0,
			 		"indisciplina":0
				}
				jogadores[jogador_id]["cartoes_duplo_amarelos"] += damarelo
				jogadores[jogador_id]["indisciplina"] += 1.5 * damarelo

		for jogador_id, vermelho in top_arbitro["j_v"].items():
				if not jogador_id in ids:
				 	ids.append(jogador_id)
					jogadores[jogador_id] = {
					"jgd":jogador_id,
			 		"cartoes_amarelos":0,
			 		"cartoes_duplo_amarelos":0,
			 		"cartoes_vermelhos":0,
			 		"indisciplina":0
				}
				jogadores[jogador_id]["cartoes_vermelhos"] += vermelho
				jogadores[jogador_id]["indisciplina"] += 2 * vermelho


		# agora vamos obter os objectos, e fazer uma hash invertida.
		lista_jogadores = Jogador.get_by_id(ids)
		jgds = {}
		for jogador in lista_jogadores: 
			jgds[jogador.key().id()] = jogador
		
		# agora vamos substituir os ids pelos objectos
		for idx, val in jogadores.items():
			jogadores[idx]["jogador"] = jgds[jogadores[idx]["jgd"]]

		dados = jogadores.values()
		return dados
예제 #9
0
 def load_grafico_ica_for_epoca(self, epoca):
     acue = classes.getAcumuladorEpoca(epoca, config.VERSAO_ACUMULADOR, "ica")
     if acue:
         self.grafico = acue.acue_content["ica"]
    def renderDados(self):

        dados = {}
        competicoes = []
        melhores_marcadores = []
        mais_indisciplinados = []

        top_list_melhores_marcadores = 5
        top_list_mais_indisciplinados = 5

        # primeiro, vamos saber quais são os jogadores deste clube
        # e fazer uma hash
        jgd_ids = []
        hash_jogadores = {}
        clu_id = self.clube.key().id()
        jogadores = Jogador.all().filter("jgd_clube_actual = ", self.clube)

        for j in jogadores:
            jgd_id = j.key().id()
            jgd_ids.append(jgd_id)
            hash_jogadores[jgd_id] = j

        acumulador = classes.getAcumuladorEpoca(self.epoca, config.VERSAO_ACUMULADOR, "top_jogadores")

        if acumulador:
            top_jogadores = acumulador.acue_content["top_jogadores"]

            so_far = 0
            for linha in top_jogadores["mais_golos"]:
                if linha["jgd"] in jgd_ids and so_far < top_list_melhores_marcadores:
                    # adiciona o obj a partir do id
                    linha["jogador"] = hash_jogadores[linha["jgd"]]
                    melhores_marcadores.append(linha)
                    so_far += 1

            so_far = 0
            for linha in top_jogadores["mais_cartoes"]:
                if linha["jgd"] in jgd_ids and so_far < top_list_mais_indisciplinados:
                    # adiciona o obj a partir do id
                    linha["jogador"] = hash_jogadores[linha["jgd"]]
                    mais_indisciplinados.append(linha)
                    so_far += 1

                    # total para as competições
            total_competicoes = {"jr": 0, "vr": 0, "er": 0, "dr": 0, "gmr": 0, "gsr": 0, "pr": 0}

            for competicao in self.epoca.epo_competicoes:

                acuc = classes.getAcumuladorCompeticao(competicao, config.VERSAO_ACUMULADOR, "classificacao_real")

                if acuc:
                    classificacao_total = acuc.acuc_content["classificacao_real"]["total"]

                    for linha in classificacao_total:
                        if linha["clu"] == clu_id:
                            competicoes.append({"competicao": competicao, "stats": linha})

                            total_competicoes["jr"] += linha["jr"]
                            total_competicoes["vr"] += linha["vr"]
                            total_competicoes["er"] += linha["er"]
                            total_competicoes["dr"] += linha["dr"]
                            total_competicoes["gmr"] += linha["gmr"]
                            total_competicoes["gsr"] += linha["gsr"]

            dados = {
                "competicoes": competicoes,
                "total_competicoes": total_competicoes,
                "melhores_marcadores": melhores_marcadores,
                "mais_indisciplinados": mais_indisciplinados,
            }

        return dados
예제 #11
0
	def load_tabela_icc_for_epoca(self, epoca):
		acue = classes.getAcumuladorEpoca(epoca, config.VERSAO_ACUMULADOR,"tabela_icc")
		if acue:
			self.tabela = acue.acue_content["tabela_icc"]
예제 #12
0
def gera(epoca, acue_basico, 
				acue_tabela_icc, acue_icc, acue_top_arbitros,
				acue_top_jogos, acue_top_jogadores, acue_top_clubes):

	acuc = AcumuladorCompeticao.all().filter("acuc_epoca = ", epoca).filter("acuc_versao = ", config.VERSAO_ACUMULADOR).fetch(1000)

	stats = {}
	
	if acue_basico == "on":
		logging.info("acue_basico está on, vou gerar arbitro, jogador, clube e jogo a partir das estatísticas")

		stats = {
			"arbitro":{},
			"jogo": {},
			"jogador":{},
			"clube":{},
			"top_arbitros":{},
			"top_jogos": {},
			"top_jogadores":{},
			"top_clubes":{}
		}	
		for ac in acuc:
		
			# depicle it
			content = ac.acuc_content
		
			logging.info(u"acumulador_epoca: a ler dados do acumulador_competicao %s " % ac.acuc_competicao.__str__())

			if (ac.acuc_namespace == "arbitro"):
				doit(content["arbitro"], stats["arbitro"], "arbitro")
			if (ac.acuc_namespace == "jogador"):
				doit(content["jogador"], stats["jogador"], "jogador")
			if (ac.acuc_namespace == "jogo"):
				doit(content["jogo"], stats["jogo"], "jogo")		
			if (ac.acuc_namespace == "clube"):
				doit(content["clube"], stats["clube"], "clube")
			

	else:
		logging.info("acue_basico está off, vou gerar arbitro, jogador, clube e jogo a partir do acumulador")

		acumuladorepocas = AcumuladorEpoca.all().filter("acue_epoca = ", epoca).filter("acue_versao = ", config.VERSAO_ACUMULADOR)
		
		stats_total = {}
		stats = {}
		
		for acu in acumuladorepocas:
		
			if acu.acue_namespace == "arbitro":
				stats["arbitro"] = acu.acue_content["arbitro"]
			if acu.acue_namespace == "clube":
				stats["clube"] = acu.acue_content["clube"]
			if acu.acue_namespace == "jogador":
				stats["jogador"] = acu.acue_content["jogador"]
			if acu.acue_namespace == "jogo":
				stats["jogo"] = acu.acue_content["jogo"]
				
##############
### TABELA ICC ###
##############

	liga = epoca.epo_competicoes.filter("cmp_tipo = ","Liga").get()

	ac = classes.getAcumuladorCompeticao(liga, config.VERSAO_ACUMULADOR, "clube")
	if ac:
		clubes_liga_ids = ac.acuc_content["clube"].keys()
	else:
		ac = classes.getAcumuladorEpoca(epoca, config.VERSAO_ACUMULADOR, "clube")
		clubes_liga_ids = ac.acue_content["clube"].keys()
		
	clubes = Clube.get_by_id(clubes_liga_ids)
	clubes = sorted(clubes, cmp=lambda x,y: cmp(x.clu_numero_visitas, y.clu_numero_visitas), reverse=True)
	
	if acue_tabela_icc == "on":
		# vamos assumir que sabemos que queremos uma tabela icc / Liga
		stats["tabela_icc"] = TabelaICC.gera_nova_tabela_icc(stats, clubes)

###########
### ICC ###
###########
	
	if acue_icc == "on":
		# vamos assumir que sabemos que queremos uma tabela icc / Liga
		arbitros = Arbitro.all().fetch(1000)
		stats["icc"] = GraficoICC.gera_novo_grafico_icc(stats, {}, clubes)
		stats["ica"] = GraficoICA.gera_novo_grafico_ica(stats, {}, arbitros)

############
### TOPS ###
############

# os tops podem ser aglotinações de hashes das competições, não é preciso regerar
	
	
	for ac in acuc:
		
		if acue_top_clubes == "on" and ac.acuc_namespace == "top_clubes":
				doit(ac.acuc_content["top_clubes"], stats["top_clubes"], "top_clubes")
		if acue_top_arbitros == "on" and ac.acuc_namespace == "top_arbitros":
				doit(ac.acuc_content["top_arbitros"], stats["top_arbitros"], "top_arbitros")
		if acue_top_jogadores == "on" and ac.acuc_namespace == "top_jogadores":
				doit(ac.acuc_content["top_jogadores"], stats["top_jogadores"], "top_jogadores")
		if acue_top_jogos == "on" and ac.acuc_namespace == "top_jogos":
				doit(ac.acuc_content["top_jogos"], stats["top_jogos"], "top_jogos")

	return stats
	def renderDados(self):
		dados = {}
		epoca_corrente = config.EPOCA_CORRENTE		

		acumulador = classes.getAcumuladorEpoca(self.epoca, 
			config.VERSAO_ACUMULADOR, "clube")
		
		if acumulador and acumulador.acue_content["clube"].has_key(self.clube.key().id()):
			top_clube = acumulador.acue_content["clube"][self.clube.key().id()]
		
			arbitros = {}
			arb_ids = []
			hash_arbitros = {}
			
			#logging.info(top_jogadores.keys())
			for arbitro_id, jogos in top_clube["a_j"].items():
				if not arbitros.has_key(arbitro_id):
					arbitros[arbitro_id] = {
					"jogos_realizados":0,
					"icc":0,
					"cartoes_amarelos":0,
					"cartoes_duplo_amarelos":0,
					"cartoes_vermelhos":0,
					"indisciplina":0
				}
				arbitros[arbitro_id]["jogos_realizados"] += jogos
				arb_ids.append(arbitro_id)

			for arbitro_id, icc  in top_clube["a_i"].items():
				if not arbitros.has_key(arbitro_id):
					arbitros[arbitro_id] = {
					"jogos_realizados":0,
					"icc":0,
					"cartoes_amarelos":0,
					"cartoes_duplo_amarelos":0,
					"cartoes_vermelhos":0,
					"indisciplina":0
				}
				arbitros[arbitro_id]["icc"] += icc
				arb_ids.append(arbitro_id)
			
			for arbitro_id, amarelo in top_clube["a_a"].items():
				if not arbitros.has_key(arbitro_id):
					arbitros[arbitro_id] = {
					"jogos_realizados":0,
					"icc":0,
					"cartoes_amarelos":0,
					"cartoes_duplo_amarelos":0,
					"cartoes_vermelhos":0,
					"indisciplina":0
				}
				arbitros[arbitro_id]["cartoes_amarelos"] += amarelo
				arbitros[arbitro_id]["indisciplina"] += amarelo
				arb_ids.append(arbitro_id)
			
			for arbitro_id, damarelo in top_clube["a_da"].items():
				if not arbitros.has_key(arbitro_id):
					arbitros[arbitro_id] = {
			 		"jogos_realizados":0,
			 		"icc":0,
			 		"cartoes_amarelos":0,
			 		"cartoes_duplo_amarelos":0,
			 		"cartoes_vermelhos":0,
			 		"indisciplina":0
				}
				arbitros[arbitro_id]["cartoes_duplo_amarelos"] += damarelo
				arbitros[arbitro_id]["indisciplina"] += 1.5 * damarelo
				arb_ids.append(arbitro_id)

			for arbitro_id, vermelho in top_clube["a_v"].items():
				if not arbitros.has_key(arbitro_id):
					arbitros[arbitro_id] = {
			 		"jogos_realizados":0,
			 		"icc":0,
			 		"cartoes_amarelos":0,
			 		"cartoes_duplo_amarelos":0,
			 		"cartoes_vermelhos":0,
			 		"indisciplina":0
				}
				arbitros[arbitro_id]["cartoes_vermelhos"] += vermelho
				arbitros[arbitro_id]["indisciplina"] += 2 * vermelho
				arb_ids.append(arbitro_id)

			# converter ids em Arbitros
			arb_objs = Arbitro.get_by_id(arb_ids)
			for arb in arb_objs:
				hash_arbitros[arb.key().id()] = arb
			
			# adicionar o objecto
			for arb_id, arb_value in arbitros.items():
				arbitros[arb_id]["arbitro"] = hash_arbitros[arb_id]

			dados = arbitros.values()

		return dados