Ejemplo n.º 1
0
    def crear_version_sin_relaciones(self, it, id_item):
        """
        Crea una nueva versión de un ítem dado sin sus relaciones.

        @param it: Item a partir del cual se creará una nueva versión.
        @type it: L{Item}
        @param id_item: Id del ítem a reversionar.
        @type id_item: String
        """
        actual = DBSession.query(Item).filter(Item.id == id_item) \
            .order_by(desc(Item.version)).first()
        nueva_version = Item()
        nueva_version.id = it.id
        nueva_version.codigo = it.codigo
        nueva_version.version = actual.version + 1
        nueva_version.nombre = it.nombre
        nueva_version.descripcion = it.descripcion
        nueva_version.estado = u"En desarrollo"
        nueva_version.observaciones = it.observaciones
        nueva_version.prioridad = it.prioridad
        nueva_version.complejidad = it.complejidad
        nueva_version.borrado = it.borrado
        nueva_version.anexo = it.anexo
        nueva_version.tipo_item = it.tipo_item
        nueva_version.revisiones = actual.revisiones
        nueva_version.linea_base = actual.linea_base
        nueva_version.archivos = it.archivos
        return nueva_version    
Ejemplo n.º 2
0
 def crear_version(self, it):
     """ Crea una nueva version del ítem al cual se añade el archivo.
     """
     nueva_version = Item()
     nueva_version.id = it.id
     nueva_version.codigo = it.codigo
     nueva_version.version = it.version + 1
     nueva_version.nombre = it.nombre
     nueva_version.descripcion = it.descripcion
     nueva_version.estado = it.estado
     nueva_version.observaciones = it.observaciones
     nueva_version.prioridad = it.prioridad
     nueva_version.complejidad = it.complejidad
     nueva_version.borrado = it.borrado
     nueva_version.anexo = it.anexo
     nueva_version.tipo_item = it.tipo_item
     nueva_version.linea_base = it.linea_base
     nueva_version.archivos = it.archivos
     for relacion in relaciones_a_actualizadas(it.relaciones_a):
         aux = relacion.id.split("+")
         r = Relacion()
         r.id = "-".join(aux[0].split("-")[0:-1]) + "-" + \
                 unicode(nueva_version.version) + "+" +aux[1] 
         r.item_1 = nueva_version
         r.item_2 = relacion.item_2
     for relacion in relaciones_b_actualizadas(it.relaciones_b):
         r = Relacion()
         aux = relacion.id.split("+")
         r.id = aux[0] + "+" + "-".join(aux[1].split("-")[0:-1]) + "-" + \
                 unicode(nueva_version.version)
         r.item_1 = relacion.item_1
         r.item_2 = nueva_version
     return nueva_version
Ejemplo n.º 3
0
    def crear_version_sin_relaciones(self, it, id_item):
        """
        Crea una nueva versión de un ítem dado sin sus relaciones.

        @param it: Item a partir del cual se creará una nueva versión.
        @type it: L{Item}
        @param id_item: Id del ítem a reversionar.
        @type id_item: String
        """
        actual = DBSession.query(Item).filter(Item.id == id_item) \
            .order_by(desc(Item.version)).first()
        nueva_version = Item()
        nueva_version.id = it.id
        nueva_version.codigo = it.codigo
        nueva_version.version = actual.version + 1
        nueva_version.nombre = it.nombre
        nueva_version.descripcion = it.descripcion
        nueva_version.estado = u"En desarrollo"
        nueva_version.observaciones = it.observaciones
        nueva_version.prioridad = it.prioridad
        nueva_version.complejidad = it.complejidad
        nueva_version.borrado = it.borrado
        nueva_version.anexo = it.anexo
        nueva_version.tipo_item = it.tipo_item
        nueva_version.revisiones = actual.revisiones
        nueva_version.linea_base = actual.linea_base
        nueva_version.archivos = it.archivos
        return nueva_version
Ejemplo n.º 4
0
 def post(self, **kw):
     """ Registra el nuevo ítem creado. """
     i = Item()
     i.descripcion = kw['descripcion']
     i.nombre = kw['nombre']
     i.estado = 'En desarrollo'
     i.observaciones = kw['observaciones']
     i.prioridad = kw['prioridad']
     i.complejidad = kw['complejidad']
     i.version = 1
     i.borrado = False
     caract = DBSession.query(Caracteristica) \
             .filter(Caracteristica.id_tipo_item == kw['tipo_item']).all()
     anexo = dict()
     for nom_car in caract: 
         anexo[nom_car.nombre] = kw[nom_car.nombre]
     i.anexo = json.dumps(anexo)
     ids_items = DBSession.query(Item.id) \
             .filter(Item.id_tipo_item == kw["tipo_item"]).all()
     if ids_items:        
         proximo_id_item = proximo_id(ids_items)
     else:
         proximo_id_item = "IT1-" + kw["tipo_item"]
     i.id = proximo_id_item
     i.tipo_item = DBSession.query(TipoItem) \
             .filter(TipoItem.id == kw["tipo_item"]).one()
     DBSession.add(i)
     i.codigo = i.tipo_item.codigo + "-" + i.id.split("-")[0][2:]
     raise redirect('./')
Ejemplo n.º 5
0
 def crear_version(self, it):
     """ Crea una nueva version del ítem al cual se añade el archivo.
     """
     nueva_version = Item()
     nueva_version.id = it.id
     nueva_version.codigo = it.codigo
     nueva_version.version = it.version + 1
     nueva_version.nombre = it.nombre
     nueva_version.descripcion = it.descripcion
     nueva_version.estado = it.estado
     nueva_version.observaciones = it.observaciones
     nueva_version.prioridad = it.prioridad
     nueva_version.complejidad = it.complejidad
     nueva_version.borrado = it.borrado
     nueva_version.anexo = it.anexo
     nueva_version.tipo_item = it.tipo_item
     nueva_version.linea_base = it.linea_base
     nueva_version.archivos = it.archivos
     for relacion in relaciones_a_actualizadas(it.relaciones_a):
         aux = relacion.id.split("+")
         r = Relacion()
         r.id = "-".join(aux[0].split("-")[0:-1]) + "-" + \
                 unicode(nueva_version.version) + "+" +aux[1]
         r.item_1 = nueva_version
         r.item_2 = relacion.item_2
     for relacion in relaciones_b_actualizadas(it.relaciones_b):
         r = Relacion()
         aux = relacion.id.split("+")
         r.id = aux[0] + "+" + "-".join(aux[1].split("-")[0:-1]) + "-" + \
                 unicode(nueva_version.version)
         r.item_1 = relacion.item_1
         r.item_2 = nueva_version
     return nueva_version
Ejemplo n.º 6
0
 def post(self, **kw):
     """ Registra el nuevo ítem creado. """
     i = Item()
     i.descripcion = kw['descripcion']
     i.nombre = kw['nombre']
     i.estado = 'En desarrollo'
     i.observaciones = kw['observaciones']
     i.prioridad = kw['prioridad']
     i.complejidad = kw['complejidad']
     i.version = 1
     i.borrado = False
     caract = DBSession.query(Caracteristica) \
             .filter(Caracteristica.id_tipo_item == kw['tipo_item']).all()
     anexo = dict()
     for nom_car in caract:
         anexo[nom_car.nombre] = kw[nom_car.nombre]
     i.anexo = json.dumps(anexo)
     ids_items = DBSession.query(Item.id) \
             .filter(Item.id_tipo_item == kw["tipo_item"]).all()
     if ids_items:
         proximo_id_item = proximo_id(ids_items)
     else:
         proximo_id_item = "IT1-" + kw["tipo_item"]
     i.id = proximo_id_item
     i.tipo_item = DBSession.query(TipoItem) \
             .filter(TipoItem.id == kw["tipo_item"]).one()
     DBSession.add(i)
     i.codigo = i.tipo_item.codigo + "-" + i.id.split("-")[0][2:]
     raise redirect('./')
Ejemplo n.º 7
0
    def crear_version(self, it, borrado = None, item_borrado = None):
        """
        Crea una nueva versión de un ítem dado. Permite también borrar
        una relación de esta nueva versión si se especifica.

        @param it: Item a partir del cual se creará una nueva versión.
        @type it: L{Item}
        @param borrado: Relación a eliminar.
        @type borrado: L{Relacion}
        """
        nueva_version = Item()
        nueva_version.id = it.id
        nueva_version.codigo = it.codigo
        nueva_version.version = it.version + 1
        nueva_version.nombre = it.nombre
        nueva_version.descripcion = it.descripcion
        nueva_version.estado = it.estado
        nueva_version.observaciones = it.observaciones
        nueva_version.prioridad = it.prioridad
        nueva_version.complejidad = it.complejidad
        nueva_version.anexo = it.anexo
        nueva_version.revisiones = it.revisiones
        nueva_version.tipo_item = it.tipo_item
        nueva_version.archivos = it.archivos
        if item_borrado:        
            nueva_version.borrado = True
            nueva_version.linea_base = None
        else:
            nueva_version.linea_base = it.linea_base
            nueva_version.borrado = it.borrado 
            for relacion in it.relaciones_a:
                if not relacion == borrado:
                    aux = relacion.id.split("+")
                    r = Relacion()
                    r.id = "-".join(aux[0].split("-")[0:-1]) + "-" + \
                        unicode(nueva_version.version) + "+" +aux[1] 
                    r.item_1 = nueva_version
                    r.item_2 = relacion.item_2
            for relacion in it.relaciones_b:
                if not relacion == borrado:
                    r = Relacion()
                    aux = relacion.id.split("+")
                    r.id = aux[0] + "+" + "-".join(aux[1].split("-")[0:-1]) + \
                        "-" + unicode(nueva_version.version)
                    r.item_1 = relacion.item_1
                    r.item_2 = nueva_version
        return nueva_version
Ejemplo n.º 8
0
    def crear_version(self, it, borrado=None, item_borrado=None):
        """
        Crea una nueva versión de un ítem dado. Permite también borrar
        una relación de esta nueva versión si se especifica.

        @param it: Item a partir del cual se creará una nueva versión.
        @type it: L{Item}
        @param borrado: Relación a eliminar.
        @type borrado: L{Relacion}
        """
        nueva_version = Item()
        nueva_version.id = it.id
        nueva_version.codigo = it.codigo
        nueva_version.version = it.version + 1
        nueva_version.nombre = it.nombre
        nueva_version.descripcion = it.descripcion
        nueva_version.estado = it.estado
        nueva_version.observaciones = it.observaciones
        nueva_version.prioridad = it.prioridad
        nueva_version.complejidad = it.complejidad
        nueva_version.anexo = it.anexo
        nueva_version.revisiones = it.revisiones
        nueva_version.tipo_item = it.tipo_item
        nueva_version.archivos = it.archivos
        if item_borrado:
            nueva_version.borrado = True
            nueva_version.linea_base = None
        else:
            nueva_version.linea_base = it.linea_base
            nueva_version.borrado = it.borrado
            for relacion in it.relaciones_a:
                if not relacion == borrado:
                    aux = relacion.id.split("+")
                    r = Relacion()
                    r.id = "-".join(aux[0].split("-")[0:-1]) + "-" + \
                        unicode(nueva_version.version) + "+" +aux[1]
                    r.item_1 = nueva_version
                    r.item_2 = relacion.item_2
            for relacion in it.relaciones_b:
                if not relacion == borrado:
                    r = Relacion()
                    aux = relacion.id.split("+")
                    r.id = aux[0] + "+" + "-".join(aux[1].split("-")[0:-1]) + \
                        "-" + unicode(nueva_version.version)
                    r.item_1 = relacion.item_1
                    r.item_2 = nueva_version
        return nueva_version
Ejemplo n.º 9
0
    def put(self, *args, **kw):
        """ Registra los cambios realizados a un ítem. """
        nombre_caract = DBSession.query(Caracteristica.nombre) \
                .filter(Caracteristica.id_tipo_item == kw['tipo_item']).all()      
        anexo = dict()
        for nom_car in nombre_caract:
            anexo[nom_car.nombre] = kw[nom_car.nombre]
        anexo = json.dumps(anexo)

        clave_primaria = args[0]
        pk_version = unicode(clave_primaria.split("-")[4])
        pk_id = unicode(clave_primaria.split("-")[0] + "-" + \
                clave_primaria.split("-")[1] + "-" + \
                clave_primaria.split("-")[2] + "-" + \
                clave_primaria.split("-")[3])
        clave = {}
        clave[0] = pk_id
        clave[1] = pk_version        
        it = DBSession.query(Item).filter(Item.id == pk_id).filter( \
                Item.version == pk_version).scalar()
        pks = self.provider.get_primary_fields(self.model)
        for i, pk in enumerate(pks):
            if pk not in kw and i < len(clave):
                kw[pk] = clave[i]
        band = 0
        nueva_version = Item()
        nueva_version.id = it.id
        nueva_version.codigo = it.codigo
        nueva_version.version = int(pk_version) + 1
        nueva_version.nombre = it.nombre
        nueva_version.descripcion = it.descripcion
        nueva_version.estado = u"En desarrollo"
        nueva_version.observaciones = it.observaciones
        nueva_version.prioridad = it.prioridad
        nueva_version.complejidad = it.complejidad
        nueva_version.borrado = it.borrado
        nueva_version.anexo = it.anexo
        if not it.descripcion == kw['descripcion']:
            band = 1
            nueva_version.descripcion = kw['descripcion']
        if not it.nombre == kw['nombre']:
            band = 1
            nueva_version.nombre = kw['nombre']
        if not it.observaciones == kw['observaciones']:
            band = 1
            nueva_version.observaciones = kw['observaciones']
        if not it.prioridad == int(kw['prioridad']):
            band = 1
            nueva_version.prioridad = kw['prioridad']
        if not it.complejidad == int(kw['complejidad']):
            band = 1
            nueva_version.complejidad = kw['complejidad']
        if not it.anexo == anexo:
            band = 1
            nueva_version.anexo = anexo
        
        if band:
            nueva_version.tipo_item = it.tipo_item
            nueva_version.linea_base = it.linea_base
            nueva_version.archivos = it.archivos
            nueva_version.revisiones = it.revisiones
            for relacion in relaciones_a_actualizadas(it.relaciones_a):
                aux = relacion.id.split("+")
                r = Relacion()
                r.id = "-".join(aux[0].split("-")[0:-1]) + "-" + \
                        unicode(nueva_version.version) + "+" +aux[1] 
                r.item_1 = nueva_version
                r.item_2 = relacion.item_2
            for relacion in relaciones_b_actualizadas(it.relaciones_b):
                r = Relacion()
                aux = relacion.id.split("+")
                r.id = aux[0] + "+" + "-".join(aux[1].split("-")[0:-1]) + \
                        "-" + unicode(nueva_version.version)
                r.item_1 = relacion.item_1
                r.item_2 = nueva_version
            DBSession.add(nueva_version)
            r_act = relaciones_a_actualizadas(it.relaciones_a)
            listaux = [r.item_2 for r in r_act]
            ids_items_direc_relacionados_1 = DBSession.query( \
                    Relacion.id_item_2, Relacion.version_item_2) \
                    .filter(Relacion.id_item_1 == pk_id) \
                    .filter(Relacion.version_item_1 == pk_version).all()
            for tupla_id_item_version in (ids_items_direc_relacionados_1):
                id_item = tupla_id_item_version[0]
                version_item = tupla_id_item_version[1]                
                item_revision =  DBSession.query(Item) \
                                .filter(Item.id == id_item) \
                                .filter(Item.version == version_item).one()
                if item_revision in listaux:
                    r = Revision()
                    ids_revisiones = DBSession.query(Revision.id) \
                                .filter(Revision.id_item == id_item).all()
                    if ids_revisiones:
                        proximo_id_revision = proximo_id(ids_revisiones)
                    else:
                        proximo_id_revision = "RV1-" + id_item
                    r.id = proximo_id_revision
                    r.item = item_revision
                    
                    r.descripcion = "Modificacion del item relacionado '\
                                    'directamente: " + pk_id
                    DBSession.add(r)

        else:       
            self.provider.update(self.model, params=kw)        
        redirect('../')
Ejemplo n.º 10
0
    def put(self, *args, **kw):
        """ Registra los cambios realizados a un ítem. """
        nombre_caract = DBSession.query(Caracteristica.nombre) \
                .filter(Caracteristica.id_tipo_item == kw['tipo_item']).all()
        anexo = dict()
        for nom_car in nombre_caract:
            anexo[nom_car.nombre] = kw[nom_car.nombre]
        anexo = json.dumps(anexo)

        clave_primaria = args[0]
        pk_version = unicode(clave_primaria.split("-")[4])
        pk_id = unicode(clave_primaria.split("-")[0] + "-" + \
                clave_primaria.split("-")[1] + "-" + \
                clave_primaria.split("-")[2] + "-" + \
                clave_primaria.split("-")[3])
        clave = {}
        clave[0] = pk_id
        clave[1] = pk_version
        it = DBSession.query(Item).filter(Item.id == pk_id).filter( \
                Item.version == pk_version).scalar()
        pks = self.provider.get_primary_fields(self.model)
        for i, pk in enumerate(pks):
            if pk not in kw and i < len(clave):
                kw[pk] = clave[i]
        band = 0
        nueva_version = Item()
        nueva_version.id = it.id
        nueva_version.codigo = it.codigo
        nueva_version.version = int(pk_version) + 1
        nueva_version.nombre = it.nombre
        nueva_version.descripcion = it.descripcion
        nueva_version.estado = u"En desarrollo"
        nueva_version.observaciones = it.observaciones
        nueva_version.prioridad = it.prioridad
        nueva_version.complejidad = it.complejidad
        nueva_version.borrado = it.borrado
        nueva_version.anexo = it.anexo
        if not it.descripcion == kw['descripcion']:
            band = 1
            nueva_version.descripcion = kw['descripcion']
        if not it.nombre == kw['nombre']:
            band = 1
            nueva_version.nombre = kw['nombre']
        if not it.observaciones == kw['observaciones']:
            band = 1
            nueva_version.observaciones = kw['observaciones']
        if not it.prioridad == int(kw['prioridad']):
            band = 1
            nueva_version.prioridad = kw['prioridad']
        if not it.complejidad == int(kw['complejidad']):
            band = 1
            nueva_version.complejidad = kw['complejidad']
        if not it.anexo == anexo:
            band = 1
            nueva_version.anexo = anexo

        if band:
            nueva_version.tipo_item = it.tipo_item
            nueva_version.linea_base = it.linea_base
            nueva_version.archivos = it.archivos
            nueva_version.revisiones = it.revisiones
            for relacion in relaciones_a_actualizadas(it.relaciones_a):
                aux = relacion.id.split("+")
                r = Relacion()
                r.id = "-".join(aux[0].split("-")[0:-1]) + "-" + \
                        unicode(nueva_version.version) + "+" +aux[1]
                r.item_1 = nueva_version
                r.item_2 = relacion.item_2
            for relacion in relaciones_b_actualizadas(it.relaciones_b):
                r = Relacion()
                aux = relacion.id.split("+")
                r.id = aux[0] + "+" + "-".join(aux[1].split("-")[0:-1]) + \
                        "-" + unicode(nueva_version.version)
                r.item_1 = relacion.item_1
                r.item_2 = nueva_version
            DBSession.add(nueva_version)
            r_act = relaciones_a_actualizadas(it.relaciones_a)
            listaux = [r.item_2 for r in r_act]
            ids_items_direc_relacionados_1 = DBSession.query( \
                    Relacion.id_item_2, Relacion.version_item_2) \
                    .filter(Relacion.id_item_1 == pk_id) \
                    .filter(Relacion.version_item_1 == pk_version).all()
            for tupla_id_item_version in (ids_items_direc_relacionados_1):
                id_item = tupla_id_item_version[0]
                version_item = tupla_id_item_version[1]
                item_revision =  DBSession.query(Item) \
                                .filter(Item.id == id_item) \
                                .filter(Item.version == version_item).one()
                if item_revision in listaux:
                    r = Revision()
                    ids_revisiones = DBSession.query(Revision.id) \
                                .filter(Revision.id_item == id_item).all()
                    if ids_revisiones:
                        proximo_id_revision = proximo_id(ids_revisiones)
                    else:
                        proximo_id_revision = "RV1-" + id_item
                    r.id = proximo_id_revision
                    r.item = item_revision

                    r.descripcion = "Modificacion del item relacionado '\
                                    'directamente: " + pk_id
                    DBSession.add(r)

        else:
            self.provider.update(self.model, params=kw)
        redirect('../')