Exemplo n.º 1
0
class lineaBaseTestCase(TestCase):
    itemTipo1 = None
    item1 = None
    item2 = None
    proyecto1 = None
    fase1 = None
    fase2 = None
    LineaBasePrueba=None
    def setUp(self):
        self.proyecto1 = Proyecto(nombre = 'proyectoPrueba1', estado = Proyecto.E_NOINICIADO)
        self.proyecto1.save()
        self.fase1 = Fase(nombre = 'fasePrueba1', estado = Fase.E_INICIAL, idproyecto = self.proyecto1)
        self.fase1.save()
        self.fase2 = Fase(nombre = 'fasePrueba2', estado = Fase.E_INICIAL, idproyecto = self.proyecto1)
        self.fase2.save()
        self.itemTipo1 = ItemTipos(nombre = 'itemTipo1Prueba1', es_supertipo = 0,idfase = self.fase1)
        self.itemTipo1.save()
        self.item1 = Item(numero = 1,nombre = 'itemPrueba1',descripcion = 'esta es una prueba para lb del item1',estado = Item.E_DESAPROBADO,version = 1,idfase = self.fase1,idtipoitem = self.itemTipo1)
        self.item1.save()
        self.item2 = Item(numero = 1,nombre = 'itemPrueba2',descripcion = 'esta es una prueba para lb del item2',estado = Item.E_DESAPROBADO,version = 1,idfase = self.fase1,idtipoitem = self.itemTipo1)
        self.item2.save()
        
        self.LineaBasePrueba = LineaBase()
        self.LineaBasePrueba.fase = self.fase1
        self.LineaBasePrueba.descripcion = "linea base de prueba "
        self.LineaBasePrueba.save()
        self.LineaBasePrueba.items.add(self.item1)
        self.LineaBasePrueba.items.add(self.item2)
        self.LineaBasePrueba.save()
        
    def test_CargarLineaBaseTest(self):
        
        self.assertEqual('fasePrueba1', ((LineaBase.objects.get(pk=self.LineaBasePrueba.idlineabase)).fase).nombre)
Exemplo n.º 2
0
def generarLineaBase(request, id_proyecto, id_fase):
    """ Recibe un request, se verifica cual es el usuario registrado, el proyecto del cual se solicita,
    la fase en la que se esta trabajando, de acuerdo a si el rol del usuario esta o no relacionado con el proyecto
    y la fase actual, se despliega un formulario para Generar la Linea base, en donde se puede agregar una 
    descripcion de la Linea Base y tambien los items que se pueden incluir en la Linea Base. Una vez que el usuario
    levanta el formulario hacia el servidor, se realizado los controles y las operaciones para poder generar la linea base
    de manera correcta.
    
    @type request: django.http.HttpRequest.
    @param request: Contiene informacion sobre la solicitud web actual que llamo a esta vista.
    
    @type id_proyecto: Integer
    @param id_proyecto: Es el id del proyecto actual en el que se esta trabajando
    
    @type id_fase: Integer
    @param id_fase: Es el id de la fase actual en el que se esta trabajando
    
    @rtype: django.http.HttpResponse
    @return: alerta_linea_base.html, mensaje de exito
    
    @author: Eduardo Gimenez.
    
    """
    
    proyecto = Proyectos.objects.get(id=id_proyecto)
    fase = Fases.objects.get(id=id_fase)
    #Primero verificamos Si el usuario tiene permisos sobre esta Fase del Proyecto
    tiene_permiso = True
    #if tiene_permiso:
    if True:
        #Recibimos el request y verificamos si es POST para generar la Linea Base y hacer los controles correspondientes al formulario
        lineas_base = LineaBase.objects.filter(proyecto = id_proyecto, fase = id_fase)
        numero = len(lineas_base) + 1
        items = ()
        errors = []
        if request.method == 'POST':
            if not request.POST.getlist('Items'):
                errors.append('Debe escoger por lo menos un item')
            if not errors:
                linea_base = LineaBase(numero = numero, proyecto = Proyectos.objects.get(id=id_proyecto), fase = Fases.objects.get(id=id_fase), descripcion = request.POST.get('Descripcion', ''), fecha_creacion = datetime.now())
                linea_base.save()
                for id_item in request.POST.getlist('Items'):
                    item = Items.objects.get(id=id_item)
                    linea_base.items.add(item)
                    item.lb = linea_base.id
                    item.estado = 'Bloqueado'
                    item.save()
                linea_base.save()
                logger.info('Generacion de Linea Base %d de la fase %s del proyecto %s, hecho por %s' % (linea_base.numero, fase.nombre, proyecto.nombre, request.user.username))
                mensaje="Linea Base creada exitosamente"
                ctx = {'mensaje':mensaje, 'proyecto':proyecto, 'fase':fase}
                return render_to_response('lineaBase/linea_base_alerta.html',ctx, context_instance=RequestContext(request))
        else:
            items = Items.objects.filter(Q(proyecto = id_proyecto), Q(is_active = True), Q(fase = id_fase), Q(estado = 'Validado') )
            items = [(item.id, item.nombre) for item in items]  
            itemshabilitados = Items.objects.filter(proyecto_id=id_proyecto, fase_id=id_fase, is_active=True, estado='Habilitado')
            lsb = []
            if itemshabilitados:
                todaslaslineasbase = LineaBase.objects.filter(fase_id=id_fase, is_active=False)
                for lineab in todaslaslineasbase:
                    itemslb = lineab.items.all()
                    for itemh in itemshabilitados:
                        if itemh in itemslb:
                            lsb.append(lineab)
            
            if (not items) and (not lsb):
                 mensaje="Imposible generar Linea Base: No hay items en estado Validado!"
                 ctx = {'mensaje':mensaje, 'proyecto':proyecto, 'fase':fase}
                 return render_to_response('lineaBase/linea_base_alerta.html',ctx, context_instance=RequestContext(request))

            template_name='./lineaBase/generar_linea_base.html'
            return render(request, template_name, {'lineasbase': lsb, 'numero': numero, 'items': items, 'errors': errors, 'proyecto':proyecto, 'fase':fase, 'id_fase': id_fase, 'id_proyecto': id_proyecto})
    else:
        raise PermissionDenied()