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)
def createLineaBase(): from models import LineaBase from mgrLineaBase import MgrLineaBase from models import Item from mgrItem import MgrItem from models import Fase from mgrFase import MgrFase items = [] item = MgrItem().filtrar('proyecto1-fase1-item2') items.append(item.nombre) item = MgrItem().filtrar('proyecto1-fase1-item4') items.append(item.nombre) faseref = MgrFase().filtrar('proyecto1-fase1') lineaBase = LineaBase(nombre = 'proyecto1-fase1-LB1', descripcion = 'LB1', fase = faseref) MgrLineaBase().guardar(lineaBase) MgrLineaBase().asignarItems(lineaBase.nombre, items) items = [] item = MgrItem().filtrar('proyecto2-fase1-item2') items.append(item.nombre) item = MgrItem().filtrar('proyecto2-fase1-item4') items.append(item.nombre) faseref = MgrFase().filtrar('proyecto2-fase1') lineaBase = LineaBase(nombre= 'proyecto2-fase1-LB1', descripcion = 'LB1', fase = faseref) MgrLineaBase().guardar(lineaBase) MgrLineaBase().asignarItems(lineaBase.nombre, items) items = [] item = MgrItem().filtrar('proyecto2-fase2-item2') items.append(item.nombre) item = MgrItem().filtrar('proyecto2-fase2-item4') items.append(item.nombre) faseref = MgrFase().filtrar('proyecto2-fase2') lineaBase = LineaBase(nombre= 'proyecto2-fase2-LB1', descripcion = 'LB1', fase = faseref) MgrLineaBase().guardar(lineaBase) MgrLineaBase().asignarItems(lineaBase.nombre, items) items = [] item = MgrItem().filtrar('proyecto2-fase2-item4') items.append(item.nombre) item = MgrItem().filtrar('proyecto2-fase2-item6') items.append(item.nombre) faseref = MgrFase().filtrar('proyecto2-fase2') lineaBase = LineaBase(nombre= 'proyecto2-fase2-LB2', descripcion = 'LB1', fase = faseref) MgrLineaBase().guardar(lineaBase) MgrLineaBase().asignarItems(lineaBase.nombre, items)
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 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()