Exemple #1
0
    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'
Exemple #2
0
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))