def update_params(self, d): """ @param d: diccionario con las opciones posibles de ítems. @return: d con los valores correctos de ítems posibles. """ super(ItemsField, self).update_params(d) id_fase = unicode(request.url.split("/")[-3]) ids_tipos_item = DBSession.query(TipoItem.id).filter(TipoItem.id_fase == id_fase) items = ( DBSession.query(Item) .filter(Item.id_tipo_item.in_(ids_tipos_item)) .filter(Item.id_linea_base == None) .filter(Item.borrado == False) .filter(Item.revisiones == None) .all() ) items_a_mostrar = UnificarItem(items) aux = list() for item in reversed(items_a_mostrar): if item.estado != u"Aprobado" or es_huerfano(item): items_a_mostrar.remove(item) for item in items_a_mostrar: aux.append(item.id + "/" + str(item.version)) lista = [x for x in d["options"] if x[0] in aux] d["options"] = lista
def buscar(self, **kw): """ Lista las líneas base de acuerdo a un criterio de búsqueda introducido por el usuario. """ buscar_table_filler = LineaBaseTableFiller(DBSession) if "parametro" in kw: buscar_table_filler.init(kw["parametro"], self.id_fase) else: buscar_table_filler.init("", self.id_fase) tmpl_context.widget = self.table value = buscar_table_filler.get_value() d = dict(value_list=value, model="Lineas Base") d["accion"] = "./buscar" d["permiso_crear"] = TienePermiso("crear linea base", id_fase=self.id_fase).is_met(request.environ) d["permiso_unir"] = TienePermiso("unir lineas base", id_fase=self.id_fase).is_met(request.environ) cant = ( DBSession.query(LineaBase) .filter(LineaBase.cerrado == False) .filter(LineaBase.id_fase == self.id_fase) .count() ) if cant < 2: d["lineas_base"] = False else: d["lineas_base"] = True items = ( DBSession.query(Item) .filter(Item.id_tipo_item.contains(self.id_fase)) .filter(Item.borrado == False) .filter(Item.id_linea_base == None) .filter(Item.estado == u"Aprobado") .all() ) aux = [] for item in items: for item_2 in items: if item.id == item_2.id: if item.version > item_2.version: aux.append(item_2) elif item.version < item_2.version: aux.append(item) items = [i for i in items if i not in aux and not es_huerfano(i)] cant_items = len(items) if cant_items == 0: d["permiso_crear"] = False d["direccion_anterior"] = "../.." return d
def get_all(self, *args, **kw): """Lista las líneas base de acuerdo a lo establecido en L{linea_base_controller.LineaBaseTableFiller._do_get_provider_count_and_objs}. """ linea_base_table_filler.init("", id_fase=self.id_fase) d = super(LineaBaseController, self).get_all(*args, **kw) d["permiso_crear"] = TienePermiso("crear linea base", id_fase=self.id_fase).is_met(request.environ) d["permiso_unir"] = TienePermiso("unir lineas base", id_fase=self.id_fase).is_met(request.environ) d["model"] = "Lineas Base" cant = ( DBSession.query(LineaBase) .filter(LineaBase.cerrado == False) .filter(LineaBase.id_fase == self.id_fase) .count() ) items = ( DBSession.query(Item) .filter(Item.id_tipo_item.contains(self.id_fase)) .filter(Item.borrado == False) .filter(Item.id_linea_base == None) .filter(Item.estado == u"Aprobado") .all() ) aux = [] for item in items: for item_2 in items: if item.id == item_2.id: if item.version > item_2.version: aux.append(item_2) elif item.version < item_2.version: aux.append(item) items = [i for i in items if i not in aux and not es_huerfano(i)] cant_items = len(items) if cant < 2: d["lineas_base"] = False else: d["lineas_base"] = True if cant_items == 0: d["permiso_crear"] = False d["direccion_anterior"] = "../.." d["accion"] = "./buscar" return d
def buscar(self, **kw): """ Lista las líneas base de acuerdo a un criterio de búsqueda introducido por el usuario. """ buscar_table_filler = LineaBaseTableFiller(DBSession) if "parametro" in kw: buscar_table_filler.init(kw["parametro"], self.id_fase) else: buscar_table_filler.init("", self.id_fase) tmpl_context.widget = self.table value = buscar_table_filler.get_value() d = dict(value_list=value, model="Lineas Base") d["accion"] = "./buscar" d["permiso_crear"] = TienePermiso("crear linea base", id_fase=self.id_fase).is_met( request.environ) d["permiso_unir"] = TienePermiso("unir lineas base", id_fase=self.id_fase).is_met( request.environ) cant = DBSession.query(LineaBase).filter(LineaBase.cerrado == False) \ .filter(LineaBase.id_fase == self.id_fase).count() if cant < 2: d["lineas_base"] = False else: d["lineas_base"] = True items = DBSession.query(Item).filter(Item.id_tipo_item .contains(self.id_fase)).filter(Item.borrado == False) \ .filter(Item.id_linea_base == None).filter(Item.estado == u"Aprobado").all() aux = [] for item in items: for item_2 in items: if item.id == item_2.id: if item.version > item_2.version: aux.append(item_2) elif item.version < item_2.version: aux.append(item) items = [i for i in items if i not in aux and not es_huerfano(i)] cant_items = len(items) if cant_items == 0: d["permiso_crear"] = False d["direccion_anterior"] = "../.." return d
def update_params(self, d): """ @param d: diccionario con las opciones posibles de ítems. @return: d con los valores correctos de ítems posibles. """ super(ItemsField, self).update_params(d) id_fase = unicode(request.url.split("/")[-3]) ids_tipos_item = DBSession.query(TipoItem.id).filter(TipoItem.id_fase \ == id_fase) items = DBSession.query(Item).filter(Item.id_tipo_item \ .in_(ids_tipos_item))\ .filter(Item.id_linea_base == None).filter(Item.borrado == False) \ .filter(Item.revisiones == None).all() items_a_mostrar = UnificarItem(items) aux = list() for item in reversed(items_a_mostrar): if item.estado != u"Aprobado" or es_huerfano(item): items_a_mostrar.remove(item) for item in items_a_mostrar: aux.append(item.id + "/" + str(item.version)) lista = [x for x in d['options'] if x[0] in aux] d['options'] = lista
def get_all(self, *args, **kw): """Lista las líneas base de acuerdo a lo establecido en L{linea_base_controller.LineaBaseTableFiller._do_get_provider_count_and_objs}. """ linea_base_table_filler.init("", id_fase=self.id_fase) d = super(LineaBaseController, self).get_all(*args, **kw) d["permiso_crear"] = TienePermiso("crear linea base", id_fase=self.id_fase).is_met( request.environ) d["permiso_unir"] = TienePermiso("unir lineas base", id_fase=self.id_fase).is_met( request.environ) d["model"] = "Lineas Base" cant = DBSession.query(LineaBase).filter(LineaBase.cerrado == False) \ .filter(LineaBase.id_fase == self.id_fase).count() items = DBSession.query(Item).filter(Item.id_tipo_item .contains(self.id_fase)).filter(Item.borrado == False) \ .filter(Item.id_linea_base == None) \ .filter(Item.estado == u"Aprobado").all() aux = [] for item in items: for item_2 in items: if item.id == item_2.id: if item.version > item_2.version: aux.append(item_2) elif item.version < item_2.version: aux.append(item) items = [i for i in items if i not in aux and not es_huerfano(i)] cant_items = len(items) if cant < 2: d["lineas_base"] = False else: d["lineas_base"] = True if cant_items == 0: d["permiso_crear"] = False d["direccion_anterior"] = "../.." d["accion"] = "./buscar" return d