descripcion='primera fase ', proyecto=proyecto1) fase2 = Fase(nombre='segunda fase', descripcion='segunda fase', proyecto=proyecto1) fase3 = Fase(nombre='tercera fase', descripcion='tercera fase', proyecto=proyecto1) fase4 = Fase(nombre='cuarta fase', descripcion='cuarta fase', proyecto=proyecto1) fase5 = Fase(nombre='quinta fase', descripcion='quinta fase', proyecto=proyecto1) fase1.save() fase2.save() fase3.save() fase4.save() fase5.save() tipo1 = Tipo_Item( nombre='requerimiento funcional', descripcion='representa un requerimiento funcional para la fase', fase=fase1) tipo2 = Tipo_Item( nombre='requerimiento no funcional', descripcion='representa un requerimiento no funcional para la fase', fase=fase1) tipo3 = Tipo_Item(nombre='caso de uso', descripcion='representa casos de uso para la fase',
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))
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))
proyecto5 = Proyecto(nombre='epsilon project', descripcion='este proyecto corresponde a Bruce Banner', costo_temporal=10, costo_monetario=10, lider=usuario5) proyecto1.save() proyecto2.save() proyecto3.save() proyecto4.save() proyecto5.save() fase1 = Fase(nombre='primera fase', descripcion='primera fase ', proyecto=proyecto1) fase2 = Fase(nombre='segunda fase', descripcion='segunda fase', proyecto=proyecto1) fase3 = Fase(nombre='tercera fase', descripcion='tercera fase', proyecto=proyecto1) fase4 = Fase(nombre='cuarta fase', descripcion='cuarta fase', proyecto=proyecto1) fase5 = Fase(nombre='quinta fase', descripcion='quinta fase', proyecto=proyecto1) fase1.save() fase2.save() fase3.save() fase4.save() fase5.save() tipo1= Tipo_Item(nombre='requerimiento funcional',descripcion='representa un requerimiento funcional para la fase',fase=fase1) tipo2= Tipo_Item(nombre='requerimiento no funcional',descripcion='representa un requerimiento no funcional para la fase',fase=fase1) tipo3= Tipo_Item(nombre='caso de uso',descripcion='representa casos de uso para la fase',fase=fase1) tipo4= Tipo_Item(nombre='diagrama',descripcion='representa cualquier tipo de diagrama',fase=fase1) tipo5= Tipo_Item(nombre='requerimiento de hardware',descripcion='representa una configuracion de hardware',fase=fase1) tipo1.save() tipo2.save() tipo3.save() tipo4.save()