Example #1
0
 def calcularImpacto(self, id_item, direccion):
     nodos = []
     self.construir(nodos,id_item,id_item, direccion)
     impacto = 0
     iman = ItemManager()
     fman = FaseManager()
     for nodo in nodos:
         print nodo.nombre
         impacto = impacto + nodo.complejidad
     print "El impacto es:", impacto
     graph = pydot.Dot(graph_type='digraph')
     count = 0
     for nodo in nodos:
         count = count + 1
     if count == 1:
         for nodo in nodos:
             graph = pydot.Dot(graph_type='digraph')
             fase1 = fman.getNombreById(nodo.fase)
             impresion = nodo.nombre + " - Fase "+ fase1 + " - Costo "+str(nodo.complejidad)
             node_a = pydot.Node(str(impresion),  style= "filled", fillcolor = "white")
             graph.add_node(node_a)
     else:
         for nodo in nodos: 
             for relacion in nodo.relaciones:
                 item = iman.getById(relacion)
                 fase1 = fman.getNombreById(nodo.fase)
                 fase2 = fman.getNombreById(item.id_fase)
                 edge = pydot.Edge(nodo.nombre + " - Fase: "+fase1 + " - Costo: "+str(nodo.complejidad), item.identificador + " - Fase: "+fase2 + " - Costo: "+str(item.complejidad))
                 graph.add_edge(edge)
     pathname = os.path.dirname(sys.argv[0]) 
     ruta = os.path.abspath(pathname)
     ruta = ruta + "/sgp/public/images/grafo.png"
     graph.write_png(ruta)
     return impacto
Example #2
0
 def adjuntar_archivo(self,*args,**kw):
     '''Metodo que obtiene el archivo a adjuntar a un item'''
     try:
         item, navegacion = self.getNavegacionFromIdItem(kw['id_item'])
     except:
         flash(('Direccion no valida.'), 'error')
         raise redirect("/index")     
     if not(Secure().FiltrarByFase(item.id_fase, 'modificacion_item')):
         flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES.'), 'error')
         raise redirect("/index") 
     
     '''Consultar si se debe crear un nueva version del item'''   
     contador = kw['contador']
     id_item = kw['id_item']
     if contador == '0':
         id_item = self.crear_nueva_version(kw['id_item']) #retorna el id de la nueva version del item
         contador = 1
             
     fileitem = kw['datafile']
     if fileitem.filename:
         os.path.basename(fileitem.filename.replace("\\", "/" ))
         f = fileitem.file.read()
         im = ItemManager()
         item = im.getById(id_item)
         im.adjuntarArchivo(item,f,fileitem.filename)
     else:
         print 'No se adjunto ningun archivo'
     print id_item
     raise redirect('/item/adjuntar',id_item= str(id_item), contador = contador)          
Example #3
0
 def getItemsAprobados(self,id_fase):
     '''Obtiene los items desaprobados de una determinada fase
     @param: id_fase
     @return: lista de items aprobados de la fase'''
     im = ItemManager()
     fm = FaseManager()
     items = im.getItemsAprobados(id_fase)
     fase_actual = fm.getById(id_fase)
     lista = []
     if fase_actual.orden != 1 : #Comprobar relaciones de los items 
         for item in items : #por cada item en la lista de items aprobados
             relaciones = self.getByItem(item.id_item) #obtener sus relaciones
             bandera = False
             if relaciones: #Si tiene relaciones
                 for relacion in relaciones:
                     if im.esActual(relacion.id_item1) and im.esActual(relacion.id_item2): #la relacion es valida
                         bandera= True
                         break
                 if bandera:
                     lista.append(item)
     else: #es la primera fase
         lista = items
         
     return lista
         
Example #4
0
 def listo(self,**kw):
     id_item = kw["id_item"]
     id_item = int(id_item)
     im = ItemManager()
     item_listo = im.getById(int(id_item))
     fase_retorno = item_listo.id_fase
     item_listo.estado = 'listo'
     im.update(item_listo)
     raise redirect('/item/items?id_fase='+ str(fase_retorno))   
Example #5
0
 def desaprobar(self,**kw):
     id_item = kw["id_item"]
     id_item = int(id_item)
     im = ItemManager()
     item_aprobar = im.getById(int(id_item))
     fase_retorno = item_aprobar.id_fase
     item_aprobar.estado = 'desaprobado'
     im.update(item_aprobar)
     raise redirect('/item/items?id_fase='+ str(fase_retorno))    
Example #6
0
 def listo(self, **kw):
     id_item = kw["id_item"]
     id_item = int(id_item)
     im = ItemManager()
     item_listo = im.getById(int(id_item))
     fase_retorno = item_listo.id_fase
     item_listo.estado = 'listo'
     im.update(item_listo)
     raise redirect('/item/items?id_fase=' + str(fase_retorno))
Example #7
0
 def desaprobar(self, **kw):
     id_item = kw["id_item"]
     id_item = int(id_item)
     im = ItemManager()
     item_aprobar = im.getById(int(id_item))
     fase_retorno = item_aprobar.id_fase
     item_aprobar.estado = 'desaprobado'
     im.update(item_aprobar)
     raise redirect('/item/items?id_fase=' + str(fase_retorno))
Example #8
0
 def adjuntar_archivo(self,*args,**kw):
     fileitem = kw['datafile']
     if fileitem.filename:
         os.path.basename(fileitem.filename.replace("\\", "/" ))
         f = fileitem.file.read()
         im = ItemManager()
         item = im.getById(kw['id_item'])
         im.adjuntarArchivo(item,f,fileitem.filename)
     else:
         print 'No file was uploaded'
     raise redirect('/item/adjuntar?id_item='+ kw['id_item'])
Example #9
0
 def post_delete(self, *args, **kw):
     '''delete'''
     pm = ItemManager()
     item = pm.getById(args)
     if item.estado != 'finalizado':
         item.estado = 'eliminado'
         item.actual = 'false'
         
     id_fase = item.id_fase
     pm.update(item)
     raise redirect('/item/items?id_fase='+ str(id_fase))
Example #10
0
    def post_delete(self, *args, **kw):
        '''delete'''
        pm = ItemManager()
        item = pm.getById(args)
        if item.estado != 'finalizado':
            item.estado = 'eliminado'
            item.actual = 'false'

        id_fase = item.id_fase
        pm.update(item)
        raise redirect('/item/items?id_fase=' + str(id_fase))
Example #11
0
 def verificar_action(self, obj):
     ''' Verifica si se puede relacionar o no un item
     @param: obj, item que se desea relacionar
     @return: si puede relacionarse o no'''
     im = ItemManager()
     item1 = im.getById(obj.id_item1)
     item2 = im.getById(obj.id_item2)
     if item1.id_linea_base != None or item2.id_linea_base!= None:
         return False
     else:
         return True
Example #12
0
 def adjuntar_archivo(self, *args, **kw):
     fileitem = kw['datafile']
     if fileitem.filename:
         os.path.basename(fileitem.filename.replace("\\", "/"))
         f = fileitem.file.read()
         im = ItemManager()
         item = im.getById(kw['id_item'])
         im.adjuntarArchivo(item, f, fileitem.filename)
     else:
         print 'No file was uploaded'
     raise redirect('/item/adjuntar?id_item=' + kw['id_item'])
Example #13
0
 def buscar_actuales_por_fase(self,id_fase):
     ''' Obtiene las relaciones de los items actuales de una determinada fase '''
     lista = DBSession.query(Relacion).filter((Relacion.id_fase1 == id_fase)
                                              |(Relacion.id_fase2 == id_fase)).all()
     im = ItemManager()
     lista_return = []
     for relacion in lista:
         item1 = im.getById(relacion.id_item1)
         item2 = im.getById(relacion.id_item2)
         if item1.actual == "true" and item2.actual == "true":
             lista_return.append(relacion)           
     return lista_return
Example #14
0
    def __actions__(self, obj):
        """Override this function to define how action links should be displayed for the given record."""
        primary_fields = self.__provider__.get_primary_fields(self.__entity__)
        pklist = '/'.join(map(lambda x: str(getattr(obj, x)), primary_fields))
        estado = obj.estado
        lista = []
        lista.append(str(obj.id_fase))
        lista.append(str(obj.id_item))
        if estado != 'finalizado':
            value = '<div width="10em"><div><a class="edit_link" href="'+pklist+'/edit"  title = "Editar" style="text-decoration:none">edit</a>'\
                  '</div><div>'\
                  '<form method="POST" action="'+pklist+'" class="button-to">'\
                '<input type="hidden" name="_method" value="DELETE" />'\
                '<input title = "Editar" class="delete-button" onclick="return confirm(\'Are you sure?\');" value="delete" type="submit" '\
                'style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0;"/>'\
            '</form></div>'\
            '<div><a href="/item/adjuntar?id_item='+pklist+'" title="Adjuntar" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/adjunto.png" width="17" height="17" /></a></div>'\
            '<div><a href="/item/impacto?id_item='+pklist+'" title="Calcular Impacto" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/calculo_impacto.png" width="17" height="17" /></a></div>'
#            '<div><a href="/item/impacto?id_item='+pklist+'" style="text-decoration:none">Impacto &nbsp;  </a>'\
#            '</div>'
            if estado == "inicial":
                value +='<div><a href="/item/listo?id_item='+pklist+'" title="Listo" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/listo.png" width="17" height="17" /></a></div>'
# 
#                '<div><a href="/item/listo?id_item='+str(obj.id_item)+'" style="text-decoration:none">Listo &nbsp;  </a>'\
#                        '</div>'
            if estado == 'listo':
                value +='<div><a href="/item/aprobar?id_item='+pklist+'" title="Aprobar" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/aprobar.png" width="17" height="17" /></a></div>'\
                        '<div><a href="/item/desaprobar?id_item='+pklist+'" title="Desaprobar" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/desaprobar.png" width="17" height="17" /></a></div>'            
                
#                value += '<div><a href="/item/aprobar?id_item='+str(obj.id_item)+'" style="text-decoration:none">Aprobar &nbsp; </a>'\
#                        '</div>'\
#                        '<div><a href="/item/desaprobar?id_item='+str(obj.id_item)+'" style="text-decoration:none">Desaprobar &nbsp; </a>'\
#                        '</div>'
               
            im = ItemManager()
            versiones = im.getByCodigo(obj.codigo, obj.id_fase)
            cantidad = len(versiones)
#            for version in versiones:
#                cantidad = cantidad +1
            if cantidad > 1 and obj.estado != "finalizado":
                value += '<div><a href="/itemRevertir/obtener?id_item='+pklist+'" title="Revertir" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/revert.png" width="21" height="21" /></a></div>'
#                 '<div><a href="/itemRevertir/obtener?id_item='+str(obj.id_item)+'" style="text-decoration:none">Revertir &nbsp;</a>'\
#                        '</div>'

        else:
            value = '<div></div>'
        value +='</div>'
        return value
Example #15
0
 def desaprobar(self,**kw):
     '''metodo para cambiar el estado de un item a desaprobado'''
     try:
         id_item = int(kw["id_item"])
         item_aprobar, navegacion = self.getNavegacionFromIdItem(id_item)
     except:
         flash(('Direccion no valida.'), 'error')
         raise redirect("/index")
     if not(Secure().FiltrarByFase(item_aprobar.id_fase, 'desaprobar_item')):
         flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES.'), 'error')
         raise redirect("/index")
     im = ItemManager()
     fase_retorno = item_aprobar.id_fase
     item_aprobar.estado = 'desaprobado'
     im.update(item_aprobar)
     raise redirect('/item/items?id_fase='+ str(fase_retorno))    
Example #16
0
 def crear(self, *args, **kw):
     '''crear relaciones'''
     im = ItemManager()
     rm = RelacionManager()
     no_creados=[]
     seleccion = kw['Aceptar']
     
     if seleccion != 'Cancelar': 
         '''validar relaciones'''
         id_item_actual = kw['item']
         item_actual = im.getById(id_item_actual)
         
         id_lista_items = []
         id_lista_items = kw['lista_items']
        
         try:
             id_lista_items.count(1)
         except:
             int = id_lista_items
             id_lista_items = []
             id_lista_items.append(int)
         
         
         #por cada item a relacionar
         for id_item in id_lista_items: 
             item = im.getById(id_item) #obtener el item
             if rm.relacionDuplicada(item_actual,item): #comprobar si es una relacion duplicada
                 no_creados.append(item.identificador)
             else:
                 if item.id_fase == item_actual.id_fase : #son items de la misma fase
                     if not rm.tieneciclos(item_actual, item):#no tiene ciclos
                         rm.add(item_actual,item,'padre-hijo') 
                     else:
                         no_creados.append(item.identificador)
                 else:
                     '''son de fases distintas'''
                     rm.add(item,item_actual, 'antecesor-sucesor')
         if no_creados:
             print no_creados
             largo=True
             if len(no_creados)==1:
                 largo=False
             raise redirect('/relacion/resumen_errores',no_creados=no_creados,id_fase= item_actual.id_fase, largo=largo)
         else:
             raise redirect('/relacion?id_fase='+kw['id_fase'])
     else:
         raise redirect('/relacion?id_fase='+kw['id_fase'])
Example #17
0
    def edit(self, *args, **kw):
        """Display a page to edit the record."""

        im = ItemManager()
        cm = CampoManager()
        item = im.getById(args)
        atributos = item.atributos
        lista = []
        if str(item.id_tipo_item) != '':
            for atributo in atributos:
                campo = cm.getById(atributo.id_campo)
                campoValor = CampoValor()
                campoValor.valor = atributo.valor
                campoValor.campo = campo.nombre
                campoValor.tipo = campo.tipo_dato
                lista.append(campoValor)
        return dict(item=item, campos=lista, id_fase=item.id_fase)
Example #18
0
    def listo(self,**kw):
        '''metodo para cambiar el estado de un item a listo'''

        try:
            id_item = int(kw["id_item"])
            item_listo, navegacion = self.getNavegacionFromIdItem(id_item)
        except:
            flash(('Direccion no valida.'), 'error')
            raise redirect("/index")
        if not(Secure().FiltrarByFase(item_listo.id_fase, 'modificacion_item')):
            flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES.'), 'error')
            raise redirect("/index")
        im = ItemManager()
        fase_retorno = item_listo.id_fase
        item_listo.estado = 'listo'
        im.update(item_listo)
        raise redirect('/item/items',id_fase=fase_retorno)
Example #19
0
 def tieneciclos(self,item_padre, item_hijo):
     ''' Verifica si una relacion contiene ciclos
     @param:item_padre
     @param: item_hijo
     return: si existe un ciclo entre los items'''
     if str(item_padre.id_fase) != str(item_hijo.id_fase):
         return False
     relationes = self.buscar_actuales_por_fase(item_padre.id_fase)
     iman = ItemManager()
     relations = []
     for relacion in relationes:
         item1 = iman.getById(relacion.id_item1)
         item2 = iman.getById(relacion.id_item2)
         if item1.actual == "true" and item2.actual == "true":
             relations.append(relacion)
         
     nodos = []
     bandera1 = 0
     bandera2 = 0
     for relacion in relations:
         if str(relacion.id_item2) == str(item_padre.id_item):
             bandera1 = 1
         if str(relacion.id_item1) == str(item_hijo.id_item):
             bandera2 = 1
         nodo1 = Nodo(str(relacion.id_item1))
         nodo2 = Nodo(str(relacion.id_item2))
         if nodos.count(nodo1) == 0:
             nodos.append(nodo1)
         if nodos.count(nodo2) == 0:
             nodos.append(nodo2)
     if bandera1 != 1 or bandera2 != 1:
         return False
     for nodo in nodos:
         for relacion in relations:
             if str(relacion.id_item1) == nodo.item1:
                 nodo.relaciones.append(str(relacion.id_item2))
     contador = 0
     inicio = ""
     for nodo in nodos:
         contador = contador + 1 
         if nodo.item1 == str(item_hijo.id_item):
             inicio = nodo
     controlador = 0 
     analizados = []
     bool = self.buscarCiclos(str(item_padre.id_item), inicio, nodos,contador, controlador, analizados)
     return bool
Example #20
0
 def edit(self, *args, **kw):
     """Display a page to edit the record."""
     
     im = ItemManager()
     cm = CampoManager()       
     item = im.getById(args)
     atributos = item.atributos
     lista = []
     if str(item.id_tipo_item) != '':
         for atributo in atributos:
             campo = cm.getById(atributo.id_campo)
             campoValor = CampoValor()
             campoValor.valor = atributo.valor
             campoValor.campo = campo.nombre
             campoValor.tipo = campo.tipo_dato
             lista.append(campoValor)
     return dict(item=item, campos = lista, id_fase= item.id_fase)
Example #21
0
 def __actions__(self, obj):
     
     primary_fields = self.__provider__.get_primary_fields(self.__entity__)
     pklist = '/'.join(map(lambda x: str(getattr(obj, x)), primary_fields))
     estado = obj.estado
     lista = []
     lista.append(str(obj.id_fase))
     lista.append(str(obj.id_item))
     lbm = LineaBaseManager()
     estado_lb = ""
     if obj.id_linea_base != None:
         linea_base = lbm.getById(obj.id_linea_base) #Si el item esta en una linea base
         estado_lb = linea_base.estado
     value = '<div>'
     if obj.id_linea_base == None or obj.estado == 'revision' or estado_lb == 'liberado' or (obj.estado == 'listo' and obj.id_linea_base != None):
         if EvaluarPermiso("Modificar/eliminar Item", id_fase = obj.id_fase ).is_met(request.environ):
             value = '<div width="10em"><div><a class="edit_link" href="'+pklist+'/edit"  title = "Editar" style="text-decoration:none">edit</a>'\
                   '</div><div>'\
                   '<form method="POST" action="'+pklist+'" class="button-to">'\
                   '<input type="hidden" name="_method" value="DELETE" />'\
                   '<input title = "Editar" class="delete-button" onclick="return confirm(\'Are you sure?\');" value="delete" type="submit" '\
                   'style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0;"/>'\
                   '</form></div>'\
                   '<div><a href="/item/adjuntar?id_item='+pklist+'" title="Adjuntar" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/adjunto.png" width="17" height="17" /></a></div>'
         value += '<div><a href="/item/impacto?id_item='+pklist+'" title="Calcular Impacto" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/calculo_impacto.png" width="17" height="17" /></a></div>'
         if estado == "inicial" or estado == 'revision' or estado== 'desaprobado':
             if EvaluarPermiso("Modificar/eliminar Item", id_fase = obj.id_fase ).is_met(request.environ):
                 value +='<div><a href="/item/listo?id_item='+pklist+'" title="Listo" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/listo.png" width="17" height="17" /></a></div>'
         if estado == 'listo':
             if EvaluarPermiso("Aprobar/Desaprobar Item", id_fase = obj.id_fase ).is_met(request.environ):
                 value +='<div><a href="/item/aprobar?id_item='+pklist+'" title="Aprobar" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/aprobar.png" width="17" height="17" /></a></div>'\
                     '<div><a href="/item/desaprobar?id_item='+pklist+'" title="Desaprobar" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/desaprobar.png" width="17" height="17" /></a></div>'  
            
         im = ItemManager()
         versiones = im.getByCodigo(obj.codigo, obj.id_fase)
         cantidad = len(versiones)
         if cantidad > 1 and obj.estado != "finalizado":
             if EvaluarPermiso("Modificar/eliminar Item", id_fase = obj.id_fase ).is_met(request.environ):
                 value += '<div><a href="/itemRevertir/?id_item='+pklist+'" title="Revertir" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/revert.png" width="21" height="21" /></a></div>'
     else:
         value += '<div><a href="/item/impacto?id_item='+pklist+'" title="Calcular Impacto" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/calculo_impacto.png" width="17" height="17" /></a></div>'
     if ItemManager().sePuedeRelacionar(obj) and  EvaluarPermiso("Crear Relacion", id_fase = obj.id_fase ).is_met(request.environ):
         value+= '<div><a href="/relacion/newRelacion?id_item='+pklist+'" title="Relacionar" style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0 5 0 0;" ><img src="/images/relaciones.png" width="17" height="17" /></a></div>'
     value +='</div>'
     return value
Example #22
0
    def __actions__(self, obj):
        """Override this function to define how action links should be displayed for the given record."""
        primary_fields = self.__provider__.get_primary_fields(self.__entity__)
        pklist = '/'.join(map(lambda x: str(getattr(obj, x)), primary_fields))
        estado = obj.estado
        lista = []
        lista.append(str(obj.id_fase))
        lista.append(str(obj.id_item))
        if estado != 'finalizado':
            value = '<div><div><a class="edit_link" href="'+pklist+'/edit" style="text-decoration:none">edit</a>'\
                  '</div><div>'\
                  '<form method="POST" action="'+pklist+'" class="button-to">'\
                '<input type="hidden" name="_method" value="DELETE" />'\
                '<input class="delete-button" onclick="return confirm(\'Are you sure?\');" value="delete" type="submit" '\
                'style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0;"/>'\
            '</form>'\
            '<div><a href="/item/impacto?id_item='+pklist+'" style="text-decoration:none">Impacto &nbsp;  </a>'\
            '</div>'
            if estado == "inicial":
                value += '<div><a href="/item/listo?id_item='+str(obj.id_item)+'" style="text-decoration:none">Listo &nbsp;  </a>'\
                        '</div>'
            if estado == 'listo':
                value += '<div><a href="/item/aprobar?id_item='+str(obj.id_item)+'" style="text-decoration:none">Aprobar &nbsp; </a>'\
                        '</div>'\
                        '<div><a href="/item/desaprobar?id_item='+str(obj.id_item)+'" style="text-decoration:none">Desaprobar &nbsp; </a>'\
                        '</div>'

            im = ItemManager()
            versiones = im.getByCodigo(obj.codigo)
            cantidad = 0
            for version in versiones:
                cantidad = cantidad + 1
            print "cantidad", cantidad
            if cantidad > 1 and obj.estado != "finalizado":
                value += '<div><a href="/itemRevertir/obtener?id_item='+str(obj.id_item)+'" style="text-decoration:none">Revertir &nbsp;</a>'\
                        '</div>'

        else:
            value = '<div><div>'\
                  '</div><div>'\
                  '<form>'\
                  '</form>'
        value += '</div></div>'
        return value
Example #23
0
    def post(self,*args, **kw):
        '''New'''
        p = Item()
        pm = ItemManager()
        params = kw
        complejidad = [1,2,3,4,5,6,7,8,9,10]

        if params['tipo_items'] != '-1':
            ti = TipoItemManager()
            tipo= ti.getById(params['tipo_items'])
            campos = tipo.campos
            error, lista = self.verificarCampos(campos, **kw)
            if error:
                return dict(value=kw, model=self.model.__name__,campos = lista,id_fase=params['id_fase'],tipo_items=kw['tipo_items'], comp = complejidad,i =kw['identificador'],o=kw['observacion'], c = int(params['complejidad']), d =kw['descripcion'])
            if pm.existeIdentificador(params['identificador'],int(params['id_fase'])):
                flash(('Error: Ya existe un item con el nombre <<' + params['identificador'] + '>> en esta fase.'), 'Error')
                return dict(value=kw, model=self.model.__name__,campos = lista,id_fase=params['id_fase'],tipo_items=kw['tipo_items'], comp = complejidad,i ="",o=kw['observacion'], c = int(params['complejidad']), d =kw['descripcion'])
            

        p.identificador = params['identificador']
        p.observacion = params['observacion']
        p.estado = 'inicial'
        p.complejidad = params['complejidad']
        p.descripcion = params['descripcion']
        p.id_fase = int(session['id_fase'])
        p.codigo = pm.generar_codigo(int(session['id_fase']), int(params['tipo_items']))
        p.version = 1
        p.actual = 'true'
        
        if params['tipo_items'] != '-1':
            ti = TipoItemManager()
            tipo= ti.getById(params['tipo_items'])
            p.tipo = tipo
            
        pm.add(p)

        if params['tipo_items'] != '-1':
            ti = TipoItemManager()
            tipo= ti.getById(params['tipo_items'])
            campos = tipo.campos
            for campo in campos:   
                nombre_campo = campo.nombre
                valor = params[nombre_campo]   
                pm.addAtributo(params['identificador'],params['id_fase'],1,campo.id_campo,valor)  
                
                  
        item = pm.getByIdentificadorFaseVersion(params['identificador'],params['id_fase'],1)        
        '''Adjuntar nuevos Archivos'''
        if params['submit'] == 'Adjuntar':
            '''Hay que adjuntar archivos''' 
            id_item = item.id_item
            raise redirect('/item/adjuntar?id_item='+ str(id_item))            
      
        raise redirect('/item/items?id_fase='+ params['id_fase'])
Example #24
0
 def validar(self,**kw):
     if not 'id_linea_base' in kw:
         flash(('Direccion no valida'), 'error')
         raise redirect("/index") 
     lbm = LineaBaseManager()
     im = ItemManager()
     try:
         linea_base = lbm.getById(kw['id_linea_base'])
     except:
         flash(('Direccion no valida'), 'error')
         raise redirect("/index")             
     fase = linea_base.fase        
     for item in linea_base.items:
             item.estado = 'finalizado'
             im.update(item)
         
     linea_base.estado = 'valido'
     lbm.update(linea_base)
     raise redirect('/lineaBase?id_fase='+str(fase))
Example #25
0
 def post (self, **kw):
     linea_base = LineaBase()
     lbm = LineaBaseManager()
     im = ItemManager()
     id_items = kw['lista_items'] #lista de id_items que formaran parte de la LB
     for id in id_items:
         item = im.getById(id)
         item.estado = 'finalizado'
         im.update(item)
         
         linea_base.items.append(item)
     linea_base.estado='valido'
     linea_base.usuario = session['id_usuario']
     linea_base.fecha = datetime.datetime.now()
     linea_base.fase = kw['id_fase']
     
     lbm.add(linea_base)
     
     return 'LB Creada con exito'
Example #26
0
 def newRelacion(self, *args, **kw):
     """Display a page to show a new record."""
     rm = ItemManager()
     fm = FaseManager()
     id_fase = kw['id_fase']
     items1 = rm.getItemsFaseActual(id_fase)
     items = rm.getItemsARelacionar(id_fase)
     items2 = []
     
     for item in items:
         fase = fm.getNombreById(item.id_fase)
         i = ItemARelacionar()
         i.identificador = item.identificador
         i.fase = fase
         i.id_item = item.id_item
        
         items2.append(i)
         
     return dict(value=kw, model=self.model.__name__, items1=items1, items2= items2, id_fase = kw['id_fase'])
Example #27
0
 def post_delete(self, *args, **kw):
     '''Metodo que elimina un item'''
     try:
         item, navegacion = self.getNavegacionFromIdItem(args[0])
     except:
         flash(('Direccion no valida.'), 'error')
         raise redirect("/index")
     if not(Secure().FiltrarByFase(item.id_fase, 'modificacion_item')):
         flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES.'), 'error')
         raise redirect("/index")
     pm = ItemManager()
     if item.estado != 'finalizado':
         item.estado = 'eliminado'
         item.actual = 'false'
         item.id_linea_base = None
         
     id_fase = item.id_fase
     pm.update(item)
     transaction.begin()
     rm = RelacionManager()
     lbm = LineaBaseManager()
     relaciones = rm.getByItem(args)
     '''Marcar para Revision'''
     for relacion in relaciones:
         transaction.begin()
         if relacion.id_item1 == args:
             item_revision = pm.getById(relacion.id_item2)
         else:
             item_revision = pm.getById(relacion.id_item1)
         
         item_revision.estado = 'revision'
         if item_revision.id_linea_base != None:
             linea_base = lbm.getById(item_revision.id_linea_base)
             linea_base.estado = 'no valido'
             lbm.update(linea_base)
         transaction.commit() 
            
     '''Eliminar Relaciones'''
     for relacion in relaciones:
         rm.delete(relacion)
     transaction.commit()
     raise redirect('/item/items',id_fase=id_fase, navegacion=navegacion)
Example #28
0
 def liberar(self,**kw):
     if not 'id_linea_base' in kw:
         flash(('Direccion no valida'), 'error')
         raise redirect("/index") 
     lbm = LineaBaseManager()
     im = ItemManager()
     try:
         linea_base = lbm.getById(kw['id_linea_base'])
     except:
         flash(('Direccion no valida'), 'error')
         raise redirect("/index")             
     fase = linea_base.fase
     if not(Secure().FiltrarByFase(fase, 'liberar_lb')):
         flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES'), 'error')
         raise redirect("/index")            
     for item in linea_base.items:
             item.estado = 'aprobado' #para poder editar los items
             im.update(item)
         
     linea_base.estado = 'liberado'
     lbm.update(linea_base)
     raise redirect('/lineaBase?id_fase='+str(fase))
Example #29
0
 def construir(self, nodos,id_item,target,direccion):
     for elemento in nodos:
         if elemento.item == id_item:
             return
     im = ItemManager()
     rm = RelacionManager()
     relations = rm.getByItem(id_item)
     relaciones = []
     for relacion in relations:
         item1 = im.getById(relacion.id_item1)
         item2 = im.getById(relacion.id_item2)
         if target != id_item:
             if item1.actual == "true" and item2.actual == "true":
                 relaciones.append(relacion)
         else:
             if direccion == "adelante" or direccion == "total":
                 if item1.actual == "true" and item2.actual == "true" and relacion.id_item1 == target:
                     relaciones.append(relacion)
             if direccion == "atras" or direccion == "total":
                 if item1.actual == "true" and item2.actual == "true" and relacion.id_item2 == target:
                     relaciones.append(relacion)
     nodo = Nodo(id_item)
     item = im.getById(id_item)
     nodo.complejidad = item.complejidad
     nodo.nombre = item.identificador
     nodo.fase = item.id_fase
     analizar = []
     for relacion in relaciones:
         if relacion.id_item1 == nodo.item:
             nodo.relaciones.append(relacion.id_item2)
             analizar.append(relacion.id_item2)
         else:
             analizar.append(relacion.id_item1)
     nodos.append(nodo)
     for elemento in analizar:
         self.construir(nodos,elemento, target, direccion)
Example #30
0
 def edit(self, *args, **kw):
     """Display a page to edit the record."""
     print "Edit item"
     im = ItemManager()
     cm = CampoManager()       
     item = im.getById(args)
     atributos = item.atributos
     print len(atributos)
     lista = []
     complejidad = [1,2,3,4,5,6,7,8,9,10]
     print ("Codigo item: "+ item.codigo)
     print ("Tipo item: "+ str(item.id_tipo_item))
     if str(item.id_tipo_item) != '':
         for atributo in atributos:
             campo = cm.getById(atributo.id_campo)
             campoValor = listaCampos()
             campoValor.valor = atributo.valor
             campoValor.nombre = campo.nombre
             campoValor.tipo_dato = campo.tipo_dato
             campoValor.error=""
             lista.append(campoValor)
         print "lista campos"
         print lista
     return dict(id_item=item.id_item, item=item, campos = lista, id_fase= item.id_fase, comp=complejidad)
Example #31
0
    def post(self, *args, **kw):
        '''New'''
        p = Item()
        pm = ItemManager()
        cm = CodigoManager()
        params = kw

        p.identificador = params['identificador']
        p.observacion = params['observacion']
        p.estado = 'inicial'
        p.complejidad = params['complejidad']
        p.descripcion = params['descripcion']
        p.id_fase = int(session['id_fase'])
        p.codigo = pm.generar_codigo(int(session['id_fase']),
                                     int(params['tipo_items']))
        p.version = 1
        p.actual = 'true'

        if params['tipo_items'] != '-1':
            ti = TipoItemManager()
            tipo = ti.getById(params['tipo_items'])
            p.tipo = tipo

        pm.add(p)

        if params['tipo_items'] != '-1':
            ti = TipoItemManager()
            tipo = ti.getById(params['tipo_items'])
            campos = tipo.campos
            for campo in campos:
                nombre_campo = campo.nombre
                valor = params[nombre_campo]
                pm.addAtributo(params['identificador'], params['id_fase'], 1,
                               campo.id_campo, valor)

        item = pm.getByIdentificadorFaseVersion(params['identificador'],
                                                params['id_fase'], 1)
        '''Adjuntar nuevos Archivos'''
        if params['submit'] == 'Adjuntar':
            '''Hay que adjuntar archivos'''
            id_item = item.id_item
            raise redirect('/item/adjuntar?id_item=' + str(id_item))

        raise redirect('/item/items?id_fase=' + params['id_fase'])
Example #32
0
 def post (self, **kw):
     """Agrega una nueva linea base a la base de datos"""
         
     if not 'id_fase' in kw:
         flash(('Direccion no valida'), 'error')
         raise redirect("/index")
     if not(Secure().FiltrarByFase(int(kw['id_fase']),'crear_lb')):
         flash(('USTED NO CUENTA CON PERMISOS SUFICIENTES'), 'error')
         raise redirect("/index")
     if kw['Aceptar']=="Cancelar":
         raise redirect("/lineaBase", id_fase=kw['id_fase'])        
     linea_base = LineaBase()
     lbm = LineaBaseManager()
     im = ItemManager()
     fm = FaseManager()
     id_items = session['items_lb'] #lista de id_items que formaran parte de la LB
     try:
         id_items.sort()
     except:
         id_items=[]
         id_items.append(session['items_lb'])
     
     linea_base.estado='valido'
     linea_base.usuario = session['id_usuario'].id_usuario
     fecha = datetime.date.today()
     linea_base.fecha = fecha
    
     linea_base.fase = kw['id_fase']
     
     for id in id_items:
         item = im.getById(id)
         linea_base.items.append(item)
     
     lbm.add(linea_base)
     
     for id in id_items:
         item=im.getById(int(id))
         item.estado = 'finalizado'
         im.update(item)
         
     '''Cambiar estado de fases'''
     if im.fase_finalizada(kw['id_fase']):
         fm.finalizar_fase(kw['id_fase'])
     else:
         fm.fase_en_desarrollo(kw['id_fase'])
     fm.desarrollar_fase_siguiente(kw['id_fase'])
     
     
     raise redirect('/lineaBase?id_fase='+str(kw["id_fase"]))
Example #33
0
    def post(self,*args, **kw):
        '''New'''
        p = Item()
        pm = ItemManager()
        cm = CodigoManager()
        params = kw
        
        p.identificador = params['identificador']
        p.observacion = params['observacion']
        p.estado = 'inicial'
        p.complejidad = params['complejidad']
        p.descripcion = params['descripcion']
        p.id_fase = int(session['id_fase'])
        p.codigo = pm.generar_codigo(int(session['id_fase']), int(params['tipo_items']))
        p.version = 1
        p.actual = 'true'
        
        if params['tipo_items'] != '-1':
            ti = TipoItemManager()
            tipo= ti.getById(params['tipo_items'])
            p.tipo = tipo
            
        pm.add(p)

        if params['tipo_items'] != '-1':
            ti = TipoItemManager()
            tipo= ti.getById(params['tipo_items'])
            campos = tipo.campos
            for campo in campos:   
                nombre_campo = campo.nombre
                valor = params[nombre_campo]   
                pm.addAtributo(params['identificador'],params['id_fase'],1,campo.id_campo,valor)  
                
                  
        item = pm.getByIdentificadorFaseVersion(params['identificador'],params['id_fase'],1)        
        '''Adjuntar nuevos Archivos'''
        if params['submit'] == 'Adjuntar':
            '''Hay que adjuntar archivos''' 
            id_item = item.id_item
            raise redirect('/item/adjuntar?id_item='+ str(id_item))            
      
        raise redirect('/item/items?id_fase='+ params['id_fase'])
Example #34
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     pm = ItemManager()
     Campoes = pm.buscar_por_fase(self.id_fase)
     return len(Campoes), Campoes
Example #35
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     pm = ItemManager()
     Campoes = pm.buscar_por_fase(self.id_fase)
     return len(Campoes), Campoes  
Example #36
0
    def put(self, *args, **kw):
        '''update'''

        params = kw
        #        print params['submit']
        pm = ItemManager()
        item_viejo = pm.getById(int(args[0]))
        item_nuevo = Item()

        identificador = params['identificador']
        item_nuevo.identificador = identificador
        item_nuevo.observacion = params['observacion']
        item_nuevo.estado = item_viejo.estado
        item_nuevo.complejidad = params['complejidad']
        item_nuevo.descripcion = params['descripcion']
        item_nuevo.id_fase = item_viejo.id_fase

        id_fase = item_viejo.id_fase
        item_nuevo.codigo = item_viejo.codigo
        item_nuevo.version = item_viejo.version + 1
        item_nuevo.actual = 'true'
        item_viejo.actual = 'false'
        item_nuevo.tipo = item_viejo.tipo
        tipo_item = item_viejo.id_tipo_item

        version = item_nuevo.version
        pm.add(item_nuevo)
        pm.update(item_viejo)
        '''Copiar los campos'''
        if tipo_item:
            ti = TipoItemManager()
            tipo = ti.getById(tipo_item)
            campos = tipo.campos
            for campo in campos:
                nombre_campo = campo.nombre
                valor = params[nombre_campo]
                pm.addAtributo(identificador, id_fase, version, campo.id_campo,
                               valor)

        item = pm.getByIdentificadorFaseVersion(identificador, id_fase,
                                                version)  #Item_nuevo

        item_viejo = pm.getById(int(args[0]))
        '''Copiar los adjuntos'''
        if item_viejo.adjuntos:
            for adjunto in item_viejo.adjuntos:
                pm.copiarAdjunto(item, adjunto)

        pm.update(item)
        pm.update(item_viejo)

        item = pm.getByIdentificadorFaseVersion(identificador, id_fase,
                                                version)  #Item_nuevo
        '''Adjuntar nuevos Archivos'''
        if params['submit'] == 'Adjuntar':
            '''Hay que adjuntar archivos'''
            id_item = item.id_item
            raise redirect('/item/adjuntar?id_item=' + str(id_item))

        raise redirect('/item/items?id_fase=' + str(id_fase))
Example #37
0
 def getHijos(self):
     im=ItemManager()
     hijos = im.getHijos(2)
     return hijos
Example #38
0
 def adjuntar(self,*args,**kw):
     im = ItemManager()
     item = im.getById(kw['id_item'])
     return dict(page='index', id_item = kw['id_item'], id_fase= item.id_fase)
Example #39
0
 def put(self, *args, **kw):
     '''update'''     
     params = kw
     pm=ItemManager()
     item_viejo = pm.getById(int(kw['id_item']))
     complejidad = [1,2,3,4,5,6,7,8,9,10]        
     if item_viejo.id_tipo_item != '-1':
         ti = TipoItemManager()
         tipo= ti.getById(item_viejo.id_tipo_item)
         campos = tipo.campos
         error, lista = self.verificarCampos(campos, **kw)
         print "despues del error"
         if error:
             print "Error en los campos"
             nuevo = self.getNuevo(item_viejo,**kw)
             return dict(id_item=item_viejo.id_item, item=nuevo, campos = lista, id_fase= item_viejo.id_fase, comp=complejidad)
     print "Sin error en la actualizacion del item"
     item_nuevo = Item()
     
     identificador = params['identificador']
     item_nuevo.identificador = identificador
     item_nuevo.observacion = params['observacion']
     item_nuevo.estado = item_viejo.estado
     item_nuevo.complejidad = params['complejidad']
     item_nuevo.descripcion = params['descripcion']
     item_nuevo.id_fase = item_viejo.id_fase
     
     id_fase = item_viejo.id_fase
     item_nuevo.codigo = item_viejo.codigo
     item_nuevo.version = item_viejo.version + 1
     item_nuevo.actual = 'true'
     item_viejo.actual = 'false'
     item_nuevo.tipo = item_viejo.tipo
     tipo_item = item_viejo.id_tipo_item
     
     version = item_nuevo.version
     pm.add(item_nuevo)
     pm.update(item_viejo)
     
     '''Copiar los campos'''
     if tipo_item :
         ti = TipoItemManager()
         tipo= ti.getById(tipo_item)
         campos = tipo.campos
         for campo in campos:
             nombre_campo = campo.nombre
             valor = params[nombre_campo]   
             pm.addAtributo(identificador,id_fase,version,campo.id_campo,valor)  
             
     item = pm.getByIdentificadorFaseVersion(identificador,id_fase,version) #Item_nuevo
     
     item_viejo = pm.getById(int(kw['id_item']))
     '''Copiar los adjuntos'''
     if item_viejo.adjuntos :
         for adjunto in item_viejo.adjuntos:
             pm.copiarAdjunto(item,adjunto)
             
     pm.update(item)
     pm.update(item_viejo)    
     
     item = pm.getByIdentificadorFaseVersion(identificador,id_fase,version) #Item_nuevo
     '''Adjuntar nuevos Archivos'''
     if params['submit'] == 'Adjuntar':
         '''Hay que adjuntar archivos''' 
         id_item = item.id_item
         raise redirect('/item/adjuntar?id_item='+ str(id_item))
     print "antes del raise - put item"
     raise redirect('/item/items?id_fase='+ str(id_fase))
Example #40
0
 def adjuntar(self, *args, **kw):
     im = ItemManager()
     item = im.getById(kw['id_item'])
     return dict(page='index', id_item=kw['id_item'], id_fase=item.id_fase)
Example #41
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     pm = ItemManager()
     Items = pm.buscar(self.buscado,self.id_fase)
     return len(Items), Items   
Example #42
0
 def revertir(self,*args,**kw):
     id_item = kw["id_item"]
     id_item = int(id_item)
     im = ItemManager()
     transaction.begin()
     item_revertir = im.getById(id_item)
     item_nuevo = Item()
     item_nuevo.codigo = item_revertir.codigo
     item_nuevo.identificador = item_revertir.identificador
     item_nuevo.observacion = item_revertir.observacion
     item_nuevo.estado = "inicial"
     item_nuevo.complejidad = item_revertir.complejidad
     item_nuevo.id_fase = item_revertir.id_fase
     item_nuevo.id_tipo_item = item_revertir.id_tipo_item
     item_nuevo.descripcion = item_revertir.descripcion
     items_de_fase = im.buscar_por_fase(item_revertir.id_fase)
     id_fase = item_revertir.id_fase
     version = 0
     for item in items_de_fase:
         if item.version > version:
             version = item.version
         if item.codigo == item_revertir.codigo and item.actual == "true": 
             item.actual = "false"
     version = version + 1
     item_nuevo.version = version
     item_nuevo.actual = 'true'
     print "version",version
     im.add(item_nuevo)
     transaction.commit()
     
     item_viejo = im.getById(id_item)
     identificador = item_viejo.identificador
     
     tipo_item = item_viejo.id_tipo_item
     if tipo_item :
         for atributo in item_viejo.atributos:
             id_campo = atributo.id_campo
             valor = atributo.valor
             im.addAtributo(identificador,id_fase,version,id_campo,valor)  
     im.update(item_viejo)
     
     item_viejo = im.getById(id_item)
     item = im.getByIdentificadorFaseVersion(identificador,id_fase,version) #Item_nuevo
     
     '''Copiar los adjuntos'''
     if item_viejo.adjuntos :
         for adjunto in item_viejo.adjuntos:
             im.copiarAdjunto(item,adjunto)
     im.update(item)
     
     
     raise redirect('/item/items?id_fase='+ str(id_fase))
     
     
Example #43
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     im = ItemManager()
     item = im.getById(self.id_item)
     Campoes = im.getAnteriores(item.codigo)
     return len(Campoes), Campoes  
Example #44
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     pm = ItemManager()
     Items = pm.buscar(self.buscado, self.id_fase)
     return len(Items), Items