Ejemplo n.º 1
0
 def crear_revision(self, item, msg):
     """ Crea una revisión cuando al borrar una relación un ítem queda
         huérfano, se le genera una revisión al mismo.
     """
     rv = Revision()
     ids_revisiones = DBSession.query(Revision.id) \
                     .filter(Revision.id_item == item.id).all()
     if ids_revisiones:
         proximo_id_revision = proximo_id(ids_revisiones)
     else:
         proximo_id_revision = "RV1-" + item.id
     rv.id = proximo_id_revision
     rv.item = item
     rv.descripcion = msg
     DBSession.add(rv)
Ejemplo n.º 2
0
 def crear_revision(self, item, msg):
     """
     Crea una nueva revisión y la agrega a un item dado.
     
     @param item: Item al cual se agregará la revisión
     @type item: L{Item}
     @param msg: Mensaje de la revisión
     @type msg: String
     """
     rv = Revision()
     ids_revisiones = DBSession.query(Revision.id) \
             .filter(Revision.id_item == item.id).all()
     if ids_revisiones:
         proximo_id_revision = proximo_id(ids_revisiones)
     else:
         proximo_id_revision = "RV1-" + item.id
     rv.id = proximo_id_revision
     rv.item = item
     rv.descripcion = msg
     DBSession.add(rv)
Ejemplo n.º 3
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('../')