def createLB(request, id_fase): """ *Función para la creación de Linea Base, la creación de una Linea Base consiste en registrar todos los ítems validados de una fase, e introducirlos a una Linea Base, en donde estos se almacenan en su estado final dentro del proyecto.* :param request: HttpRequest, se utiliza para llamar a la función, es la solicitud de la acción. :param id_fase: Identificador de la Fase, a la cual se encuentra vinculada la Liena Base. :return: Crea una Liena Base y registra en ella todos los ítems validados dentro de la Fase. """ fase = Fase.objects.get(pk=id_fase) tipoitem = TipoItem.objects.filter(fase=fase) items = ItemBase.objects.filter(tipoitem=tipoitem) proyecto = fase.proyecto itemsVAL = items.filter(estado='VAL') messages = [] if itemsVAL: if request.method == 'POST': form = createLBForm(request.POST) if form.is_valid(): lineaBase = form.save(commit=False) lineaBase.fase = fase lineaBase.fecha_creacion = timezone.now() lineaBase.fecha_modificacion = timezone.now() lineaBase.save() for item in itemsVAL: item.estado = 'ELB' item.linea_base = LineaBase.objects.get(pk=lineaBase.id, fase=fase) item.save() # Activamos la siguiente fase al crear la primera linea base cantFases = Fase.objects.filter(proyecto=proyecto).count() if fase.nro_orden != cantFases: ordenNext = fase.nro_orden + 1 faseSgte = Fase.objects.get(proyecto=proyecto, nro_orden=ordenNext) if faseSgte.estado == 'PEN': faseSgte.estado = 'DES' faseSgte.save() messages.append('Linea Base establecida para la fase: ' + fase.nombre) error = 0 request.session['messages'] = messages request.session['error'] = error return HttpResponseRedirect(reverse('administrarFases.views.workphase', kwargs={'id_fase': id_fase})) else: form = createLBForm() return render(request, 'lineabase/createlb.html', {'form': form, 'proyecto': proyecto, 'user': request.user, 'fase':fase, 'itemsVAL': itemsVAL},) else: error = 1 messages.append(u'Error al crear Linea Base. No existen items VALIDADOS en la fase.') request.session['messages'] = messages request.session['error'] = error return HttpResponseRedirect(reverse('administrarFases.views.workphase', kwargs={'id_fase': id_fase}))
def test_createSolicitud_response(self): """ *Test para la vista de creacion de proyectos en el sistema* """ print '\nInicio - Prueba: Creacion de Solicitud' login = self.client.login(username='******', password='******') self.assertTrue(login) proyecto = Proyecto.objects.get(nombre='Proyecto01') fase = Fase.objects.get(nombre='Fase01') fase.proyecto = proyecto fase.save() tipoItem = TipoItem.objects.get(nombre='TipoItem01') tipoItem.fase = fase tipoItem.save() login = self.client.login(username='******', password='******') self.assertTrue(login) project = Proyecto.objects.get(nombre='Proyecto01') fase = Fase.objects.get(nombre='Fase01') fase.proyecto = project fase.save() tipoItem = TipoItem.objects.get(nombre='TipoItem01') print 'Creación de Item' dato_item_exito = { 'usuario': self.user, 'usuario_modificacion': self.user, 'nombre': 'Item01', 'descripcion': 'Esto es un Item de prueba', 'estado': 'VAL', 'fecha_creacion': timezone.now(), 'fecha_modificacion': timezone.now(), 'tipoitem': tipoItem.id, 'complejidad': 10, 'costo': 10, 'tiempo': 10, 'version': 1, 'linea_base': 1, } request = self.factory.post('/createitem/', dato_item_exito) request.user = self.user request.session = {} response = createItem(request, id_fase=fase.id) self.assertEqual(response.status_code, 302, 'Error al crear el Item') item = ItemBase.objects.get(nombre='Item01') print item print 'Item creado exitosamente' print '\nCreación de Linea Base [Exitosa]' datos_LB = { 'observaciones': 'LineaBase01', } form = createLBForm(datos_LB) if form.is_valid(): linea_base = form.save(commit=False) linea_base.fase = fase linea_base.fecha_creacion = '2014-05-24' linea_base.fecha_modificacion = '2014-05-24' linea_base.save() print 'Linea Base creada Exitosamente' else: print form.errors print 'Error al crear la Linea Base' LB = LineaBase.objects.get(observaciones='LineaBase01') print LB.observaciones print '\nCreación de Linea Base [Error Previsto]' datos_LB = { 'obervaciones': 'LineaBase01', } form = createLBForm(datos_LB) if form.is_valid(): linea_base = form.save(commit=False) linea_base.fase = fase linea_base.fecha_creacion = '2014-05-24' linea_base.fecha_modificacion = '2014-05-24' linea_base.save() print 'Linea Base creada Exitosamente' else: print 'Error al crear la Linea Base. El campo "Observaciones" es obligatorio ' print form.errors print '\nCreación de Solicitud de Cambio [Exitosa]' datos_SC = { 'motivo': 'SolicitudCambios01', } form = createSCForm(datos_SC) if form.is_valid(): solicitud = form.save(commit=False) solicitud.fase = fase solicitud.usuario = self.user solicitud.costo = 10 solicitud.tiempo = 10 solicitud.save() print 'Linea Base creada Exitosamente' else: print 'Error al crear la Solicitud de Cambios. El campo "Motivo" es obligatorio ' print form.errors SC = SolicitudCambios.objects.get(motivo='SolicitudCambios01') print 'ID. de la Solicitud Creada: ' + str(SC.id) print '-Motivo: ' +SC.motivo print '-Tiempo: ' + str(SC.tiempo) + '\n-Costo:' + str(SC.costo) item.solicitudes.add(SC) item.save() print '-Items a Modificar : ' + item.nombre print '\nCreación de Solicitud de Cambio [Error Previsto]' datos_SC_error = { 'motivo ': 'SolicitudCambios01', } form = createSCForm(datos_SC_error) if form.is_valid(): solicitud = form.save(commit=False) solicitud.fase = fase solicitud.usuario = self.user solicitud.costo = 10 solicitud.tiempo = 10 solicitud.save() print 'Linea Base creada Exitosamente' else: print 'Error al crear la Solicitud de Cambios. El campo "Motivo" es obligatorio ' print form.errors print '\nFin - Prueba: Creacion de Solicitud\n'