def nueva_competencia(self, dto): from gestorusuario import GestorUsuario from gestorlugar import GestorLugar lista_competencias = GestorBaseDeDatos.get_instance().listar_competencias() deporte = GestorBaseDeDatos.get_instance().listar_deportes(nombre = dto.deporte) lista_sedes = [] for DTOLugares in dto.lugares: lugar = GestorLugar.get_instance().listar_lugar(id_lugar = DTOLugares.id) sede = Sede(lugar=lugar, disponibilidad=DTOLugares.disponibilidad) lista_sedes.append(sede) for competencias in lista_competencias: if dto.nombre == competencias.nombre: raise NombreExistente('Ya existe ese nombre de competencia en la base de datos.') if dto.tipo == 'eliminatoriasimple': competencia_new = CompetenciaEliminatoriaSimple(nombre=dto.nombre, tipo_puntuacion=dto.tipo_puntuacion, cantidad_de_sets=dto.cantidad_de_sets, reglamento=dto.reglamento, estado='Creada', tantos_presentismo=dto.tantos_presentismo, sedes=lista_sedes, deporte=deporte) elif dto.tipo == 'eliminatoriadoble': competencia_new = CompetenciaEliminatoriaDoble(nombre=dto.nombre, tipo_puntuacion=dto.tipo_puntuacion, cantidad_de_sets=dto.cantidad_de_sets, reglamento=dto.reglamento, estado='Creada', tantos_presentismo=dto.tantos_presentismo, sedes=lista_sedes, deporte=deporte) else: competencia_new = CompetenciaLiga(nombre=dto.nombre, tipo_puntuacion=dto.tipo_puntuacion, cantidad_de_sets=dto.cantidad_de_sets, reglamento=dto.reglamento, estado='Creada', tantos_presentismo=dto.tantos_presentismo, sedes=lista_sedes, puntos_por_presentarse=dto.puntos_por_presentarse, puntos_por_ganar=dto.puntos_por_ganar, puntos_por_empate=dto.puntos_por_empate, deporte = deporte, permitir_empate=dto.permitir_empate) GestorUsuario.get_instance().agregar_competencia(dto.id_usuario, competencia_new) return 1
def listar_competencias(self, id_competencia = None, nombre=None, id_usuario = None, deporte = None, modalidad = None, estado = None): """Realiza la correspondiente busqueda de competencias, devuelve una lista de DTOs Competencias""" from gestorusuario import GestorUsuario lista_dtos = [] if id_competencia is not None: competencia = GestorBaseDeDatos.get_instance().listar_competencias(id_competencia=id_competencia) usuario = GestorUsuario.get_instance().obtener_usuario(competencia.id_usuario) if competencia.tipo =='eliminatoriasimple' or competencia.tipo =='eliminatoriadoble': lista_dtos.append(DTOCompetencia(competencia.id, competencia.nombre, competencia.tipo_puntuacion, competencia.estado, competencia.reglamento, competencia.id_usuario, usuario.nombre, competencia.tipo, competencia.cantidad_de_sets, None, None, None, competencia.deporte.nombre, None, competencia.tantos_presentismo, None)) else: lista_dtos.append(DTOCompetencia(competencia.id, competencia.nombre, competencia.tipo_puntuacion, competencia.estado, competencia.reglamento, competencia.id_usuario, usuario.nombre, competencia.tipo, competencia.cantidad_de_sets, competencia.puntos_por_presentarse, competencia.puntos_por_ganar, competencia.puntos_por_empate, competencia.deporte.nombre, None, competencia.tantos_presentismo, competencia.permitir_empate)) else: lista_competencias = GestorBaseDeDatos.get_instance().listar_competencias(nombre=nombre, id_usuario=id_usuario, deporte=deporte, modalidad=modalidad, estado=estado) for competencia in lista_competencias: usuario = GestorUsuario.get_instance().obtener_usuario(competencia.id_usuario) if competencia.tipo == 'eliminatoriasimple' or competencia.tipo == 'eliminatoriadoble': lista_dtos.append(DTOCompetencia(competencia.id, competencia.nombre, competencia.tipo_puntuacion, competencia.estado, competencia.reglamento, competencia.id_usuario, usuario.nombre, competencia.tipo, competencia.cantidad_de_sets, None, None, None, competencia.deporte.nombre, None, competencia.tantos_presentismo, None)) else: lista_dtos.append(DTOCompetencia(competencia.id, competencia.nombre, competencia.tipo_puntuacion, competencia.estado, competencia.reglamento, competencia.id_usuario, usuario.nombre, competencia.tipo, competencia.cantidad_de_sets, competencia.puntos_por_presentarse, competencia.puntos_por_ganar, competencia.puntos_por_empate, competencia.deporte.nombre, None, competencia.tantos_presentismo, competencia.permitir_empate)) return lista_dtos