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'
def crearSolicitudCambios(request, id_fase): """ *Función utilizada para la creación de solicitudes de cambios en el sistema. En ella se debe especificar los ítems que se desean modificar, el motivo expreso de la solicitud y el informe de impacto.* :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 que pertenece la solicitud.. """ fase = Fase.objects.get(pk=id_fase) proyecto = fase.proyecto mensajes = [] tipos = TipoItem.objects.filter(fase=fase) opciones = ItemBase.objects.filter(estado='ELB', tipoitem__in=tipos) if not opciones: mensajes.append('Error al crear la solicitud de cambios. No existen items en Linea Base en esta fase.') error = 1 request.session['messages'] = mensajes request.session['error'] = error return HttpResponseRedirect(reverse('administrarLineaBase.views.workApplication', kwargs={'id_fase': id_fase})) if request.method == 'POST': form = createSCForm(request.POST) if form.is_valid(): solicitud = form.save(commit=False) solicitud.usuario = request.user solicitud.fase = fase solicitud.costo = 0 solicitud.tiempo = 0 asignarItemSolicitud = asignarItemSolicitudForm(request.POST, id_fase=id_fase) # Asigna los items a la solicitud if asignarItemSolicitud.is_valid(): solicitud.save() items = asignarItemSolicitud.get_cleaned_data() for item in items: itemNuevo = ItemBase.objects.get(id=item) itemNuevo.solicitudes.add(solicitud) itemNuevo.save() costo, tiempo = generarCalculoImpacto(itemNuevo.id, solicitud.id) solicitud.costo = solicitud.costo + costo solicitud.tiempo = solicitud.tiempo + tiempo solicitud.save() hilo = threading.Thread(target=enviarNotificacionesComite, args=[solicitud.id]) hilo.setDaemon(True) hilo.start() mensajes.append('Solicitud Creada y Enviada satisfactoriamente al comité de cambios') error = 0 request.session['messages'] = mensajes request.session['error'] = error return HttpResponseRedirect(reverse('administrarLineaBase.views.workApplication', kwargs={'id_fase': id_fase})) form = createSCForm() asignarItemSolicitud = asignarItemSolicitudForm(id_fase=id_fase) return render(request, 'lineabase/createsolicitud.html', {'form': form, 'fase': fase, 'proyecto': proyecto, 'user': request.user, 'asignarItemSolicitud': asignarItemSolicitud, }, context_instance=RequestContext(request))