Ejemplo n.º 1
0
    def setUp(self):
        print("\nTEST 1: Creacion de usuario")
        usuario1 = Usuario(username='******', password='******')
        usuario1.save()
        usuario2 = Usuario(username='******', password='******')
        usuario2.save()
        usuario3 = Usuario(username='******', password='******')
        usuario3.save()
        print("Creacion de usuarios sin problemas")

        print("\nTEST 2: Creacion de  proyecto")
        nombre_proyecto = 'prueba'
        Codigo = 'test'
        Descripcion = "proyecto prueba"
        Fecha_inicio = datetime.now()
        Fecha_finalizacion = datetime.now()
        Scrum_master = usuario1;
        Equipo_desarrollo = [usuario1, usuario2]
        proyecto = Proyecto(nombre_proyecto=nombre_proyecto,descripcion_proyecto=Descripcion, codigo_proyecto=Codigo, estado_proyecto='PENDIENTE',
                            fecha_inicio=Fecha_inicio, fecha_finalizacion=Fecha_finalizacion, scrum_master=Scrum_master,cliente=usuario3
                            )
        proyecto.save()
        print("TEST: Creacion de  proyecto sin problemas")


        print("\nTEST 3: Asignacion de equipo de desarrollo al proyecto")
        proyecto.equipo_desarrollo = [usuario1, usuario2, usuario3]
        proyecto.save()
        print("TEST: Asignacion de equipo de desarrollo a proyecto sin problemas")



        print("\nTEST 4: Creacion de sprint")
        sprint = Sprint(nombre_sprint="Mi Test Sprint", id_proyecto=proyecto, fecha_inicio=Fecha_inicio, fecha_fin=Fecha_finalizacion, estado='finalizado')
        sprint.save()
        print("TEST: Creacion de sprint sin problemas")



        print("\nTEST 5: Creacion de US")
        nombre = 'userstorytest'
        codigo = 'test-123'
        descripcion = 'test'
        usuario_asignado = Usuario.objects.get(username='******')
        proyecto_pertenece = Proyecto.objects.get(nombre_proyecto=nombre_proyecto)
        size = 10
        prioridad = 'ALTA'
        valor_tecnico = 8
        valor_de_negocio = 4
        userstory = UserStory(nombre=nombre, descripcion=descripcion, prioridad=prioridad, codigo=codigo,
                              valor_de_negocio=valor_de_negocio, valor_tecnico=valor_tecnico,
                              usuario_asignado=usuario_asignado, proyecto=proyecto_pertenece, size=size)
        userstory.save()
        print("Creacion de US sin problemas")



        print("\nTEST 6: Asignacion de usuario a US")
        userstory.usuario_asignado = usuario3
        userstory.save()
        print("TEST:  Asignacion de usuario a US sin problemas")


        print("\nTEST 7: Creacion de flujo")
        flujo = Flujo(nombre_flujo="flujo prueba",id_Proyecto=proyecto)
        flujo.save()
        print("TEST: Creacion de flujo sin problemas")

        print("\nTEST 8: Creacion de actividades")
        actividad1 = Actividad(id_Flujo_id=flujo.id,nombre_actividad="actividad_prueba 1",orden_actividad=1,estado_actividad="ToDo")
        actividad1.save()
        actividad2 = Actividad(id_Flujo_id=flujo.id,nombre_actividad="actividad_prueba 2",orden_actividad=2,estado_actividad="ToDo")
        actividad2.save()
        actividad3 = Actividad(id_Flujo_id=flujo.id,nombre_actividad="actividad_prueba 3",orden_actividad=3,estado_actividad="ToDo")
        actividad3.save()
        print("TEST: Creacion de actividades sin problemas")



        print("\nTEST 9: Asignacion de US a Sprint")
        userstory.nombre_sprint = sprint.nombre_sprint
        userstory.save()
        print("TEST:  Asignacion de US a Sprint sin problemas")

        print("\nTEST 10: Asignacion de US a Flujo")
        userstory.id_flujo = flujo.id
        userstory.save()
        print("TEST:  Asignacion de US a Flujo sin problemas")

        print("\nTEST 11: Asignacion de US a Actividad")
        userstory.id_actividad = actividad1.id
        userstory.estado_en_actividad = "ToDo"
        userstory.save()
        print("TEST:  Asignacion de US a Actividad sin problemas")


        print("\nTEST 12: Creacion de Tablero Kanban")
        tablero = TableroKanban(nombre_tablero='Tablero de prueba unitaria',estado_tablero='Abierto',id_sprint_id=sprint.id,id_flujo_id=flujo.id,id_proyecto=proyecto,nombre_proyecto=proyecto.nombre_proyecto)
        tablero.save()
        print("TEST: Creacion de Tablero Kanban sin problemas")
Ejemplo n.º 2
0
    def setUp(self):
        print("\nTEST 1: Creacion de usuario")
        usuario1 = Usuario(username='******', password='******')
        usuario1.save()
        usuario2 = Usuario(username='******', password='******')
        usuario2.save()
        usuario3 = Usuario(username='******', password='******')
        usuario3.save()
        print("Creacion de usuarios sin problemas")

        print("\nTEST 2: Creacion de  proyecto")
        nombre_proyecto = 'prueba'
        Codigo = 'test'
        Descripcion = "proyecto prueba"
        Fecha_inicio = datetime.now()
        Fecha_finalizacion = datetime.now()
        Scrum_master = usuario1
        Equipo_desarrollo = [usuario1, usuario2]
        proyecto = Proyecto(nombre_proyecto=nombre_proyecto,
                            descripcion_proyecto=Descripcion,
                            codigo_proyecto=Codigo,
                            estado_proyecto='PENDIENTE',
                            fecha_inicio=Fecha_inicio,
                            fecha_finalizacion=Fecha_finalizacion,
                            scrum_master=Scrum_master,
                            cliente=usuario3)
        proyecto.save()
        print("TEST: Creacion de  proyecto sin problemas")

        print("\nTEST 3: Asignacion de equipo de desarrollo al proyecto")
        proyecto.equipo_desarrollo = [usuario1, usuario2, usuario3]
        proyecto.save()
        print(
            "TEST: Asignacion de equipo de desarrollo a proyecto sin problemas"
        )

        print("\nTEST 4: Creacion de sprint")
        sprint = Sprint(nombre_sprint="Mi Test Sprint",
                        id_proyecto=proyecto,
                        fecha_inicio=Fecha_inicio,
                        fecha_fin=Fecha_finalizacion,
                        estado='finalizado')
        sprint.save()
        print("TEST: Creacion de sprint sin problemas")

        print("\nTEST 5: Creacion de US")
        nombre = 'userstorytest'
        codigo = 'test-123'
        descripcion = 'test'
        usuario_asignado = Usuario.objects.get(username='******')
        proyecto_pertenece = Proyecto.objects.get(
            nombre_proyecto=nombre_proyecto)
        size = 10
        prioridad = 'ALTA'
        valor_tecnico = 8
        valor_de_negocio = 4
        userstory = UserStory(nombre=nombre,
                              descripcion=descripcion,
                              prioridad=prioridad,
                              codigo=codigo,
                              valor_de_negocio=valor_de_negocio,
                              valor_tecnico=valor_tecnico,
                              usuario_asignado=usuario_asignado,
                              proyecto=proyecto_pertenece,
                              size=size)
        userstory.save()
        print("Creacion de US sin problemas")

        print("\nTEST 6: Asignacion de usuario a US")
        userstory.usuario_asignado = usuario3
        userstory.save()
        print("TEST:  Asignacion de usuario a US sin problemas")

        print("\nTEST 7: Creacion de flujo")
        flujo = Flujo(nombre_flujo="flujo prueba", id_Proyecto=proyecto)
        flujo.save()
        print("TEST: Creacion de flujo sin problemas")

        print("\nTEST 8: Creacion de actividades")
        actividad1 = Actividad(id_Flujo_id=flujo.id,
                               nombre_actividad="actividad_prueba 1",
                               orden_actividad=1,
                               estado_actividad="ToDo")
        actividad1.save()
        actividad2 = Actividad(id_Flujo_id=flujo.id,
                               nombre_actividad="actividad_prueba 2",
                               orden_actividad=2,
                               estado_actividad="ToDo")
        actividad2.save()
        actividad3 = Actividad(id_Flujo_id=flujo.id,
                               nombre_actividad="actividad_prueba 3",
                               orden_actividad=3,
                               estado_actividad="ToDo")
        actividad3.save()
        print("TEST: Creacion de actividades sin problemas")

        print("\nTEST 9: Asignacion de US a Sprint")
        userstory.nombre_sprint = sprint.nombre_sprint
        userstory.save()
        print("TEST:  Asignacion de US a Sprint sin problemas")

        print("\nTEST 10: Asignacion de US a Flujo")
        userstory.id_flujo = flujo.id
        userstory.save()
        print("TEST:  Asignacion de US a Flujo sin problemas")

        print("\nTEST 11: Asignacion de US a Actividad")
        userstory.id_actividad = actividad1.id
        userstory.estado_en_actividad = "ToDo"
        userstory.save()
        print("TEST:  Asignacion de US a Actividad sin problemas")

        print("\nTEST 12: Creacion de Tablero Kanban")
        tablero = TableroKanban(nombre_tablero='Tablero de prueba unitaria',
                                estado_tablero='Abierto',
                                id_sprint_id=sprint.id,
                                id_flujo_id=flujo.id,
                                id_proyecto=proyecto,
                                nombre_proyecto=proyecto.nombre_proyecto)
        tablero.save()
        print("TEST: Creacion de Tablero Kanban sin problemas")
Ejemplo n.º 3
0
def crear_tablero_kanban_view(request, id_proyecto):
    """
    Permite la generacion de un tablero kanban al proyecto que posee el id de id_proyecto
    :param request:
    :param id_proyecto:
    :return:
    """
    proyecto_seleccionado = Proyecto.objects.get(pk=id_proyecto)
    flujos = Flujo.objects.filter(id_Proyecto=id_proyecto)
    sprints = Sprint.objects.filter(id_proyecto=id_proyecto, estado="Activo")
    sprints_copy = []
    tablero = TableroKanban()
    error = "Ninguno"

    # Controla que no exista otro sprint que se encuentre activo
    lista_sprint = list(Sprint.objects.filter(id_proyecto=id_proyecto))
    sprints_activos = []
    for item in lista_sprint:
        if item.estado == "ACTIVO":
            sprints_activos.append(item)

    if len(sprints_activos) >= 1:
        error = "sprint activo"
        context = {
            "tablero": tablero,
            "proyecto": proyecto_seleccionado,
            "flujos": flujos,
            "sprints": sprints,
            "error": error,
        }
        return render_to_response(
            "Gestion_de_tablero_kanban/crear_tablero.html", context, context_instance=RequestContext(request)
        )

    # Controla que existan sprint antes de realizar la creacion del tablero
    if len(sprints) == 0:
        error = "cree sprint"
        context = {
            "tablero": tablero,
            "proyecto": proyecto_seleccionado,
            "flujos": flujos,
            "sprints": sprints,
            "error": error,
        }
        return render_to_response(
            "Gestion_de_tablero_kanban/crear_tablero.html", context, context_instance=RequestContext(request)
        )

    uss = []
    # Obtiene los us que fueron asignados a ese sprint
    for item in sprints:
        uss = UserStory.objects.filter(proyecto_id=id_proyecto, nombre_sprint=item.nombre_sprint)
        if len(uss) > 0:
            sprints_copy.append(item)

    for item in uss:
        if item.usuario_asignado_id:
            error == "ningun_usuario"

    if error == "ningun_usuario":
        context = {
            "tablero": tablero,
            "proyecto": proyecto_seleccionado,
            "flujos": flujos,
            "sprints": sprints,
            "error": error,
        }
        return render_to_response(
            "Gestion_de_tablero_kanban/crear_tablero.html", context, context_instance=RequestContext(request)
        )

    sprints = sprints_copy

    # Controla que existan mas de un US dentro del sprint
    if len(sprints) == 0:
        error = "asigne us"
        context = {
            "tablero": tablero,
            "proyecto": proyecto_seleccionado,
            "flujos": flujos,
            "sprints": sprints,
            "error": error,
        }
        return render_to_response(
            "Gestion_de_tablero_kanban/crear_tablero.html", context, context_instance=RequestContext(request)
        )

    # Controla que existan flujos para la creacion del tablero kanban
    if len(flujos) == 0:
        error = "asigne flujo"
        context = {
            "tablero": tablero,
            "proyecto": proyecto_seleccionado,
            "flujos": flujos,
            "sprints": sprints,
            "error": error,
        }
        return render_to_response(
            "Gestion_de_tablero_kanban/crear_tablero.html", context, context_instance=RequestContext(request)
        )

    if request.method == "POST" and "Guardar" in request.POST:
        if (
            request.POST.get("nombre_tablero") is not None
            and request.POST.get("sprint") is not None
            and request.POST.get("flujo") is not None
        ):

            try:
                error = "Contenido"
                tablero1 = TableroKanban.objects.get(
                    id_proyecto_id=id_proyecto,
                    id_sprint_id=request.POST.get("sprint"),
                    id_flujo_id=request.POST.get("flujo"),
                )
                # Si pasa esta linea quiere decir que existe un tablero con las mismas caracteristicas en el proyecto, debe mostrar el error
                context = {
                    "tablero": tablero,
                    "proyecto": proyecto_seleccionado,
                    "flujos": flujos,
                    "sprints": sprints,
                    "error": error,
                    "tablero_copy": tablero1,
                }
                return render_to_response(
                    "Gestion_de_tablero_kanban/crear_tablero.html", context, context_instance=RequestContext(request)
                )
            except:
                # Si salta la excepcion quiere decir que no existe un tablero con el mismo contenido, por tanto puede continuar
                pass

            try:
                # va a buscar en la bd si existe el tablero con el nombre indicado, de esa manera se
                # controla que los nombre de los tableros no coincidan
                error = "Nombre"
                tablero2 = TableroKanban.objects.get(nombre_tablero=request.POST.get("nombre_tablero"))
                # si pasa a esta linea quiere decir que el tablero existe, debe mostrar un cuadro indicando el error
                context = {
                    "tablero": tablero,
                    "proyecto": proyecto_seleccionado,
                    "flujos": flujos,
                    "sprints": sprints,
                    "error": error,
                    "tablero_copy": tablero1,
                }
                return render_to_response(
                    "Gestion_de_tablero_kanban/crear_tablero.html", context, context_instance=RequestContext(request)
                )
            except:
                pass

                tablero.nombre_tablero = request.POST.get("nombre_tablero")
                tablero.estado_tablero = request.POST.get("estado")
                sprint = Sprint.objects.get(pk=request.POST.get("sprint"))
                flujo = Flujo.objects.get(pk=request.POST.get("flujo"))
                flujo.id_sprint = sprint.id
                flujo.save()

                uss = UserStory.objects.filter(proyecto_id=id_proyecto, nombre_sprint=sprint.nombre_sprint)
                actividades = list(Actividad.objects.filter(id_Flujo_id=flujo))

                for us in uss:
                    if us.estado != "En Curso":
                        us.estado = "En Curso"
                        us.id_flujo = flujo.id
                        us.id_actividad = actividades[0].id
                        us.save()

                tablero.id_sprint = sprint
                tablero.id_flujo = flujo
                tablero.id_proyecto = Proyecto.objects.get(pk=id_proyecto)
                tablero.nombre_proyecto = Proyecto.objects.get(pk=id_proyecto).nombre_proyecto
                tablero.save()

                Sistema().registrar(
                    "Creado tablero kanban "
                    + request.POST.get("nombre_tablero")
                    + " para proyecto "
                    + Proyecto.objects.get(pk=id_proyecto).nombre_proyecto,
                    request.user.username,
                    "Ninguno",
                )
                redireccion = reverse("listar_tablero_kanban_proyecto", args=[id_proyecto])
                return HttpResponseRedirect(redireccion)
        else:
            error = "Incompleto"

    context = {
        "tablero": tablero,
        "proyecto": proyecto_seleccionado,
        "flujos": flujos,
        "sprints": sprints,
        "error": error,
    }
    return render_to_response(
        "Gestion_de_tablero_kanban/crear_tablero.html", context, context_instance=RequestContext(request)
    )
Ejemplo n.º 4
0
def crear_tablero_kanban_view(request, id_proyecto):
    """
    Permite la generacion de un tablero kanban al proyecto que posee el id de id_proyecto
    :param request:
    :param id_proyecto:
    :return:
    """
    proyecto_seleccionado = Proyecto.objects.get(pk=id_proyecto)
    flujos = Flujo.objects.filter(id_Proyecto=id_proyecto)
    sprints = Sprint.objects.filter(id_proyecto=id_proyecto, estado="Activo")
    sprints_copy = []
    tablero = TableroKanban()
    error = "Ninguno"

    #Controla que no exista otro sprint que se encuentre activo
    lista_sprint = list(Sprint.objects.filter(id_proyecto=id_proyecto))
    sprints_activos = []
    for item in lista_sprint:
        if item.estado == "ACTIVO":
            sprints_activos.append(item)

    if len(sprints_activos) >= 1:
        error = "sprint activo"
        context = {
            'tablero': tablero,
            "proyecto": proyecto_seleccionado,
            "flujos": flujos,
            "sprints": sprints,
            "error": error
        }
        return render_to_response(
            "Gestion_de_tablero_kanban/crear_tablero.html",
            context,
            context_instance=RequestContext(request))

    #Controla que existan sprint antes de realizar la creacion del tablero
    if len(sprints) == 0:
        error = "cree sprint"
        context = {
            'tablero': tablero,
            "proyecto": proyecto_seleccionado,
            "flujos": flujos,
            "sprints": sprints,
            "error": error
        }
        return render_to_response(
            "Gestion_de_tablero_kanban/crear_tablero.html",
            context,
            context_instance=RequestContext(request))

    uss = []
    #Obtiene los us que fueron asignados a ese sprint
    for item in sprints:
        uss = UserStory.objects.filter(proyecto_id=id_proyecto,
                                       nombre_sprint=item.nombre_sprint)
        if len(uss) > 0:
            sprints_copy.append(item)

    for item in uss:
        if item.usuario_asignado_id:
            error == "ningun_usuario"

    if error == "ningun_usuario":
        context = {
            'tablero': tablero,
            "proyecto": proyecto_seleccionado,
            "flujos": flujos,
            "sprints": sprints,
            "error": error
        }
        return render_to_response(
            "Gestion_de_tablero_kanban/crear_tablero.html",
            context,
            context_instance=RequestContext(request))

    sprints = sprints_copy

    #Controla que existan mas de un US dentro del sprint
    if len(sprints) == 0:
        error = "asigne us"
        context = {
            'tablero': tablero,
            "proyecto": proyecto_seleccionado,
            "flujos": flujos,
            "sprints": sprints,
            "error": error
        }
        return render_to_response(
            "Gestion_de_tablero_kanban/crear_tablero.html",
            context,
            context_instance=RequestContext(request))

    #Controla que existan flujos para la creacion del tablero kanban
    if len(flujos) == 0:
        error = "asigne flujo"
        context = {
            'tablero': tablero,
            "proyecto": proyecto_seleccionado,
            "flujos": flujos,
            "sprints": sprints,
            "error": error
        }
        return render_to_response(
            "Gestion_de_tablero_kanban/crear_tablero.html",
            context,
            context_instance=RequestContext(request))

    if request.method == 'POST' and 'Guardar' in request.POST:
        if request.POST.get('nombre_tablero') is not None and request.POST.get(
                'sprint') is not None and request.POST.get(
                    "flujo") is not None:

            try:
                error = "Contenido"
                tablero1 = TableroKanban.objects.get(
                    id_proyecto_id=id_proyecto,
                    id_sprint_id=request.POST.get('sprint'),
                    id_flujo_id=request.POST.get('flujo'))
                #Si pasa esta linea quiere decir que existe un tablero con las mismas caracteristicas en el proyecto, debe mostrar el error
                context = {
                    'tablero': tablero,
                    "proyecto": proyecto_seleccionado,
                    "flujos": flujos,
                    "sprints": sprints,
                    "error": error,
                    'tablero_copy': tablero1
                }
                return render_to_response(
                    "Gestion_de_tablero_kanban/crear_tablero.html",
                    context,
                    context_instance=RequestContext(request))
            except:
                #Si salta la excepcion quiere decir que no existe un tablero con el mismo contenido, por tanto puede continuar
                pass

            try:
                #va a buscar en la bd si existe el tablero con el nombre indicado, de esa manera se
                #controla que los nombre de los tableros no coincidan
                error = "Nombre"
                tablero2 = TableroKanban.objects.get(
                    nombre_tablero=request.POST.get('nombre_tablero'))
                #si pasa a esta linea quiere decir que el tablero existe, debe mostrar un cuadro indicando el error
                context = {
                    'tablero': tablero,
                    "proyecto": proyecto_seleccionado,
                    "flujos": flujos,
                    "sprints": sprints,
                    "error": error,
                    'tablero_copy': tablero1
                }
                return render_to_response(
                    "Gestion_de_tablero_kanban/crear_tablero.html",
                    context,
                    context_instance=RequestContext(request))
            except:
                pass

                tablero.nombre_tablero = request.POST.get('nombre_tablero')
                tablero.estado_tablero = request.POST.get('estado')
                sprint = Sprint.objects.get(pk=request.POST.get("sprint"))
                flujo = Flujo.objects.get(pk=request.POST.get("flujo"))
                flujo.id_sprint = sprint.id
                flujo.save()

                uss = UserStory.objects.filter(
                    proyecto_id=id_proyecto,
                    nombre_sprint=sprint.nombre_sprint)
                actividades = list(Actividad.objects.filter(id_Flujo_id=flujo))

                for us in uss:
                    if us.estado != "En Curso":
                        us.estado = "En Curso"
                        us.id_flujo = flujo.id
                        us.id_actividad = actividades[0].id
                        us.save()

                tablero.id_sprint = sprint
                tablero.id_flujo = flujo
                tablero.id_proyecto = Proyecto.objects.get(pk=id_proyecto)
                tablero.nombre_proyecto = Proyecto.objects.get(
                    pk=id_proyecto).nombre_proyecto
                tablero.save()

                Sistema().registrar(
                    "Creado tablero kanban " +
                    request.POST.get('nombre_tablero') + " para proyecto " +
                    Proyecto.objects.get(pk=id_proyecto).nombre_proyecto,
                    request.user.username, "Ninguno")
                redireccion = reverse('listar_tablero_kanban_proyecto',
                                      args=[id_proyecto])
                return HttpResponseRedirect(redireccion)
        else:
            error = "Incompleto"

    context = {
        'tablero': tablero,
        "proyecto": proyecto_seleccionado,
        "flujos": flujos,
        "sprints": sprints,
        "error": error
    }
    return render_to_response("Gestion_de_tablero_kanban/crear_tablero.html",
                              context,
                              context_instance=RequestContext(request))