Пример #1
0
    def dividir(self, **kw):
        """ Permite formar una línea base a partir de dos o más líneas base
            existentes previamente.
        """
        id_proyecto = self.id_fase.split("-")[1]
        if TienePermiso("separar linea base",
                        id_proyecto=id_proyecto,
                        id_fase=self.id_fase).is_met(request.environ):
            if "pk_linea_base" in kw:
                self.id_primera_lb = kw["pk_linea_base"]
                items = DBSession.query(Item).filter(
                    Item.id_linea_base == self.id_primera_lb)
                items_a_mostrar = UnificarItem(items)

            if "seleccionados" in kw:
                lb = LineaBase()
                lb.descripcion = kw["descripcion"]
                ids_lineas_base = DBSession.query(LineaBase.id) \
                                  .filter(LineaBase.id_fase == self.id_fase) \
                                  .all()
                proximo_id_linea_base = proximo_id(ids_lineas_base)
                lb.id = proximo_id_linea_base
                lb.fase = DBSession.query(Fase) \
                          .filter(Fase.id == self.id_fase).one()
                lb.cerrado = False
                lb.consistente = True
                DBSession.add(lb)

                if type(kw["seleccionados"]).__name__ == "unicode":
                    item = DBSession.query(Item) \
                           .filter(Item.id == kw["seleccionados"]).all()
                    for aux in item:
                        aux.linea_base = DBSession.query(LineaBase) \
                                      .filter(LineaBase.id == lb.id).one()
                    consistencia_lb(lb)
                else:
                    for item_seleccionado in kw["seleccionados"]:
                        items = DBSession.query(Item) \
                                .filter(Item.id == item_seleccionado).all()
                        for item in items:
                            item.linea_base = DBSession.query(LineaBase) \
                                              .filter(LineaBase.id == lb.id) \
                                              .one()
                primera_lb = DBSession.query(LineaBase) \
                             .filter(LineaBase.id == self.id_primera_lb).one()
                consistencia_lb(primera_lb)
                redirect('./.')
            d = dict(items=items_a_mostrar, model="Lineas Base")
            d["accion"] = "dividir"
            d["direccion_anterior"] = "./"
            return d
        else:
            flash(u"El usuario no cuenta con los permisos necesarios",
                  u"error")
            redirect('./')
Пример #2
0
    def __actions__(self, obj):
        """ Define las acciones posibles para cada línea base.
        """
        primary_fields = self.__provider__.get_primary_fields(self.__entity__)
        pklist = "/".join(map(lambda x: str(getattr(obj, x)), primary_fields))
        value = "<div>"
        id_proyecto = pklist.split("-")[2]
        linea_base = DBSession.query(LineaBase).filter(LineaBase.id == pklist).one()
        items = DBSession.query(Item).filter(Item.id_linea_base == pklist).all()
        items_a_mostrar = UnificarItem(items)
        cant_items = len(items_a_mostrar)
        consistencia_lb(linea_base)
        fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()
        estado_fase(fase)
        if linea_base.cerrado:
            if TienePermiso("abrir linea base", id_proyecto=id_proyecto, id_fase=self.id_fase).is_met(request.environ):
                value = (
                    value + '<div><a class="abrir_link" '
                    'href="abrir?pk_linea_base=' + pklist + '" '
                    'style="text-decoration:none" TITLE = "Abrir"></a></div>'
                )

        if not linea_base.cerrado:
            if (
                TienePermiso("separar linea base", id_proyecto=id_proyecto, id_fase=self.id_fase).is_met(
                    request.environ
                )
                and cant_items > 1
            ):
                value = (
                    value + '<div><a class="dividir_link" href='
                    '"dividir?pk_linea_base=' + pklist + '" style="text-decoration:'
                    'none" TITLE = "Dividir"></a></div>'
                )

            if linea_base.consistente:
                if TienePermiso("cerrar linea base", id_proyecto=id_proyecto, id_fase=self.id_fase).is_met(
                    request.environ
                ):
                    value = (
                        value + '<div><a class="cerrar_link" href='
                        '"cerrar?pk_linea_base=' + pklist + '" style="text-'
                        'decoration:none" TITLE = "Cerrar"></a></div>'
                    )
        if cant_items >= 1:
            value = (
                value + '<div><a class="item_link" href='
                '"' + pklist + '/items" style="text-decoration:'
                'none" TITLE = "Listar Items"></a></div>'
            )
        value = value + "</div>"
        return value
Пример #3
0
    def unir(self, **kw):
        """ Permite realizar la unión entre dos o más líneas base de manera
            que formen una sola.
        """
        id_proyecto = self.id_fase.split("-")[1]
        if TienePermiso("unir lineas base",
                        id_proyecto=id_proyecto,
                        id_fase=self.id_fase).is_met(request.environ):
            if "seleccionados" in kw:
                lb = LineaBase()
                lb.descripcion = kw["descripcion"]
                ids_lineas_base = DBSession.query(LineaBase.id) \
                                  .filter(LineaBase.id_fase == self.id_fase) \
                                  .all()
                proximo_id_linea_base = proximo_id(ids_lineas_base)
                lb.id = proximo_id_linea_base
                lb.fase = DBSession.query(Fase) \
                          .filter(Fase.id == self.id_fase).one()
                lb.cerrado = False
                lb.consistente = False
                DBSession.add(lb)
                consistente = True
                for lb_seleccionada in kw["seleccionados"]:
                    items = DBSession.query(Item).filter(
                        Item.id_linea_base == lb_seleccionada).all()
                    a_eliminar = DBSession.query(LineaBase) \
                                 .filter(LineaBase.id == lb_seleccionada).one()
                    DBSession.delete(a_eliminar)
                    for item in items:
                        item.linea_base = DBSession.query(LineaBase) \
                                          .filter(LineaBase.id == lb.id).one()
                consistencia_lb(lb)
                DBSession.add(lb)

                redirect('./')
            lineas_base = DBSession.query(LineaBase.id) \
                          .filter(LineaBase.id_fase == self.id_fase) \
                          .filter(LineaBase.cerrado == False).all()

            d = dict(model="Linea Base", accion="./")
            d["lineas_base"] = lineas_base
            d["direccion_anterior"] = "./"
            return d
        else:
            flash(u"El usuario no cuenta con los permisos necesarios",
                  u"error")
            redirect('./')
Пример #4
0
    def __actions__(self, obj):
        """ Define las acciones posibles para cada línea base.
        """
        primary_fields = self.__provider__.get_primary_fields(self.__entity__)
        pklist = '/'.join(map(lambda x: str(getattr(obj, x)), primary_fields))
        value = '<div>'
        id_proyecto = pklist.split("-")[2]
        linea_base = DBSession.query(LineaBase).filter(LineaBase.id == pklist)\
            .one()
        items = DBSession.query(Item).filter(
            Item.id_linea_base == pklist).all()
        items_a_mostrar = UnificarItem(items)
        cant_items = len(items_a_mostrar)
        consistencia_lb(linea_base)
        fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()
        estado_fase(fase)
        if linea_base.cerrado:
            if TienePermiso("abrir linea base",
                            id_proyecto=id_proyecto,
                            id_fase=self.id_fase).is_met(request.environ):
                value = value + '<div><a class="abrir_link" ' \
                'href="abrir?pk_linea_base='+pklist+'" ' \
                'style="text-decoration:none" TITLE = "Abrir"></a></div>'

        if not linea_base.cerrado:
            if TienePermiso("separar linea base", id_proyecto = id_proyecto,
                            id_fase = self.id_fase).is_met(request.environ) \
                            and cant_items > 1:
                value = value + '<div><a class="dividir_link" href=' \
                '"dividir?pk_linea_base='+pklist+'" style="text-decoration:' \
                'none" TITLE = "Dividir"></a></div>'

            if linea_base.consistente:
                if TienePermiso("cerrar linea base",
                                id_proyecto=id_proyecto,
                                id_fase=self.id_fase).is_met(request.environ):
                    value = value + '<div><a class="cerrar_link" href=' \
                    '"cerrar?pk_linea_base='+pklist+'" style="text-' \
                    'decoration:none" TITLE = "Cerrar"></a></div>'
        if cant_items >= 1:
            value = value + '<div><a class="item_link" href=' \
                '"'+pklist+'/items" style="text-decoration:' \
                'none" TITLE = "Listar Items"></a></div>'
        value = value + '</div>'
        return value
Пример #5
0
    def dividir(self, **kw):
        """ Permite formar una línea base a partir de dos o más líneas base
            existentes previamente.
        """
        id_proyecto = self.id_fase.split("-")[1]
        if TienePermiso("separar linea base", id_proyecto=id_proyecto, id_fase=self.id_fase).is_met(request.environ):
            if "pk_linea_base" in kw:
                self.id_primera_lb = kw["pk_linea_base"]
                items = DBSession.query(Item).filter(Item.id_linea_base == self.id_primera_lb)
                items_a_mostrar = UnificarItem(items)

            if "seleccionados" in kw:
                lb = LineaBase()
                lb.descripcion = kw["descripcion"]
                ids_lineas_base = DBSession.query(LineaBase.id).filter(LineaBase.id_fase == self.id_fase).all()
                proximo_id_linea_base = proximo_id(ids_lineas_base)
                lb.id = proximo_id_linea_base
                lb.fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()
                lb.cerrado = False
                lb.consistente = True
                DBSession.add(lb)

                if type(kw["seleccionados"]).__name__ == "unicode":
                    item = DBSession.query(Item).filter(Item.id == kw["seleccionados"]).all()
                    for aux in item:
                        aux.linea_base = DBSession.query(LineaBase).filter(LineaBase.id == lb.id).one()
                    consistencia_lb(lb)
                else:
                    for item_seleccionado in kw["seleccionados"]:
                        items = DBSession.query(Item).filter(Item.id == item_seleccionado).all()
                        for item in items:
                            item.linea_base = DBSession.query(LineaBase).filter(LineaBase.id == lb.id).one()
                primera_lb = DBSession.query(LineaBase).filter(LineaBase.id == self.id_primera_lb).one()
                consistencia_lb(primera_lb)
                redirect("./.")
            d = dict(items=items_a_mostrar, model="Lineas Base")
            d["accion"] = "dividir"
            d["direccion_anterior"] = "./"
            return d
        else:
            flash(u"El usuario no cuenta con los permisos necesarios", u"error")
            redirect("./")
Пример #6
0
    def unir(self, **kw):
        """ Permite realizar la unión entre dos o más líneas base de manera
            que formen una sola.
        """
        id_proyecto = self.id_fase.split("-")[1]
        if TienePermiso("unir lineas base", id_proyecto=id_proyecto, id_fase=self.id_fase).is_met(request.environ):
            if "seleccionados" in kw:
                lb = LineaBase()
                lb.descripcion = kw["descripcion"]
                ids_lineas_base = DBSession.query(LineaBase.id).filter(LineaBase.id_fase == self.id_fase).all()
                proximo_id_linea_base = proximo_id(ids_lineas_base)
                lb.id = proximo_id_linea_base
                lb.fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()
                lb.cerrado = False
                lb.consistente = False
                DBSession.add(lb)
                consistente = True
                for lb_seleccionada in kw["seleccionados"]:
                    items = DBSession.query(Item).filter(Item.id_linea_base == lb_seleccionada).all()
                    a_eliminar = DBSession.query(LineaBase).filter(LineaBase.id == lb_seleccionada).one()
                    DBSession.delete(a_eliminar)
                    for item in items:
                        item.linea_base = DBSession.query(LineaBase).filter(LineaBase.id == lb.id).one()
                consistencia_lb(lb)
                DBSession.add(lb)

                redirect("./")
            lineas_base = (
                DBSession.query(LineaBase.id)
                .filter(LineaBase.id_fase == self.id_fase)
                .filter(LineaBase.cerrado == False)
                .all()
            )

            d = dict(model="Linea Base", accion="./")
            d["lineas_base"] = lineas_base
            d["direccion_anterior"] = "./"
            return d
        else:
            flash(u"El usuario no cuenta con los permisos necesarios", u"error")
            redirect("./")