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))
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))
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))
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))