def crearTabla(letra): session = Session() paises = session.query(Pais).filter_by(grupo=letra) info_paises = [] for pais in paises: foto = "../home/luis/dev/Mundial-Telegram-Bot/banderas/{0}.jpg".format( pais.nombre[:]) puntos, victorias, empates, derrotas, goles_favor, goles_contra = info_equipo( pais.nombre) data_pais = { 'nombre': pais.nombre, 'puntos': puntos, 'victorias': victorias, 'empates': empates, 'derrotas': derrotas, 'goles_favor': goles_favor, 'goles_contra': goles_contra, 'foto': foto } info_paises.append(data_pais) info_paises = sorted(info_paises, key=lambda dict: dict['nombre']) info_paises = sorted( info_paises, key=lambda dict: dict['goles_contra'] - dict['goles_favor']) info_paises = sorted(info_paises, key=lambda dict: -dict['puntos']) with open(os.path.join(BASE_PATH, 'grupo.html'), 'r') as f: template = Template(f.read()) css = os.path.join(BASE_PATH, 'grupo.css') img = imgkit.from_string(template.render(info_paises=info_paises, letra=letra), 'Tabla{0}.jpg'.format(letra.upper()), css=css)
def partidos_fixture(grupo): session = Session() paises = list(session.query(Pais).filter_by(grupo=grupo)) partidos = [] for pais in paises: partidos_de_un_equipo = session.query(Partidos).filter_by(equipo1=pais.id).all() partidos += partidos_de_un_equipo partidos = sorted(partidos,key=lambda partido: partido.horario) return partidos
def agregar_partido(bot,update): message = update.message.text message = message.lower() message = message.replace('/agregarpartido','') partido = message.split(',') equipo1, equipo2 , horario, clase = partido equipo1 = equipo1.strip() equipo2 = equipo2.strip() horario = horario.strip() clase = clase.strip() session = Session() pais1 = session.query(Pais).filter_by(nombre=equipo1).first() pais2 = session.query(Pais).filter_by(nombre=equipo2).first() if pais1 is None or pais2 is None: update.message.reply_text( 'El nombre de algun pais esta mal' ) return partidos_izquierda = session.query(Partidos).filter_by(equipo1=pais1.id).order_by('horario') partidos_derecha = session.query(Partidos).filter_by(equipo2=pais1.id).order_by('horario') partidos = list(partidos_izquierda) + list(partidos_derecha) for partido in partidos: if partido.ya_termino == False and (pais2.id == partido.equipo1 or pais2.id == partido.equipo2): update.message.reply_text( 'El partido ya existe.' ) return partido_a_agregar = Partidos(pais1.id,pais2.id,horario,clase) session.add(partido_a_agregar) session.commit() update.message.reply_text( 'Partido agregado exitosamente' )
def crearFixture(letra): session = Session() partidos = partidos_fixture(letra) info_partidos = [] for partido in partidos: pais1 = partido.equipo1 pais2 = partido.equipo2 foto1 = "../home/luis/dev/Mundial-Telegram-Bot/banderas/{0}.jpg".format(traducir_pais(pais1)) foto2 = "../home/luis/dev/Mundial-Telegram-Bot/banderas/{0}.jpg".format(traducir_pais(pais2)) gf,gc = partido.resultado.split("-") horario = datetime.strptime(partido.horario, "%Y:%m:%d:%H:%M") horario = "{0} {1} de {2} a las {3}".format( horario.strftime("%A").title(), horario.strftime("%d"), horario.strftime("%B").title(), horario.strftime("%H:%M") ) if partido.ya_termino: horario = "Finalizó" data_partido = {'pais1':traducir_pais(pais1), 'pais2':traducir_pais(pais2),'foto1':foto1, 'foto2':foto2, 'gf':gf, 'gc':gc, 'horario':horario} # print(data_partido) info_partidos.append(data_partido) with open(os.path.join(BASE_PATH,'fixture.html'), 'r') as f: template = Template(f.read()) css = os.path.join(BASE_PATH, 'fixture.css') img = imgkit.from_string(template.render(info_partidos=info_partidos , letra = letra), 'fixture{0}.jpg'.format(letra.upper()), css=css)
def modificar_partido(bot,update): message = update.message.text message = message.lower() message = message.replace('/modificarpartido ','') equipo1, equipo2 , resultado , clase = message.split(',') equipo1 = equipo1.strip() equipo2 = equipo2.strip() resultado = resultado.strip() clase = clase.strip() session = Session() pais1 = session.query(Pais).filter_by(nombre=equipo1).first() pais2 = session.query(Pais).filter_by(nombre=equipo2).first() partidos_izquierda = session.query(Partidos).filter_by(equipo1=pais1.id).order_by('horario') partidos_derecha = session.query(Partidos).filter_by(equipo2=pais1.id).order_by('horario') partidos = list(partidos_izquierda) + list(partidos_derecha) partido_a_modificar = None for partido in partidos: if clase == partido.clase_de_partido and (pais2.id == partido.equipo1 or pais2.id == partido.equipo2): partido_a_modificar = partido if partido_a_modificar is None: update.message.reply_text( 'El partido no existe' ) return if pais1.id == partido_a_modificar.equipo1: partido_a_modificar.resultado = resultado else: goles1, goles2 = resultado.split('-') partido_a_modificar.resultado = goles2 + '-' + goles1 session.commit() update.message.reply_text( 'Se ha modificado el partido con exito' )
def deseliminar(bot, update): message = update.message.text message = message.lower() message = message.replace('/deseliminar','') message = message.strip() message = traducir(message) if message is None: update.message.reply_text( 'Error al ingresar el nombre del pais.' ) return session = Session() pais = session.query(Pais).filter_by(nombre=message).first() pais.en_juego = True session.commit() Tarjeta(pais) update.message.reply_text( 'Terminado.' )
def info_equipo(pais): pais = pais.lower() pais = pais.strip() session = Session() pais = session.query(Pais).filter_by(nombre=pais).first() partidos_izquierda = session.query(Partidos).filter_by(equipo1=pais.id).order_by('horario') partidos_derecha = session.query(Partidos).filter_by(equipo2=pais.id).order_by('horario') partidos = list(partidos_izquierda) + list(partidos_derecha) victorias = 0 empates = 0 derrotas = 0 goles_favor = 0 goles_contra = 0 for partido in partidos: if partido.ya_termino: if pais.id == partido.equipo1: goles_equipo1 , goles_equipo2 = partido.resultado.split('-') goles_equipo1 = int(goles_equipo1) goles_equipo2 = int(goles_equipo2) if goles_equipo1 > goles_equipo2: victorias += 1 else: if goles_equipo1 == goles_equipo2: empates += 1 else: derrotas += 1 goles_favor += goles_equipo1 goles_contra += goles_equipo2 else: goles_equipo1 , goles_equipo2 = partido.resultado.split('-') goles_equipo1 = int(goles_equipo1) goles_equipo2 = int(goles_equipo2) if goles_equipo1 > goles_equipo2: derrotas += 1 else: if goles_equipo1 == goles_equipo2: empates += 1 else: victorias += 1 goles_favor += goles_equipo2 goles_contra += goles_equipo1 puntos = victorias*3 + empates return puntos,victorias,empates,derrotas,goles_favor,goles_contra
def terminar_partido(bot,update): message = update.message.text message = message.lower() message = message.replace('/terminarpartido ','') message = message.strip() equipo1, equipo2 , clase = message.split(',') equipo1 = traducir(equipo1) equipo2 = traducir(equipo2) session = Session() pais1 = session.query(Pais).filter_by(nombre=equipo1).first() pais2 = session.query(Pais).filter_by(nombre=equipo2).first() partidos_izquierda = session.query(Partidos).filter_by(equipo1=pais1.id).order_by('horario') partidos_derecha = session.query(Partidos).filter_by(equipo2=pais1.id).order_by('horario') partidos = list(partidos_izquierda) + list(partidos_derecha) partido_a_modificar = None for partido in partidos: if clase == partido.clase_de_partido and (pais2.id == partido.equipo1 or pais2.id == partido.equipo2): partido_a_modificar = partido if partido_a_modificar is None: update.message.reply_text( 'El partido no existe' ) return partido_a_modificar.ya_termino = True session.commit() if partido_a_modificar.clase_de_partido == 'grupo': letra_del_grupo = session.query(Pais).filter_by(nombre=equipo1).first().grupo crearTabla(letra_del_grupo) Tarjeta(pais1) Tarjeta(pais2) crearFixture(letra_del_grupo) update.message.reply_text( 'Se ha modificado el partido con exito' ) return
estado = "Eliminado." if partidos_jugados != 0: GFxP = str(int(goles_favor) / partidos_jugados)[0:4] GCxP = str(int(goles_contra) / partidos_jugados)[0:4] data_pais = { 'nombre': pais.nombre, 'victorias': victorias, 'empates': empates, 'derrotas': derrotas, 'goles_favor': goles_favor, 'goles_contra': goles_contra, 'foto': foto, 'GFxP': str(GFxP), 'GCxP': str(GCxP), 'partidos_jugados': str(partidos_jugados) } with open(os.path.join(BASE_PATH, 'estadisticas.html'), 'r') as f: template = Template(f.read()) css = os.path.join(BASE_PATH, 'estadisticas.css') img = imgkit.from_string(template.render(data_pais=data_pais, estado=estado), 'Stats{0}.jpg'.format(pais.nombre.upper()), css=css) if __name__ == "__main__": session = Session() paises = session.query(Pais) for pais in paises: Tarjeta(pais)
def traducir_pais(id_pais): session = Session() pais = session.query(Pais).filter_by(id=int(id_pais)).first() return pais.nombre