def _do_get_provider_count_and_objs(self, id_fase=None, id_lb=None, **kw): """ Recupera las lineas bases de una fase, o aquellas para las que tenemos algún permiso. """ if id_lb: lb = LB.por_id(id_lb) return 1, [lb] count, lista = super(LineaBaseTableFiller, self).\ _do_get_provider_count_and_objs(**kw) filtrados = [] if id_fase: id_fase = int(id_fase) ap = AlgunPermiso(tipo='Fase', id_fase=id_fase).is_met(request.environ) if ap: lbs = Fase.por_id(id_fase).lineas_bases() return len(lbs), lbs for lb in lista: if AlgunPermiso(tipo=u'Fase').is_met(request.environ): filtrados.append(lb) return len(filtrados), filtrados
def examinar(self, *args, **kw): """ Muestra los elementos que forman parte de la LB """ id_lb = int(args[0]) lb = LB.por_id(id_lb) titulo = u"Ítems de Línea Base: %s" % lb.codigo iplbs = item_lb_table_filler.get_value(lb=lb, **kw) tmpl_context.widget = item_lb_table atras = "../../" return dict(lista_elementos=iplbs, page=titulo, titulo=titulo, modelo="ItemsPorLB", atras=atras )
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_lb = UrlParser.parse_id(request.url, "lbs") lb = LB.por_id(id_lb) titulo = self.title % lb.codigo tmpl_context.widget = self.table historial = self.table_filler.get_value(lb=lb, **kw) return dict(lista_elementos=historial, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action=self.tmp_action, atras="../../" )
def post_buscar(self, *args, **kw): """ Controlador que recibe los parámetros de búsqueda para devolver el resultado esperado. """ id_lb = UrlParser.parse_id(request.url, "lbs") lb = LB.por_id(id_lb) titulo = self.title % lb.codigo tmpl_context.widget = self.table buscar_table_filler = HistorialLBTableFiller(DBSession) buscar_table_filler.filtros = kw historial = buscar_table_filler.get_value(lb=lb, **kw) return dict(lista_elementos=historial, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, comboboxes=self.comboboxes, url_action='../', opciones=self.opciones, atras='../' )
def abrir(self, *args, **kw): """ Abre una LB """ lb = LB.por_id(int(args[0])) user = Usuario.by_user_name(request.credentials["repoze.what.userid"]) op = u"Desbloqueo" for iplb in lb.items: p_item = iplb.propiedad_item if p_item.estado == u"Bloqueado": p_item.estado = u"Aprobado" elif p_item.estado == u"Revisión-Bloq": p_item.estado = u"Revisión-Desbloq" HistorialItems.registrar(user, p_item, op) HistorialLB.registrar(user, lb, 0)# u"Apertura" id_fase = UrlParser.parse_id(request.url, "fases") url = '../' fase = Fase.por_id(id_fase) lb.estado = u"Abierta" fase.cambiar_estado() flash("Se ha abierto la LB") redirect(url)
def post_cerrar(self, *args, **kw): """ Cierra una LB. En caso de no poder cerrar, despliega la página de cerrar. """ id = int(args[0]) lb = LB.por_id(id) habilitados = [] inhabilitados = [] for ilb in lb.items: p_item = ilb.propiedad_item item = Item.por_id(p_item.id_item_actual) if (item.id_propiedad_item == p_item.id_propiedad_item and p_item.estado == u"Aprobado"):#no cambio o se aprobo habilitados.append(p_item) else: inhabilitados.append(p_item) user = Usuario.by_user_name(request.credentials["repoze.what.userid"]) if (inhabilitados == []): lb.estado = u"Cerrada" #registrar en el historial for p_item in habilitados: p_item.estado = u"Bloqueado" HistorialItems.registrar(user, p_item, u"Bloqueo") HistorialLB.registrar(user, lb, 1)# u"Cierre" id_fase = UrlParser.parse_id(request.url, "fases") fase = Fase.por_id(id_fase) fase.cambiar_estado() flash("Linea base cerrada correctamente") redirect('../') #Romper la LB. lb.estado = u"Rota" HistorialLB.registrar(user, lb, 2)# u"Ruptura" page = u"Generar LB parcial a partir de : {codigo}".format(codigo=lb.codigo) tmpl_context.tabla_items_habilitados = ItemGenerarTable(DBSession) tmpl_context.tabla_items = ItemInhabilitadosTable(DBSession) inhabilitados = ItemInhabilitadosTableFiller(DBSession).get_value(items=inhabilitados) lista = [] for i in habilitados: lista.append(Item.por_id(i.id_item_actual)) habilitados = item_generar_table_filler.get_value(items=lista, **kw) atras = "../" existen_habilitados = False if habilitados: existen_habilitados = True return dict(page=page, id=id, atras=atras, habilitados=habilitados, inhabilitados=inhabilitados, existen_habilitados=existen_habilitados )