def _my_update_params(self, d, nullable=False): id_proyecto = UrlParser.parse_id(request.url, "proyectos") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") if id_proyecto: proy = Proyecto.por_id(id_proyecto) options = [] id_fase = UrlParser.parse_id(request.url, "fases") if id_fase: fase = Fase.por_id(id_fase) proy = Proyecto.por_id(fase.id_proyecto) if self.accion == "edit": options.append((fase.posicion, str(fase.posicion))) if (proy.estado != u"Iniciado"): pos = range(1, proy.numero_fases + 1) pos.pop(fase.posicion - 1) options.extend(pos) elif self.accion == "new": if (not id_proyecto): return d np = proy.numero_fases + 1 options.append((np, str(np))) options.extend(range(1, np)) d['options'] = options return d
def post_buscar(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") id_fase = UrlParser.parse_id(request.url, "fases") atras = "../" if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti") id_fase = UrlParser.parse_id(request.url, "fases_ti") atras = "../../../" proy = Proyecto.por_id(id_proyecto) puede_crear = puede_crear = PoseePermiso("crear tipo item", id_fase=id_fase).is_met(request.environ) if proy.estado != "Iniciado": puede_crear = False fase = Fase.por_id(id_fase) titulo = self.title % fase.nombre tmpl_context.widget = self.table buscar_table_filler = self.table_filler.__class__(DBSession) buscar_table_filler.filtros = kw tipos_items = buscar_table_filler.get_value(id_fase=id_fase) return dict(lista_elementos=tipos_items, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action="../", puede_crear=puede_crear, atras=atras )
def post_buscar(self, *args, **kw): id_fase = UrlParser.parse_id(request.url, "fases") id_usuario = UrlParser.parse_id(request.url, "miembrosfase") usuario = Usuario.por_id(id_usuario) fase = Fase.por_id(id_fase) puede_asignar = PoseePermiso("asignar-desasignar rol", id_fase=id_fase).is_met(request.environ) titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = MiembrosFaseRolesTableFiller(DBSession) buscar_table_filler.filtros = kw roles = buscar_table_filler.get_value(usuario=usuario, asignados=False, id_fase=id_fase, **kw) atras = "../../" return dict(lista_elementos=roles, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action="../", atras=atras, puede_asignar=puede_asignar)
def __init__(self, nombre_permiso, **kw): """ Método inicializador. @param nombre_permiso: el nombre del permiso a evaluar @type nombre_permiso: C{unicode} """ self.nombre_permiso = unicode(nombre_permiso) self.id_proyecto = 0 self.id_fase = 0 self.id_tipo_item = 0 self.id_usuario = 0 if not kw.has_key('id_proyecto'): if kw.has_key('id_fase'): self.id_fase = int(kw['id_fase']) self.id_proyecto = Fase.por_id(self.id_fase).id_proyecto del kw['id_fase'] if kw.has_key('id_tipo_item'): self.id_tipo_item = int(kw['id_tipo_item']) ti = TipoItem.por_id(self.id_tipo_item) self.id_fase = ti.id_fase self.id_proyecto = ti.id_proyecto del kw['id_tipo_item'] else: self.id_proyecto = int(kw['id_proyecto']) del kw['id_proyecto'] if kw.has_key("id_usuario"): self.id_usuario = int(kw["id_usuario"]) del kw["id_usuario"] super(PoseePermiso, self).__init__(**kw)
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_fase = UrlParser.parse_id(request.url, "fases") fase = Fase.por_id(id_fase) titulo = "Lista de Usuarios" puede_incorporar = PoseePermiso("asignar-desasignar rol", id_fase=id_fase).is_met(request.environ) if request.response_type == 'application/json': return self.table_filler.get_value(id_fase=id_fase,**kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): nomiembros = self.table_filler.get_value(id_fase=id_fase,**kw) else: nomiembros = [] tmpl_context.widget = self.table atras = "../" return dict(lista_elementos=nomiembros, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action=self.action, atras=atras, puede_incorporar=puede_incorporar)
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_fase = UrlParser.parse_id(request.url, "fases") fase = Fase.por_id(id_fase) #titulo = "Miembros de la Fase: %s" % fase.nombre titulo = "Lista de Usuarios" puede_remover = PoseePermiso("asignar-desasignar rol", id_fase=id_fase).is_met(request.environ) if request.response_type == 'application/json': return self.table_filler.get_value(id_fase=id_fase, **kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): miembros = self.table_filler.get_value(id_fase=id_fase, **kw) else: miembros = [] tmpl_context.widget = self.table #atras = "/proyectos/%d/" % id_proyecto atras = "../" return dict(lista_elementos=miembros, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action=self.action, atras=atras, puede_remover=puede_remover)
def _my_update_params(self, d, nullable=False): options = [] id_proyecto = UrlParser.parse_id(request.url, "proyectos") id_fase = UrlParser.parse_id(request.url, "fases") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti") id_fase = UrlParser.parse_id(request.url, "fases_ti") if (self.accion == "new"): if id_fase: tipos = Fase.por_id(id_fase).tipos_de_item #elif (id_proyecto): # tipos = Proyecto.por_id(id_proyecto).tipos_de_item for ti in tipos: options.append((ti.id_tipo_item, '%s (%s)' % (ti.nombre, ti.codigo))) if (self.accion == "edit"): id_tipo = UrlParser.parse_id(request.url, "tipositems") ti = TipoItem.por_id(id_tipo) padre = TipoItem.por_id(ti.id_padre) if padre: options.append((ti.id_padre, '%s (%s)' % (padre.nombre, padre.codigo))) else: options.append((ti.id_padre, 'Tipo base')) d['options'] = options return d
def post_delete(self, id): """Elimina una fase de la bd si el proyecto no está iniciado""" fase = Fase.por_id(id) proy = Proyecto.por_id(fase.id_proyecto) proy.eliminar_fase(id) flash("Fase eliminada") redirect("../")
def _do_get_provider_count_and_objs(self, id_proyecto=None, id_fase=None, **kw): """ Retorna las fases del proyecto en cuestión """ if id_fase: fase = Fase.por_id(id_fase) return 1, [fase] count, lista = super(FaseTableFiller, self).\ _do_get_provider_count_and_objs(**kw) filtrados = [] if id_proyecto: id_proyecto = int(id_proyecto) #ap = AlgunPermiso(tipo='Fase', id_proyecto=id_proyecto).is_met(request.environ) for f in lista: if f.id_proyecto == id_proyecto: if AlgunPermiso(tipo='Fase', id_fase=f.id_fase).is_met(request.environ): filtrados.append(f) return len(filtrados), filtrados
def get_one(self, *args, **kw): id_tipo = int(args[0]) id_proyecto = UrlParser.parse_id(request.url, "proyectos") id_fase = UrlParser.parse_id(request.url, "fases") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti") id_fase = UrlParser.parse_id(request.url, "fases_ti") proy = Proyecto.por_id(id_proyecto) puede_crear = puede_crear = PoseePermiso("crear tipo item", id_fase=id_fase).is_met(request.environ) if proy.estado != "Iniciado": puede_crear = False ti = self.table_filler.get_value(id_tipo=id_tipo, **kw) tmpl_context.widget = self.table fase = Fase.por_id(id_fase) titulo = self.title % fase.nombre atras = '../' return dict(lista_elementos=ti, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.action, puede_crear=puede_crear, atras=atras )
def post_buscar(self, *args, **kw): """ Controlador que recibe los parámetros de búsqueda para devolver el resultado esperado. """ puede_crear = False id_fase = UrlParser.parse_id(request.url, "fases") fase = Fase.por_id(id_fase) if puede_crear: puede_crear = fase.puede_crear_lb() titulo = u"Líneas Base de Fase: %s" % fase.nombre tmpl_context.widget = self.table buscar_table_filler = LineaBaseTableFiller(DBSession) buscar_table_filler.filtros = kw items = buscar_table_filler.get_value(id_fase=id_fase) return dict(lista_elementos=items, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, url_action='../', puede_crear=puede_crear, comboboxes=self.comboboxes, opciones=self.opciones, atras='../' )
def get_one(self, *args, **kw): """ Retorna la linea base con la que se esta trabajando actualmente """ puede_crear = False id_fase = UrlParser.parse_id(request.url, "fases") id_lb = int(args[0]) fase = Fase.por_id(id_fase) if puede_crear: puede_crear = fase.puede_crear_lb() titulo = u"Líneas Base de Fase: %s" % fase.nombre lb = self.table_filler.get_value(id_fase=id_fase, id_lb=id_lb, **kw) tmpl_context.widget = self.table return dict(lista_elementos=lb, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.tmp_action, puede_crear=puede_crear, comboboxes=self.comboboxes )
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ puede_crear = False id_fase = UrlParser.parse_id(request.url, "fases") puede_crear = PoseePermiso("crear lb", id_fase=id_fase).is_met(request.environ) fase = Fase.por_id(id_fase) if puede_crear: puede_crear = fase.puede_crear_lb() titulo = u"Líneas Base de Fase: %s" % fase.nombre lbs = self.table_filler.get_value(id_fase=id_fase, **kw) tmpl_context.widget = self.table atras = "../../" return dict(lista_elementos=lbs, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.tmp_action, puede_crear=puede_crear, comboboxes=self.comboboxes, atras=atras )
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 __init__(self, **kw): """ Método inicializador @param kw: Parametros para inicializar @keyword tipo: El tipo de permiso (Rol, Usuario, Proyecto, Fase, Tipo Ítem). """ self.id_proyecto = 0 self.id_fase = 0 self.id_tipo_item = 0 self.id_usuario = 0 self.tipo = unicode(kw["tipo"]) del kw["tipo"] if (not kw.has_key('id_proyecto')): if (kw.has_key('id_fase')): self.id_fase = int(kw['id_fase']) self.id_proyecto = Fase.por_id(self.id_fase).id_proyecto del kw['id_fase'] if (kw.has_key('id_tipo_item')): self.id_tipo_item = int(kw['id_tipo_item']) ti = TipoItem.por_id(self.id_tipo_item) self.id_fase = ti.id_fase self.id_proyecto = ti.id_proyecto del kw['id_tipo_item'] else: self.id_proyecto = int(kw['id_proyecto']) del kw['id_proyecto'] if kw.has_key("id_usuario"): self.id_usuario = int(kw["id_usuario"]) del kw["id_usuario"] super(AlgunPermiso, self).__init__(**kw)
def post_buscar(self, *args, **kw): id_fase = UrlParser.parse_id(request.url, "fases") id_usuario = UrlParser.parse_id(request.url, "nomiembrosfase") usuario = Usuario.por_id(id_usuario) fase = Fase.por_id(id_fase) puede_asignar = PoseePermiso("asignar-desasignar rol", id_fase=id_fase).is_met(request.environ) titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = MiembrosFaseRolesTableFiller(DBSession) buscar_table_filler.filtros = kw roles = buscar_table_filler.get_value(usuario=usuario, asignados=False, id_fase=id_fase, **kw) atras = "../../" return dict(lista_elementos=roles, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action="../", atras=atras, puede_asignar=puede_asignar)
def post(self, *args, **kw): if "sprox_id" in kw: del kw["sprox_id"] id_fase = UrlParser.parse_id(request.url, "fases_desarrollo") id_tipo = int(kw["id_tipo_item"]) user = Usuario.by_user_name(request.credentials["repoze.what.userid"]) del kw["id_tipo_item"] if id_fase: fase = Fase.por_id(id_fase) fase.crear_item(id_tipo, user, **kw) redirect("./")
def _my_update_params(self, d, nullable=False): options = [] id_fase = UrlParser.parse_id(request.url, "fases") if not id_fase: id_fase = UrlParser.parse_id(request.url, "fases_desarrollo") if id_fase: fase = Fase.por_id(id_fase) for ti in fase.tipos_de_item: options.append((ti.id_tipo_item, '%s (%s)' % (ti.nombre, ti.codigo))) d["options"] = options return d
def _my_update_params(self, d, nullable=False): options = [] id_fase = UrlParser.parse_id(request.url, "fases") if not id_fase: id_fase = UrlParser.parse_id(request.url, "fases_desarrollo") if id_fase: fase = Fase.por_id(id_fase) for ti in fase.tipos_de_item: options.append( (ti.id_tipo_item, '%s (%s)' % (ti.nombre, ti.codigo))) d["options"] = options return d
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") titulo = self.title relaciones = [] tabla = self.table puede_relacionar = False puede_nueva = False atras = "../../" if id_version: #desde controller de versiones p_item = PropiedadItem.por_id(id_version) titulo = u"Relaciones de Version: %d" % p_item.version relaciones = self.table_filler. \ get_value(id_version=id_version, **kw) elif id_item: #desde controller de items. item = Item.por_id(id_item) titulo = u"Relaciones de Ítem: %s" % item.codigo atras = "../" relaciones = relacion_item_table_filler. \ get_value(id_version=item.id_propiedad_item, **kw) tabla = relacion_item_table puede_relacionar = PoseePermiso('modificar item', \ id_tipo_item=item.id_tipo_item).is_met(request.environ) fase = Fase.por_id(item.id_fase) if (UrlParser.parse_nombre(request.url, "relaciones_as")): if (fase.posicion > 1): puede_nueva = True else: puede_nueva = True tmpl_context.widget = tabla return dict(lista_elementos=relaciones, page=titulo, titulo=titulo, modelo=self.model.__name__, #columnas=self.columnas, #opciones=self.opciones, #comboboxes=self.comboboxes, url_action=self.tmp_action, puede_relacionar=puede_relacionar, atras=atras, puede_nueva=puede_nueva )
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") titulo = self.title relaciones = [] tabla = self.table puede_relacionar = False puede_nueva = False atras = "../../" if id_version: #desde controller de versiones p_item = PropiedadItem.por_id(id_version) titulo = u"Relaciones de Version: %d" % p_item.version relaciones = self.table_filler. \ get_value(id_version=id_version, **kw) elif id_item: #desde controller de items. item = Item.por_id(id_item) titulo = u"Relaciones de Ítem: %s" % item.codigo atras = "../" relaciones = relacion_item_table_filler. \ get_value(id_version=item.id_propiedad_item, **kw) tabla = relacion_item_table puede_relacionar = PoseePermiso('modificar item', \ id_tipo_item=item.id_tipo_item).is_met(request.environ) fase = Fase.por_id(item.id_fase) if (UrlParser.parse_nombre(request.url, "relaciones_as")): if (fase.posicion > 1): puede_nueva = True else: puede_nueva = True tmpl_context.widget = tabla return dict( lista_elementos=relaciones, page=titulo, titulo=titulo, modelo=self.model.__name__, #columnas=self.columnas, #opciones=self.opciones, #comboboxes=self.comboboxes, url_action=self.tmp_action, puede_relacionar=puede_relacionar, atras=atras, puede_nueva=puede_nueva)
def remover_seleccionados(self, *args, **kw): """ Desasigna miembros de la fase. """ id_fase = UrlParser.parse_id(request.url, "fases") if kw: pks = [] for k, pk in kw.items(): if not k.isalnum(): continue pks.append(int(pk)) transaction.begin() usuarios = DBSession.query(Usuario) \ .filter(Usuario.id_usuario.in_(pks)).all() fase = Fase.por_id(id_fase) nr = u"Lider de Proyecto" rlp = DBSession.query(Rol) \ .filter(and_(Rol.tipo == u"Proyecto", Rol.id_proyecto == fase.id_proyecto, Rol.nombre_rol == nr)).first() warning = False for u in usuarios: if rlp in u.roles and len(rlp.usuarios) == 1: msg = "No puedes eliminar al usuario {nu} porque " msg += "es el {nr}" flash(msg.format(nu=u.nombre_usuario, nr=nr), "warning") warning = True continue c = 0 while c < len(u.roles): if u.roles[c].id_fase == id_fase and \ u.roles[c].tipo == u"Fase": del u.roles[c] else: c += 1 transaction.commit() if not warning: flash("Usuarios removidos correctamente") else: flash("Seleccione por lo menos un usuario", "warning") return "../"
def evaluate(self, environ, credentials): if is_anonymous().is_met(environ): self.unmet() nombre_usuario = credentials['repoze.what.userid'] usuario = Usuario.by_user_name(nombre_usuario) if self.id_usuario: usuario = Usuario.por_id(self.id_usuario) if (self.id_tipo_item): #recuperar id de fase y proyecto ti = TipoItem.por_id(self.id_tipo_item) if (not self.id_fase): self.id_fase = ti.id_fase if (not self.id_proyecto): self.id_proyecto = ti.id_proyecto elif (self.id_fase): fase = Fase.por_id(self.id_fase) if (not self.id_proyecto): self.id_proyecto = fase.id_proyecto for r in usuario.roles: tiene = False for p in r.permisos: if p.nombre_permiso == self.nombre_permiso: tiene = True if not tiene: continue if r.es_rol_sistema(): return if self.id_proyecto == r.id_proyecto: if r.tipo == u"Proyecto": return if self.id_fase == r.id_fase: if r.tipo == u"Fase": return ti = TipoItem.por_id(self.id_tipo_item) if ti and ti.es_o_es_hijo(r.id_tipo_item): return self.unmet(self.message % self.nombre_permiso)
def _my_update_params(self, d, nullable=False): options = [] options.append((None, '-----------------')) #Solo tipos de otros proyectos id_proyecto = UrlParser.parse_id(request.url, "proyectos") id_fase = UrlParser.parse_id(request.url, "fases") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti") id_fase = UrlParser.parse_id(request.url, "fases_ti") if (self.accion == "new"): #de otros proyectos. if id_proyecto: tipos_items = DBSession.query(TipoItem) \ .filter(TipoItem.id_proyecto != id_proyecto) \ .all() for ti in tipos_items: options.append((ti.id_tipo_item, '%s (%s)' % (ti.nombre, ti.codigo))) #importa de otras fases tambien if id_fase: fase = Fase.por_id(id_fase) id_proyecto = fase.id_proyecto tipos_items_fase = DBSession.query(TipoItem) \ .filter(and_(TipoItem.id_proyecto == id_proyecto, TipoItem.id_fase != id_fase)) \ .all() ''' tipos_items_fase = DBSession.query(TipoItem) \ .filter(or_(TipoItem.id_proyecto != id_proyecto, and_(TipoItem.id_proyecto == id_proyecto, TipoItem.id_fase != id_fase))) \ .all() ''' for ti in tipos_items_fase: #solo si posee algun permiso sobre el tipo de item #if (AlgunPermiso(tipo="Tipo", id_tipo_item=ti.id_tipo_item)): options.append((ti.id_tipo_item, '%s (%s)' % (ti.nombre, ti.codigo))) d['options'] = options return d
def _do_get_provider_count_and_objs(self, id_fase=None, **kw): """ Se muestran a los usuarios que no tienen por lo menos un rol de tipo fase para la fase en cuestión. """ count, lista = super(NoMiembrosFaseTableFiller, self)._do_get_provider_count_and_objs(**kw) filtrados = [] fase = Fase.por_id(id_fase) apf = AlgunPermiso(tipo="Fase", id_fase=fase.id_fase) for u in lista: apf.id_usuario = u.id_usuario if not apf.is_met(request.environ): filtrados.append(u) return len(filtrados), filtrados
def new(self, *args, **kw): """Pagina para generar una nueva linea base""" id_fase = UrlParser.parse_id(request.url, "fases") pp = PoseePermiso("crear lb", id_fase=id_fase) if not id_fase: flash("Se Debe especificar una fase", "warning") redirect("../") if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("../") fase = Fase.por_id(id_fase) titulo = u"Generar LB para Fase: %s" % fase.nombre tmpl_context.tabla_items = item_generar_table items = item_generar_table_filler.get_value(id_fase=fase.id_fase) return dict(items=items, page=titulo, atras='./')
def edit(self, *args, **kw): """Despliega una pagina para realizar modificaciones""" id_fase = UrlParser.parse_id(request.url, "fases") fase = Fase.por_id(int(id_fase)) id_proyecto = UrlParser.parse_id(request.url, "proyectos") atras = "./" if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") pp = PoseePermiso('modificar fase', id_fase=id_fase) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("./") tmpl_context.widget = FaseEditForm(DBSession) value = self.edit_filler.get_value(values={'id_fase': id_fase}) page = u"Modificar Fase: %s" % value["nombre"] return dict(value=value, page=page, atras=atras)
def post_buscar(self, *args, **kw): id_fase = UrlParser.parse_id(request.url, "fases") fase = Fase.por_id(id_fase) titulo = "Lista de Usuarios" puede_incorporar = PoseePermiso("asignar-desasignar rol", id_fase=id_fase).is_met(request.environ) tmpl_context.widget = no_miembros_fase_table buscar_table_filler = NoMiembrosFaseTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(id_fase=id_fase,**kw) atras = "../" return dict(lista_elementos=usuarios, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action="../", atras=atras, puede_incorporar=puede_incorporar)
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_proyecto = UrlParser.parse_id(request.url, "proyectos") id_fase = UrlParser.parse_id(request.url, "fases") atras = "../" if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti") id_fase = UrlParser.parse_id(request.url, "fases_ti") atras = "../../" proy = Proyecto.por_id(id_proyecto) puede_crear = puede_crear = PoseePermiso("crear tipo item", id_fase=id_fase).is_met(request.environ) if proy.estado != "Iniciado": puede_crear = False fase = Fase.por_id(id_fase) titulo = self.title % fase.nombre tipo_items = self.table_filler.get_value(id_fase=id_fase, **kw) tmpl_context.widget = self.table url_action = self.action if UrlParser.parse_nombre(request.url, "post_buscar"): url_action = "../" return dict(lista_elementos=tipo_items, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=url_action, puede_crear=puede_crear, atras=atras )
def get_one(self, *args, **kw): #id_fase = UrlParser.parse_id(request.url, "fases") id_item = UrlParser.parse_id(request.url, "items") atras = "../" #if UrlParser.parse_nombre(request.url, "fases"): # atras = "../../edit" item = Item.por_id(id_item) puede_crear = False id_fase = UrlParser.parse_id(request.url, "fases_desarrollo") nuevo = "./new" if (UrlParser.parse_id(request.url, "items")): nuevo = "../new" if id_fase: # desde el controlador de fases puede_crear = PoseePermiso("crear item", id_fase=id_fase).is_met(request.environ) #atras = "/fases/%d/edit/" % id_fase fase = Fase.por_id(id_fase) if puede_crear: puede_crear = fase.puede_crear_item() titulo = u"Ítem: %s" % item.codigo items = self.table_filler.get_value(id_item=item.id_item, **kw) tmpl_context.widget = self.table return dict(lista_elementos=items, page=titulo, atras=atras, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action="../", puede_crear=puede_crear, comboboxes=self.comboboxes, nuevo=nuevo ) '''
def post_buscar(self, *args, **kw): id_fase = UrlParser.parse_id(request.url, "fases") fase = Fase.por_id(id_fase) titulo = "Lista de Usuarios" puede_incorporar = PoseePermiso("asignar-desasignar rol", id_fase=id_fase).is_met( request.environ) tmpl_context.widget = no_miembros_fase_table buscar_table_filler = NoMiembrosFaseTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(id_fase=id_fase, **kw) atras = "../" return dict(lista_elementos=usuarios, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action="../", atras=atras, puede_incorporar=puede_incorporar)
def get_one(self, *args, **kw): #id_fase = UrlParser.parse_id(request.url, "fases") id_item = UrlParser.parse_id(request.url, "items") atras = "../" #if UrlParser.parse_nombre(request.url, "fases"): # atras = "../../edit" item = Item.por_id(id_item) puede_crear = False id_fase = UrlParser.parse_id(request.url, "fases_desarrollo") nuevo = "./new" if (UrlParser.parse_id(request.url, "items")): nuevo = "../new" if id_fase: # desde el controlador de fases puede_crear = PoseePermiso("crear item", id_fase=id_fase).is_met(request.environ) #atras = "/fases/%d/edit/" % id_fase fase = Fase.por_id(id_fase) if puede_crear: puede_crear = fase.puede_crear_item() titulo = u"Ítem: %s" % item.codigo items = self.table_filler.get_value(id_item=item.id_item, **kw) tmpl_context.widget = self.table return dict(lista_elementos=items, page=titulo, atras=atras, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action="../", puede_crear=puede_crear, comboboxes=self.comboboxes, nuevo=nuevo) '''
def post(self, *args, **kw): """ Generamos la línea base. """ #transaction.begin() id_fase = UrlParser.parse_id(request.url, "fases") pks = [] for k, v in kw.items(): if v.isalnum(): pks.append(int(v)) fase = Fase.por_id(id_fase) user = Usuario.by_user_name(request.credentials["repoze.what.userid"]) fase.generar_lb(pks, user) if pks: flash(u"Se ha generado la línea base") else: flash(u"No se seleccionaron elementos", "warning") transaction.commit() #redirect("/fases/%d/edit" % id_fase) #url = '/fases/%d/edit' % id_fase url = './' return url
def post_buscar(self, *args, **kw): """ Controlador que recibe los parámetros de búsqueda para devolver el resultado esperado. """ puede_crear = False id_fase = UrlParser.parse_id(request.url, "fases_desarrollo") titulo = self.title nuevo = "./new" if (UrlParser.parse_id(request.url, "items")): nuevo = "../new" if id_fase: # desde el controlador de fases puede_crear = PoseePermiso("crear item", id_fase=id_fase).is_met(request.environ) fase = Fase.por_id(id_fase) if puede_crear: puede_crear = fase.puede_crear_item() titulo = u"Ítems de Fase: %s" % fase.nombre tmpl_context.widget = self.table buscar_table_filler = ItemTableFiller(DBSession) buscar_table_filler.filtros = kw items = buscar_table_filler.get_value(id_fase=id_fase) return dict(lista_elementos=items, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, url_action='../', puede_crear=puede_crear, comboboxes=self.comboboxes, opciones=self.opciones, atras='../../../', nuevo=nuevo )
def _do_get_provider_count_and_objs(self, id_item=None, tipo=None, **kw): """ Recupera los ítems para los cuales tenemos algún permiso. y está o no relacionado al campo relacionado. Si el usuario se encuentra en una fase, retorna solo los ítems que pertenecen a dicha fase. """ #count, lista = super(ItemTableFiller, self).\ # _do_get_provider_count_and_objs(**kw) filtrados = [] if id_item: item = Item.por_id(int(id_item)) if (tipo == 'P-H'): items_fase_actual = DBSession.query(Item)\ .filter(and_(Item.id_propiedad_item == PropiedadItem.id_propiedad_item,\ Item.id_item != item.id_item, Item.id_fase == item.id_fase, PropiedadItem.estado != u"Eliminado"))\ .all() for it in items_fase_actual: if (not it.esta_relacionado(id_item)): filtrados.append(it) if (tipo == 'A-S'): fase = Fase.por_id(item.id_fase) items_fase_anterior = DBSession.query(Item)\ .filter(and_(Item.id_propiedad_item == PropiedadItem.id_propiedad_item,\ Item.id_fase == Fase.id_fase, Fase.id_proyecto == fase.id_proyecto, PropiedadItem.estado == u"Bloqueado", \ Fase.posicion == fase.posicion - 1, fase.posicion != 1))\ .all() for it in items_fase_anterior: if (not it.esta_relacionado(id_item)): filtrados.append(it) return len(filtrados), filtrados
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_fase = UrlParser.parse_id(request.url, "fases") id_usuario = UrlParser.parse_id(request.url, "miembrosfase") usuario = Usuario.por_id(id_usuario) fase = Fase.por_id(id_fase) titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario puede_asignar = PoseePermiso("asignar-desasignar rol", id_fase=id_fase).is_met(request.environ) if request.response_type == 'application/json': return self.table_filler.get_value(usuario=usuario, asignados=False, id_fase=id_fase, **kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): roles = self.table_filler.get_value(usuario=usuario, asignados=False, id_fase=id_fase, **kw) else: roles = [] tmpl_context.widget = self.table atras = "../../" return dict(lista_elementos=roles, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action=self.action, atras=atras, puede_asignar=puede_asignar)
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 get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ puede_crear = False id_fase = UrlParser.parse_id(request.url, "fases_desarrollo") titulo = self.title atras = "../../" nuevo = "./new" if (UrlParser.parse_id(request.url, "items")): nuevo = "../new" if id_fase: # desde el controlador de fases puede_crear = PoseePermiso("crear item", id_fase=id_fase).is_met(request.environ) #atras = "/fases/%d/edit/" % id_fase fase = Fase.por_id(id_fase) if puede_crear: puede_crear = fase.puede_crear_item() titulo = u"Ítems de Fase: %s" % fase.nombre items = self.table_filler.get_value(id_fase=id_fase, **kw) tmpl_context.widget = self.table return dict(lista_elementos=items, page=titulo, atras=atras, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.tmp_action, puede_crear=puede_crear, comboboxes=self.comboboxes, nuevo=nuevo )