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('./')
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
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('./')
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
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("./")
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("./")