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 _do_get_provider_count_and_objs(self, id_tipo_item=None, **kw): """ Se muestra la lista de atributos del tipo de ítem si se tiene un permiso necesario. """ if AlgunPermiso(tipo="Tipo", id_tipo_item=id_tipo_item).is_met(request.environ): count, lista = super(AtributosPorTipoItemTableFiller, self)._do_get_provider_count_and_objs(**kw) id_tipo = UrlParser.parse_id(request.url, "tipositems") ti = TipoItem.por_id(id_tipo) pks = [] actual = ti while actual: for attr in actual.atributos: pks.append(attr.id_atributos_por_tipo_item) actual = TipoItem.por_id(actual.id_padre) filtrados = [] for attr in lista: if attr.id_atributos_por_tipo_item in pks: filtrados.append(attr) return len(filtrados), filtrados #query = DBSession.query(AtributosPorTipoItem) \ # .filter(AtributosPorTipoItem \ # .id_atributos_por_tipo_item.in_(pks)) #return query.count(), query.all() return 0, []
def _do_get_provider_count_and_objs(self, id_tipo_item=None,**kw): """ Se muestra la lista de atributos del tipo de ítem si se tiene un permiso necesario. """ if AlgunPermiso(tipo="Tipo", id_tipo_item=id_tipo_item).is_met(request.environ): count, lista = super(AtributosPorTipoItemTableFiller, self)._do_get_provider_count_and_objs(**kw) id_tipo = UrlParser.parse_id(request.url, "tipositems") ti = TipoItem.por_id(id_tipo) pks = [] actual = ti while actual: for attr in actual.atributos: pks.append(attr.id_atributos_por_tipo_item) actual = TipoItem.por_id(actual.id_padre) filtrados = [] for attr in lista: if attr.id_atributos_por_tipo_item in pks: filtrados.append(attr) return len(filtrados), filtrados #query = DBSession.query(AtributosPorTipoItem) \ # .filter(AtributosPorTipoItem \ # .id_atributos_por_tipo_item.in_(pks)) #return query.count(), query.all() return 0, []
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 get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_tipo_item = UrlParser.parse_id(request.url, "tipositems") puede_crear = False tipo = TipoItem.por_id(id_tipo_item) titulo = self.title % tipo.nombre atributos = self.table_filler.get_value(id_tipo_item=id_tipo_item, **kw) tmpl_context.widget = self.table url_action = self.action atras = "../../" return dict(lista_elementos=atributos, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action=url_action, puede_crear=puede_crear, atras=atras)
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 get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_tipo_item = UrlParser.parse_id(request.url, "tipositems") puede_crear = PoseePermiso('redefinir tipo item', id_tipo_item=id_tipo_item).is_met(request.environ) tipo = TipoItem.por_id(id_tipo_item) titulo = self.title % tipo.nombre atributos = self.table_filler.get_value(id_tipo_item=id_tipo_item, **kw) tmpl_context.widget = self.table url_action = self.action atras = "../" return dict(lista_elementos=atributos, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action=url_action, puede_crear=puede_crear, atras=atras )
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_tipo_item = UrlParser.parse_id(request.url, "tipositems") tipo = TipoItem.por_id(id_tipo_item) #titulo = u"Miembros del Tipo de Item: %s" % tipo.nombre titulo = "Lista de Usuarios" puede_remover = PoseePermiso("asignar-desasignar rol", id_tipo_item=id_tipo_item).is_met( request.environ) if request.response_type == 'application/json': return self.table_filler.get_value(id_tipo_item=id_tipo_item, **kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): miembros = self.table_filler.get_value(id_tipo_item=id_tipo_item, **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 post_buscar(self, *args, **kw): id_tipo_item = UrlParser.parse_id(request.url, "tipositems") tipo = TipoItem.por_id(id_tipo_item) #titulo = u"Miembros del Tipo de Ítem: %s" % tipo.nombre titulo = "Lista de Usuarios" puede_remover = PoseePermiso("asignar-desasignar rol", id_tipo_item=id_tipo_item).is_met( request.environ) tmpl_context.widget = miembros_tipo_table buscar_table_filler = MiembrosTipoTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(id_tipo_item=id_tipo_item, **kw) #atras = "/proyectos/%d/" % id_proyecto atras = "../" return dict(lista_elementos=usuarios, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action="../", atras=atras, puede_remover=puede_remover)
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) for r in usuario.roles: for p in r.permisos: if p.nombre_permiso.find(u"miembro") >= 0: if self.id_proyecto: if r.tipo == "Proyecto" and \ r.id_proyecto == self.id_proyecto: return elif self.id_fase: if r.tipo == "Fase" and \ r.id_fase == self.id_fase: return else: if r.tipo.find("Tipo") >= 0: ti = TipoItem.por_id(self.id_tipo_item) if ti and ti.es_o_es_hijo(r.id_tipo_item): return #if (r.tipo.find("Tipo") >= 0 and \ # self.id_tipo_item.es_o_es_hijo(r.id_tipo_item)): # r.id_tipo_item == self.id_tipo_item: # return self.unmet(self.message)
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_tipo_item = UrlParser.parse_id(request.url, "tipositems") tipo = TipoItem.por_id(id_tipo_item) titulo = "Lista de Usuarios" puede_incorporar = PoseePermiso("asignar-desasignar rol", id_tipo_item=id_tipo_item).is_met(request.environ) if request.response_type == 'application/json': return self.table_filler.get_value(id_tipo_item=id_tipo_item,**kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): nomiembros = self.table_filler.get_value(id_tipo_item=id_tipo_item,**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 __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 post_buscar(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_tipo_item = UrlParser.parse_id(request.url, "tipositems") puede_crear = False tipo = TipoItem.por_id(id_tipo_item) titulo = self.title % tipo.nombre filler = AtributosPorTipoItemTableFiller(DBSession) filler.filtros = kw atributos = filler.get_value(id_tipo_item=id_tipo_item, **kw) tmpl_context.widget = self.table url_action = self.action atras = "../" return dict(lista_elementos=atributos, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action="../", puede_crear=puede_crear, atras=atras )
def post_buscar(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_tipo_item = UrlParser.parse_id(request.url, "tipositems") puede_crear = PoseePermiso('redefinir tipo item', id_tipo_item=id_tipo_item).is_met( request.environ) tipo = TipoItem.por_id(id_tipo_item) titulo = self.title % tipo.nombre filler = AtributosPorTipoItemTableFiller(DBSession) filler.filtros = kw atributos = filler.get_value(id_tipo_item=id_tipo_item, **kw) tmpl_context.widget = self.table url_action = self.action atras = "../" return dict(lista_elementos=atributos, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action="../", puede_crear=puede_crear, atras=atras)
def post_buscar(self, *args, **kw): id_tipo_item = UrlParser.parse_id(request.url, "tipositems") id_usuario = UrlParser.parse_id(request.url, "miembrostipo") usuario = Usuario.por_id(id_usuario) tipo = TipoItem.por_id(id_tipo_item) puede_asignar = PoseePermiso("asignar-desasignar rol", id_tipo_item=id_tipo_item).is_met( request.environ) titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = MiembrosTipoRolesTableFiller(DBSession) buscar_table_filler.filtros = kw roles = buscar_table_filler.get_value(usuario=usuario, asignados=False, id_tipo_item=id_tipo_item, **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_delete(self, *args, **kw): """This is the code that actually deletes the record""" atras = './' id_tipo = int(args[0]) tipo = TipoItem.por_id(id_tipo) DBSession.delete(tipo) redirect(atras)
def _do_get_provider_count_and_objs(self, id_tipo_item=None, **kw): """ Se muestra la lista de atributos del tipo de ítem """ count, lista = super(AtributosPorTipoItemTableFiller, self)._do_get_provider_count_and_objs(**kw) id_tipo = UrlParser.parse_id(request.url, "tipositems") ti = TipoItem.por_id(id_tipo) pks = [] actual = ti while actual: for attr in actual.atributos: pks.append(attr.id_atributos_por_tipo_item) actual = TipoItem.por_id(actual.id_padre) filtrados = [] for attr in lista: if attr.id_atributos_por_tipo_item in pks: filtrados.append(attr) return len(filtrados), filtrados
def _do_get_provider_count_and_objs(self, id_tipo_item=None,**kw): """ Se muestra la lista de atributos del tipo de ítem """ count, lista = super(AtributosPorTipoItemTableFiller, self)._do_get_provider_count_and_objs(**kw) id_tipo = UrlParser.parse_id(request.url, "tipositems") ti = TipoItem.por_id(id_tipo) pks = [] actual = ti while actual: for attr in actual.atributos: pks.append(attr.id_atributos_por_tipo_item) actual = TipoItem.por_id(actual.id_padre) filtrados = [] for attr in lista: if attr.id_atributos_por_tipo_item in pks: filtrados.append(attr) return len(filtrados), filtrados
def put(self, *args, **kw): """update a record""" url_action = url_action = "../../" pp = PoseePermiso('redefinir tipo item', id_tipo_item=kw["id_tipo_item"]) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(url_action) tipo = TipoItem.por_id(int(kw["id_tipo_item"])) tipo.descripcion = unicode(kw["descripcion"]) flash("Actualizacion exitosa") redirect("./")
def remover_seleccionados(self, *args, **kw): """ Desasigna miembros de la fase. """ id_tipo_item = UrlParser.parse_id(request.url, "tipositems") 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() ti = TipoItem.por_id(id_tipo_item) nr = u"Lider de Proyecto" rlp = DBSession.query(Rol) \ .filter(and_(Rol.tipo == u"Proyecto", Rol.id_proyecto == ti.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_tipo_item == id_tipo_item and \ u.roles[c].tipo == u"Tipo Ítem": 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 _do_get_provider_count_and_objs(self, id_tipo_item=None, **kw): """ Se muestran los usuarios que no tienen por lo menos un rol de tipo Tipo Item para el tipo de item en cuestión. """ count, lista = super(NoMiembrosTipoTableFiller, self)._do_get_provider_count_and_objs(**kw) filtrados = [] tipo = TipoItem.por_id(id_tipo_item) apti = AlgunPermiso(tipo="Tipo", id_tipo_item=tipo.id_tipo_item) for u in lista: apti.id_usuario = u.id_usuario if not apti.is_met(request.environ): filtrados.append(u) return len(filtrados), filtrados
def post_buscar(self, *args, **kw): id_tipo_item = UrlParser.parse_id(request.url, "tipositems") tipo = TipoItem.por_id(id_tipo_item) titulo = "Lista de Usuarios" puede_incorporar = PoseePermiso("asignar-desasignar rol", id_tipo_item=id_tipo_item).is_met(request.environ) tmpl_context.widget = no_miembros_tipo_table buscar_table_filler = NoMiembrosTipoTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(id_tipo_item=id_tipo_item,**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 post(self, *args, **kw): """create a new record""" id_tipo_item = UrlParser.parse_id(request.url, "tipositems") url_action = "./" pp = PoseePermiso('redefinir tipo item',id_tipo_item=id_tipo_item) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(url_action) if kw.has_key("sprox_id"): del kw["sprox_id"] tipo = TipoItem.por_id(id_tipo_item) try: tipo.agregar_atributo(**kw) except NombreDeAtributoError, err: flash(unicode(err), "warning")
def post(self, *args, **kw): """create a new record""" id_tipo_item = UrlParser.parse_id(request.url, "tipositems") url_action = "./" pp = PoseePermiso('redefinir tipo item', id_tipo_item=id_tipo_item) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(url_action) if kw.has_key("sprox_id"): del kw["sprox_id"] tipo = TipoItem.por_id(id_tipo_item) try: tipo.agregar_atributo(**kw) except NombreDeAtributoError, err: flash(unicode(err), "warning")
def _do_get_provider_count_and_objs(self, id_proyecto=None, id_tipo=None, **kw): """ Se muestra la lista de tipos de ítem para el proyecto en cuestión """ if not id_proyecto: return 0, [] if id_tipo: ti = TipoItem.por_id(id_tipo) return 1, [ti] count, lista = super(ProyectoTipoItemTableFiller, self).\ _do_get_provider_count_and_objs(**kw) filtrados = [] for ti in lista: if ti.id_proyecto == id_proyecto: filtrados.append(ti) return len(filtrados), filtrados
def _do_get_provider_count_and_objs(self, id_fase=None, id_tipo=None, **kw): """ Se muestra la lista de tipos de item para la fase en cuestión """ if id_tipo: ti = TipoItem.por_id(id_tipo) return 1, [ti] count, lista = super(TipoItemTableFiller, self).\ _do_get_provider_count_and_objs(**kw) filtrados = [] if id_fase: id_fase = int(id_fase) for t in lista: if t.id_fase == id_fase: if AlgunPermiso(tipo='Tipo', id_tipo_item=t.id_tipo_item).is_met(request.environ): filtrados.append(t) 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_tipo_item = UrlParser.parse_id(request.url, "tipositems") id_usuario = UrlParser.parse_id(request.url, "miembrostipo") usuario = Usuario.por_id(id_usuario) tipo = TipoItem.por_id(id_tipo_item) puede_asignar = PoseePermiso("asignar-desasignar rol", id_tipo_item=id_tipo_item).is_met( request.environ) titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario if request.response_type == 'application/json': return self.table_filler.get_value(usuario=usuario, asignados=False, id_tipo_item=id_tipo_item, **kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): roles = self.table_filler.get_value(usuario=usuario, asignados=False, id_tipo_item=id_tipo_item, **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 post_buscar(self, *args, **kw): id_tipo_item = UrlParser.parse_id(request.url, "tipositems") id_usuario = UrlParser.parse_id(request.url, "nomiembrostipo") usuario = Usuario.por_id(id_usuario) tipo = TipoItem.por_id(id_tipo_item) puede_desasignar = PoseePermiso("asignar-desasignar rol", id_tipo_item=id_tipo_item).is_met(request.environ) titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = MiembrosTipoRolesTableFiller(DBSession) buscar_table_filler.filtros = kw roles = buscar_table_filler.get_value(usuario=usuario, asignados=False, id_tipo_item=id_tipo_item, **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 id_padre(self, obj, **kw): ti = TipoItem.por_id(obj.id_padre) if ti: return ti.nombre return "No Tiene"
def tipo(self, obj, **kw): item = Item.por_id(obj.id_item_actual) ti = TipoItem.por_id(item.id_tipo_item) return ti.codigo
def codigo_tipo(self, obj, **kw): ti = TipoItem.por_id(obj.id_tipo_item) return ti.codigo
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: if (r.tipo.find(u"Sistema") == 0): for p in r.permisos: if (p.tipo.find(self.tipo) >= 0): return if (r.tipo.find(u"Proyecto") == 0): if (self.tipo == "Proyecto" and self.id_proyecto == r.id_proyecto): return elif (self.tipo == "Fase" or self.tipo == "Tipo"): algun = False for p in r.permisos: if (p.tipo.find(self.tipo) >= 0): algun = True break if (algun and self.id_proyecto == r.id_proyecto): return elif (algun and (self.id_fase + self.id_proyecto +\ self.id_tipo_item == 0)): return elif (r.tipo.find(u"Fase") == 0): if (self.tipo == "Fase"): if (self.id_fase == r.id_fase): return elif (not self.id_fase): fase = Fase.por_id(r.id_fase) if (self.id_proyecto == fase.id_proyecto): return elif (self.tipo == "Tipo"): algun = False for p in r.permisos: if (p.tipo.find(self.tipo) >= 0): algun = True break if (algun and self.id_fase == r.id_fase): return elif (algun and (self.id_fase + self.id_proyecto +\ self.id_tipo_item == 0)): return elif (r.tipo.find(u"Tipo") == 0): if (self.tipo == "Tipo"): if (self.id_tipo_item and ti.es_o_es_hijo(r.id_tipo_item)): return ti = TipoItem.por_id(r.id_tipo_item) if (ti.id_fase == self.id_fase or ti.id_proyecto == self.id_proyecto): return ''' algun = False for p in r.permisos: if p.nombre_permiso.find(u"consultar") < 0 and \ p.tipo.find(self.tipo) >= 0 and \ p.nombre_permiso != "miembro": algun = True break if not algun: continue if (self.id_fase + self.id_proyecto + self.id_tipo_item == 0): return 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)