예제 #1
0
파일: views.py 프로젝트: Tzesar/is2
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}))
예제 #2
0
파일: tests.py 프로젝트: Tzesar/is2
    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'