Esempio n. 1
0
def importarf(request, id_proyecto, id_fase):
    """ Recibe un request y el id de la fase a ser importada, se verifica si el usuario tiene
    permisos para importar una fase existente, luego se lo redirige a la pagina para completar los
    datos del formulario de nueva fase importada, una vez completado correctamente el formulario el
    sistema crea una nueva fase con las caracteristicas de la fase importada.
    
    @type request: django.http.HttpRequest.
    @param request: Contiene informacion sobre la solicitud web actual que llamo a esta vista importar.
     
    @type id_usuario : string.
    @param id_usuario : Contiene el id del proyecto a ser importado.
    
    @rtype: django.shortcuts.render_to_response.
    @return: crearfaseimportada.html, donde se redirige al usuario para completar los datos de la nueva
    fase importada o a fasealerta.html donde se notifica que la fase fue importada correctamente.
    
    @author:Romina Diaz de Bedoya.
    
    """

    faseImportada = Fases.objects.get(id=id_fase)
    if request.method == 'POST':
        form = FaseModificadaForm(request.POST)
        if form.is_valid():
            form.clean()
            nombre = form.cleaned_data['Nombre_de_Fase']
            descripcion = form.cleaned_data['Descripcion']
            duracion = form.cleaned_data['Duracion']
            mismo_nombre = Fases.objects.filter(nombre=nombre,
                                                is_active=True,
                                                proyecto_id=id_proyecto)

            fase = Fases()
            fase.nombre = nombre
            fase.descripcion = descripcion
            fase.estado = 'DF'
            fase.fechainicio = datetime.now()
            fase.duracion = duracion
            fase.proyecto_id = id_proyecto
            fase.is_active = True

            repetido = False
            for mismos_nombre in mismo_nombre:
                if (mismos_nombre.id != id_fase):
                    repetido = True

            if (repetido):
                mensaje = 'El nombre de Fase ya existe'
                data = {
                    'Nombre_de_Fase': fase.nombre,
                    'Descripcion': fase.descripcion,
                    'Estado': fase.estado,
                    'Duracion': fase.duracion
                }
                form = FaseModificadaForm(data)
                ctx = {
                    'form': form,
                    'mensaje': mensaje,
                    'id_proyecto': id_proyecto,
                    'id_fase': id_fase
                }
                template_name = 'Fases/crearfaseimportada.html'
                return render_to_response(
                    template_name,
                    ctx,
                    context_instance=RequestContext(request))

            fase.save()

            mensaje = "Fase importada exitosamente"
            ctx = {'mensaje': mensaje, 'id_proyecto': id_proyecto}
            return render_to_response('Fases/fasealerta.html',
                                      ctx,
                                      context_instance=RequestContext(request))
    else:
        data = {
            'Nombre_de_Fase': faseImportada.nombre,
            'Descripcion': faseImportada.descripcion,
            'Estado': faseImportada.estado,
            'Duracion': faseImportada.duracion
        }
        form = FaseModificadaForm(data)

    ctx = {'form': form, 'fase': faseImportada}
    template_name = 'Fases/crearfaseimportada.html'
    return render_to_response(template_name,
                              ctx,
                              context_instance=RequestContext(request))
Esempio n. 2
0
def modificar_fase(request, id_proyecto, id_fase):
    """ Recibe un request y el id de la fase a ser modificada, se verifica si el usuario tiene
    permisos para modificar una fase existente y se lo redirige a una pagina para que modifique el 
    formulario existente de una fase, una vez modificado de forma correcta dicho formulario la fase
    puede ser modificada.
    
    @type request: django.http.HttpRequest.
    @param request: Contiene informacion sobre la solicitud web actual que llamo a esta vista crear_fase.
     
    @rtype: django.shortcuts.render_to_response.
    @return: modificarfase.html, donde se encuentra el formulario de modificacion de fase y luego a 
    fasealerta.html donde se notifica la modificacion correcta de una fase.
    
    @type id_usuario : string.
    @param id_usuario : Contiene el id de la fase a ser modificada.
    
    @author:Romina Diaz de Bedoya.
    
    """
    proyecto = Proyectos.objects.get(id=id_proyecto)
    fase = Fases.objects.get(id=id_fase, proyecto_id=id_proyecto)
    mensaje = ''
    if request.method == 'POST':
        if proyecto.estado == 'Inactivo':
            form = FaseModificadaForm(request.POST)
            if form.is_valid():
                form.clean()
                nombreNuevo = form.cleaned_data['Nombre_de_Fase']
                descripcionNueva = form.cleaned_data['Descripcion']
                estadoNuevo = form.cleaned_data['Estado']
                duracionNueva = form.cleaned_data['Duracion']
                mismo_nombres = Fases.objects.filter(nombre=nombreNuevo,
                                                     is_active=True,
                                                     proyecto_id=id_proyecto)
                repetido = 'Vacio'

                if (mismo_nombres):
                    for nombre in mismo_nombres:
                        if (nombre.id != fase.id):
                            repetido = 'No'

                if (repetido == 'No'):
                    mensaje = 'El nombre de Fase ya existe'
                    data = {
                        'Nombre_de_Fase': fase.nombre,
                        'Descripcion': fase.descripcion,
                        'Estado': fase.estado,
                        'Duracion': fase.duracion
                    }
                    form = FaseModificadaForm(data)
                    ctx = {
                        'form': form,
                        'mensaje': mensaje,
                        'id_proyecto': id_proyecto,
                        'id_fase': id_fase
                    }
                    template_name = 'Fases/modificarfase.html'
                    return render_to_response(
                        template_name,
                        ctx,
                        context_instance=RequestContext(request))
                    #Si no se ha suministrado un nuevo lider, el proyecto se queda con el lider actual
                if nombreNuevo:
                    fase.nombre = nombreNuevo
                if descripcionNueva:
                    fase.descripcion = descripcionNueva
                if duracionNueva:
                    fase.duracion = duracionNueva
                if estadoNuevo:
                    if (estadoNuevo == 'DR') or (estadoNuevo == 'FD'):
                        mensaje = 'No se puede modificar el estado sin items'
                        data = {
                            'Nombre_de_Fase': fase.nombre,
                            'Descripcion': fase.descripcion,
                            'Estado': fase.estado,
                            'Duracion': fase.duracion
                        }
                        form = FaseModificadaForm(data)
                        ctx = {
                            'form': form,
                            'mensaje': mensaje,
                            'id_proyecto': id_proyecto,
                            'id_fase': id_fase
                        }
                        template_name = 'Fases/modificarfase.html'
                        return render_to_response(
                            template_name,
                            ctx,
                            context_instance=RequestContext(request))
                    else:
                        fase.estado = estadoNuevo
                fase.save()
                mensaje = "Fase modificada exitosamente"
                ctx = {
                    'mensaje': mensaje,
                    'id_proyecto': id_proyecto,
                    'id_fase': id_fase
                }
                template_name = 'Fases/fasealerta.html'
                return render_to_response(
                    template_name,
                    ctx,
                    context_instance=RequestContext(request))
            else:
                data = {
                    'Nombre_de_Fase': fase.nombre,
                    'Descripcion': fase.descripcion,
                    'Estado': fase.estado,
                    'Duracion': fase.duracion
                }
                form = FaseModificadaForm(data)
            ctx = {
                'form': form,
                'mensaje': mensaje,
                'id_proyecto': id_proyecto,
                'id_fase': id_fase
            }
            template_name = 'Fases/modificarfase.html'
            return render_to_response(template_name,
                                      ctx,
                                      context_instance=RequestContext(request))

        elif proyecto.estado == 'En Construccion':
            if (fase.estado == 'FD'):
                mensaje = 'No se puede modificar la fase, ha finalizado.'
                ctx = {
                    'mensaje': mensaje,
                    'id_proyecto': id_proyecto,
                    'id_fase': id_fase
                }
                template_name = 'Fases/fasealerta.html'
                return render_to_response(
                    template_name,
                    ctx,
                    context_instance=RequestContext(request))
            form = FaseModificadaFormProyectoActivo(request.POST)
            if form.is_valid():
                form.clean()
                estadoNuevo = form.cleaned_data['Estado']
                duracionNueva = form.cleaned_data['Duracion']
                estadoActual = fase.estado
                duracionActual = fase.duracion
                if (duracionNueva):
                    duracion = duracionNueva
                else:
                    duracion = fase.duracion
                if (estadoNuevo):
                    if (estadoActual == 'DF' and estadoNuevo != 'DF'):
                        mensaje = 'No se puede modificar el estado de la fase, aun no posee items.'
                        data = {'Estado': fase.estado, 'Duracion': duracion}
                        form = FaseModificadaFormProyectoActivo(data)
                        ctx = {
                            'form': form,
                            'mensaje': mensaje,
                            'id_proyecto': id_proyecto,
                            'id_fase': id_fase
                        }
                        template_name = 'Fases/modificarfase.html'
                        return render_to_response(
                            template_name,
                            ctx,
                            context_instance=RequestContext(request))
                    elif estadoActual == 'DF':
                        fase.duracion = duracion
                        fase.save()
                        mensaje = 'Fase editada con exito'
                        ctx = {
                            'mensaje': mensaje,
                            'id_proyecto': id_proyecto,
                            'id_fase': id_fase
                        }
                        template_name = 'Fases/fasealerta.html'
                        return render_to_response(
                            template_name,
                            ctx,
                            context_instance=RequestContext(request))
                    elif (estadoActual == 'DR' and estadoNuevo == 'DF'):
                        mensaje = 'No se puede volver al estado definicion.'
                        data = {'Estado': fase.estado, 'Duracion': duracion}
                        form = FaseModificadaFormProyectoActivo(data)
                        ctx = {
                            'form': form,
                            'mensaje': mensaje,
                            'id_proyecto': id_proyecto,
                            'id_fase': id_fase
                        }
                        template_name = 'Fases/modificarfase.html'
                        return render_to_response(
                            template_name,
                            ctx,
                            context_instance=RequestContext(request))
                    elif (estadoActual == 'DR' and estadoNuevo == 'FD'):
                        mensaje = 'No se puede finalizar la fase. Todos los items deben pertenecer a una Linea Base.'
                        data = {'Estado': fase.estado, 'Duracion': duracion}
                        form = FaseModificadaFormProyectoActivo(data)
                        ctx = {
                            'form': form,
                            'mensaje': mensaje,
                            'id_proyecto': id_proyecto,
                            'id_fase': id_fase
                        }
                        template_name = 'Fases/modificarfase.html'
                        return render_to_response(
                            template_name,
                            ctx,
                            context_instance=RequestContext(request))
                    elif (estadoActual == 'DR' and estadoNuevo == 'DR'):
                        fase.duracion = duracion
                        fase.save()
                        mensaje = 'Fase editada con exito'
                        ctx = {
                            'mensaje': mensaje,
                            'id_proyecto': id_proyecto,
                            'id_fase': id_fase
                        }
                        template_name = 'Fases/fasealerta.html'
                        return render_to_response(
                            template_name,
                            ctx,
                            context_instance=RequestContext(request))
                else:
                    fase.duracion = duracion
                    fase.save()
                    mensaje = 'Fase editada con exito'
                    ctx = {
                        'mensaje': mensaje,
                        'id_proyecto': id_proyecto,
                        'id_fase': id_fase
                    }
                    template_name = 'Fases/fasealerta.html'
                    return render_to_response(
                        template_name,
                        ctx,
                        context_instance=RequestContext(request))
            else:
                data = {'Estado': fase.estado, 'Duracion': fase.duracion}
                form = FaseModificadaFormProyectoActivo(data)
                ctx = {
                    'form': form,
                    'mensaje': mensaje,
                    'id_proyecto': id_proyecto,
                    'id_fase': id_fase
                }
                template_name = 'Fases/modificarfase.html'
                return render_to_response(
                    template_name,
                    ctx,
                    context_instance=RequestContext(request))
    elif proyecto.estado == 'Inactivo':
        data = {
            'Nombre_de_Fase': fase.nombre,
            'Descripcion': fase.descripcion,
            'Estado': fase.estado,
            'Duracion': fase.duracion
        }
        form = FaseModificadaForm(data)
    elif proyecto.estado == 'En Construccion':
        data = {'Estado': fase.estado, 'Duracion': fase.duracion}
        form = FaseModificadaFormProyectoActivo(data)
    elif proyecto.estado == 'Finalizado':
        mensaje = 'La fase no se puede modificar, el proyectos esta finalizado.'
        ctx = {
            'mensaje': mensaje,
            'id_proyecto': id_proyecto,
            'id_fase': id_fase
        }
        template_name = 'Fases/fasealerta.html'
        return render_to_response(template_name,
                                  ctx,
                                  context_instance=RequestContext(request))

    ctx = {
        'form': form,
        'mensaje': mensaje,
        'id_proyecto': id_proyecto,
        'id_fase': id_fase
    }
    template_name = 'Fases/modificarfase.html'
    return render_to_response(template_name,
                              ctx,
                              context_instance=RequestContext(request))