def importar_fase(request, id_fase,id_proyecto): ''' Vista para importar los datos de una fase existente para su utilizacion en la creacion de una nueva. Realiza las comprobaciones necesarias con respecto a la fecha de inicio y orden de fase. ''' proyecto = get_object_or_404(Proyecto,id=id_proyecto) if proyecto.estado!='PEN': return render_to_response('fases/error_activo.html') fase= Fase.objects.get(id=id_fase) if request.method=='POST': formulario = CrearFaseForm(request.POST) if formulario.is_valid(): if not verificarNombre(proyecto.id,request.POST["nombre"] ): messages.add_message(request, settings.DELETE_MESSAGE, "Error: Ya existe ese nombre de fase en el proyecto") else: if len(str(request.POST["fInicio"])) != 10 : messages.add_message(request, settings.DELETE_MESSAGE, "Error: El formato de Fecha es: DD/MM/AAAA") else: fecha=datetime.strptime(str(request.POST["fInicio"]),'%d/%m/%Y') fecha=fecha.strftime('%Y-%m-%d') fecha1=datetime.strptime(fecha,'%Y-%m-%d') newFase = Fase(nombre = request.POST["nombre"],descripcion = request.POST["descripcion"],maxItems = request.POST["maxItems"],fInicio = fecha, estado = "PEN", proyecto_id = id_proyecto) aux=0 orden=Fase.objects.filter(proyecto_id=id_proyecto) roles = request.POST.getlist("roles") for rol in roles: fase=Fase.objects.filter(roles__id=rol) if(fase.count()>0): aux=1 if aux>0: messages.add_message(request, settings.DELETE_MESSAGE, "Error: El Rol ya ha sido asignado a otra fase") else: proyecto=Proyecto.objects.get(id=id_proyecto) cantidad = orden.count() if cantidad>0: anterior = Fase.objects.get(orden=cantidad, proyecto_id=id_proyecto) if fecha1<datetime.strptime(str(anterior.fInicio),'%Y-%m-%d'): messages.add_message(request, settings.DELETE_MESSAGE, "Error: Fecha de inicio no concuerda con fase anterior") else: if datetime.strptime(str(proyecto.fecha_ini),'%Y-%m-%d')>=fecha1 or datetime.strptime(str(proyecto.fecha_fin),'%Y-%m-%d')<=fecha1: messages.add_message(request, settings.DELETE_MESSAGE, "Error: Fecha de inicio no concuerda con proyecto") else: roles = request.POST.getlist("roles") newFase.orden=orden.count()+1 newFase.save() for rol in roles: newFase.roles.add(rol) newFase.save() return render_to_response('fases/creacion_correcta.html',{'id_proyecto':id_proyecto}, context_instance=RequestContext(request)) else: roles = request.POST.getlist("roles") newFase.orden=1 newFase.save() for rol in roles: newFase.roles.add(rol) newFase.save() return render_to_response('fases/creacion_correcta.html',{'id_proyecto':id_proyecto}, context_instance=RequestContext(request)) else: formulario = CrearFaseForm(initial={'descripcion':fase.descripcion, 'maxItems':fase.maxItems, 'fInicio':fase.fInicio, 'orden':fase.orden, 'nombre':fase.nombre}) #'fInicio':datetime.strptime(str(fase.fInicio),'%Y-%m-%d').strftime('%d/%m/%y') return render_to_response('fases/registrarFase.html',{'formulario':formulario}, context_instance=RequestContext(request))
def registrar_fase(request,id_proyecto): ''' Vista para registrar una nueva fase dentro de un proyecto. Asigna automaticamente el orden, realiza las comprobaciones necesarias con respecto a la fecha de inicio y comprueba tambien que los roles asociados no pertenezcan a otra fase. ''' proyecto = get_object_or_404(Proyecto, id=id_proyecto) if proyecto.estado!='PEN': return HttpResponseRedirect ('/denegado') if request.method=='POST': nombre=0 formulario = CrearFaseForm(request.POST) if formulario.is_valid(): if not verificarNombre(proyecto.id,request.POST["nombre"] ): messages.add_message(request, settings.DELETE_MESSAGE, "Error: Ya existe ese nombre de fase en el proyecto") nombre=1 else: if len(str(request.POST["fInicio"])) != 10 : #Comprobacion de formato de fecha messages.add_message(request, settings.DELETE_MESSAGE, "Error: El formato de Fecha es: DD/MM/AAAA") else: fecha=datetime.strptime(str(request.POST["fInicio"]),'%d/%m/%Y') fecha=fecha.strftime('%Y-%m-%d') fecha1=datetime.strptime(fecha,'%Y-%m-%d') newFase = Fase(nombre = request.POST["nombre"],descripcion = request.POST["descripcion"],maxItems = request.POST["maxItems"],fInicio = fecha,estado = "PEN", proyecto_id = id_proyecto) aux=0 orden=Fase.objects.filter(proyecto_id=id_proyecto) roles = request.POST.getlist("roles") for rol in roles: fase=Fase.objects.filter(roles__id=rol) if(fase.count()>0): aux=1 if aux>0:#comprobacion de pertenencia de roles messages.add_message(request, settings.DELETE_MESSAGE, "Error: El Rol ya ha sido asignado a otra fase") else: proyecto=Proyecto.objects.get(id=id_proyecto) cantidad = orden.count() if cantidad>0:#comprobaciones de fecha anterior = Fase.objects.get(orden=cantidad, proyecto_id=id_proyecto) if fecha1<datetime.strptime(str(anterior.fInicio),'%Y-%m-%d'): messages.add_message(request, settings.DELETE_MESSAGE, "Error: Fecha de inicio no concuerda con fase anterior") else: if datetime.strptime(str(proyecto.fecha_ini),'%Y-%m-%d')>=fecha1 or datetime.strptime(str(proyecto.fecha_fin),'%Y-%m-%d')<=fecha1: messages.add_message(request, settings.DELETE_MESSAGE, "Error: Fecha de inicio no concuerda con proyecto") else: roles = request.POST.getlist("roles") newFase.orden=orden.count()+1 #Calculo del orden de la fase a crear newFase.save() for rol in roles: newFase.roles.add(rol) newFase.save() return render_to_response('fases/creacion_correcta.html',{'id_proyecto':id_proyecto}, context_instance=RequestContext(request)) else: roles = request.POST.getlist("roles") newFase.orden=1 newFase.save() for rol in roles: newFase.roles.add(rol) newFase.save() return render_to_response('fases/creacion_correcta.html',{'id_proyecto':id_proyecto}, context_instance=RequestContext(request)) else: formulario = CrearFaseForm() return render_to_response('fases/registrarFase.html',{'formulario':formulario}, context_instance=RequestContext(request))