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 desasignar_roles(self, *args, **kw): """ Desasigna los roles seleccionados a un usuario """ if kw: pks = [] for k, pk in kw.items(): if not k.isalnum(): continue pks.append(int(pk)) transaction.begin() id_user = UrlParser.parse_id(request.url, "usuarios") user = Usuario.por_id(id_user) c = 0 while c < len(user.roles): if user.roles[c].id_rol in pks: r = user.roles[c] if r.nombre_rol == u"Administrador del Sistema" and \ len(r.usuarios) == 1: #verificamos que haya mas de un administrador #del sistema msg = "No puedes eliminar el rol {nr}. Solo existe " msg += "un {nr}, y es usted." flash(msg.format(nr=r.nombre_rol), "warning") return "./" del user.roles[c] else: c += 1 transaction.commit() flash("Roles Desasignados correctamente") return "./"
def asignar_roles(self, *args, **kw): """ Asigna los roles seleccionados a un usuario """ if kw: pks = [] for k, pk in kw.items(): if not k.isalnum(): continue pks.append(int(pk)) transaction.begin() id_user = UrlParser.parse_id(request.url, "miembros") id_proyecto = UrlParser.parse_id(request.url, "proyectos") user = Usuario.por_id(id_user) roles = DBSession.query(Rol).filter(Rol.id_rol.in_(pks)).all() for r in roles: if r.tipo.find( u"Plantilla") >= 0: #crear rol a partir de plantilla rol_new = Rol.nuevo_rol_desde_plantilla(plantilla=r, id=id_proyecto) rol_new.usuarios.append(user) else: r.usuarios.append(user) transaction.commit() flash("Roles Asignados correctamente") else: flash("Seleccione por lo menos un rol", "warning") return "./"
def asignar_roles(self, *args, **kw): """ Asigna los roles seleccionados a un usuario """ if kw: pks = [] for k, pk in kw.items(): if not k.isalnum(): continue pks.append(int(pk)) transaction.begin() id_user = UrlParser.parse_id(request.url, "nomiembros") id_proyecto = UrlParser.parse_id(request.url, "proyectos") user = Usuario.por_id(id_user) roles = DBSession.query(Rol).filter(Rol.id_rol.in_(pks)).all() for r in roles: if r.tipo.find(u"Plantilla") >= 0: #crear rol a partir de plantilla rol_new = Rol.nuevo_rol_desde_plantilla(plantilla=r, id=id_proyecto) rol_new.usuarios.append(user) else: r.usuarios.append(user) transaction.commit() flash("Roles Asignados correctamente") else: flash("Seleccione por lo menos un rol", "warning") return "./"
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_usuario = UrlParser.parse_id(request.url, "usuarios") usuario = Usuario.por_id(id_usuario) puede_asignar = PoseePermiso("asignar-desasignar rol") \ .is_met(request.environ) titulo = "Roles Desasignados de Sistema para: %s" % usuario.nombre_usuario if request.response_type == 'application/json': return self.table_filler.get_value(usuario=usuario, asignados=False, **kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): roles = self.table_filler.get_value(usuario=usuario, asignados=False, **kw) else: roles = [] tmpl_context.widget = self.table atras = "/usuarios/" return dict(lista_elementos=roles, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action=self.action, atras=atras, puede_asignar=puede_asignar)
def desasignar_roles(self, *args, **kw): """ Desasigna los roles seleccionados a un usuario """ if kw: pks = [] for k, pk in kw.items(): if not k.isalnum(): continue pks.append(int(pk)) transaction.begin() id_user = UrlParser.parse_id(request.url, "miembrosfase") user = Usuario.por_id(id_user) c = 0 while c < len(user.roles): r = user.roles[c] if r.id_rol in pks: if r.nombre_rol == "Miembro de Fase": msg = "No puedes eliminar el rol {nr}. Si deseas " msg += "que el usuario deje de ser miembro, debes " msg += "hacerlo en la pagina de Miembros de la Fase." flash(msg.format(nr=r.nombre_rol), "warning") DBSession.rollback() return "./" del user.roles[c] else: c += 1 transaction.commit() flash("Roles Desasignados correctamente") else: flash("Seleccione por lo menos un rol", "warning") return "./"
def post_buscar(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") id_usuario = UrlParser.parse_id(request.url, "miembros") usuario = Usuario.por_id(id_usuario) proy = Proyecto.por_id(id_proyecto) puede_asignar = PoseePermiso("asignar-desasignar rol", id_proyecto=id_proyecto).is_met( request.environ) titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = MiembrosProyectoRolesTableFiller(DBSession) buscar_table_filler.filtros = kw roles = buscar_table_filler.get_value(usuario=usuario, asignados=False, id_proyecto=id_proyecto, **kw) atras = "/proyectos/%d/miembros/" % id_proyecto 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 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 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_desasignar = PoseePermiso("asignar-desasignar rol", id_fase=id_fase).is_met( request.environ) titulo = "Roles de: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = MiembrosFaseRolesTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(usuario=usuario, id_fase=id_fase, **kw) atras = "../../" return dict(lista_elementos=usuarios, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action="../", atras=atras, puede_desasignar=puede_desasignar)
def put(self, *args, **kw): if "sprox_id" in kw: del kw["sprox_id"] if "repita_nuevo_password" in kw: del kw["repita_nuevo_password"] if kw["nro_documento"]: kw["nro_documento"] = int(kw["nro_documento"]) username = request.identity['repoze.who.userid'] usuario = Usuario.by_user_name(username) id_usuario = UrlParser.parse_id(request.url, "usuarios") if (usuario.id_usuario != id_usuario): pp = PoseePermiso('modificar usuario') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(self.action) usuario = Usuario.por_id(args[0]) usuario.nombre = kw["nombre"] usuario.apellido = kw["apellido"] usuario.email = kw["email"] usuario.telefono = kw["telefono"] usuario.nro_documento = kw["nro_documento"] if kw["nuevo_password"] != None and kw.has_key('cambiar_pass'): usuario.password = kw["nuevo_password"] redirect("../")
def post_buscar(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") id_usuario = UrlParser.parse_id(request.url, "miembros") usuario = Usuario.por_id(id_usuario) proy = Proyecto.por_id(id_proyecto) puede_desasignar = PoseePermiso("asignar-desasignar rol", id_proyecto=id_proyecto).is_met(request.environ) titulo = "Roles de: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = MiembrosProyectoRolesTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(usuario=usuario, id_proyecto=id_proyecto, **kw) atras = "/proyectos/%d/miembros/" % id_proyecto return dict(lista_elementos=usuarios, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action="../", atras=atras, puede_desasignar=puede_desasignar)
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 asignar_roles(self, *args, **kw): """ Asigna los roles seleccionados a un usuario """ if kw: pks = [] for k, pk in kw.items(): if not k.isalnum(): continue pks.append(int(pk)) transaction.begin() id_user = UrlParser.parse_id(request.url, "usuarios") user = Usuario.por_id(id_user) roles = DBSession.query(Rol).filter(Rol.id_rol.in_(pks)).all() for r in roles: r.usuarios.append(user) transaction.commit() flash("Roles Asignados correctamente") return "./"
def post_buscar(self, *args, **kw): id_usuario = UrlParser.parse_id(request.url, "usuarios") usuario = Usuario.por_id(id_usuario) puede_desasignar = PoseePermiso("asignar-desasignar rol") \ .is_met(request.environ) titulo = "Roles de Sistema para: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = UsuarioRolesTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(usuario=usuario, **kw) atras = "/usuarios/" return dict(lista_elementos=usuarios, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action="../", atras=atras, puede_desasignar=puede_desasignar)
def edit(self, *args, **kw): """Despliega una pagina para modificar usuario""" username = request.identity['repoze.who.userid'] usuario = Usuario.by_user_name(username) if usuario.id_usuario != int(args[0]): pp = PoseePermiso('modificar usuario') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("/usuarios") tmpl_context.widget = self.edit_form user = Usuario.por_id(args[0]) page = "Usuario {nombre}".format(nombre=user.nombre_usuario) atras = "/usuarios/" value = self.edit_filler.get_value(values={'id_usuario': args[0]}) value['_method'] = 'PUT' return dict(value=value, page=page, id=args[0], atras=atras )
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)