Ejemplo n.º 1
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.º 2
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))