leancloud.role 源代码

# coding: utf-8

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

import re

import six

import leancloud

__author__ = "asaka <lan@leancloud.rocks>"


[文档]class Role(leancloud.Object): def __init__(self, name=None, acl=None): super(Role, self).__init__() if name: self.set_name(name) if acl is None: acl = leancloud.ACL() acl.set_public_read_access(True) self.set_acl(acl) @property def name(self): return self.get("name") @name.setter def name(self, name): return self.set("name", name)
[文档] def get_name(self): """ 获取 Role 的 name,等同于 role.get('name') """ return self.get("name")
[文档] def set_name(self, name): """ 为 Role 设置 name,等同于 role.set('name', name) """ return self.set("name", name)
@property def users(self): return self.relation("users")
[文档] def get_users(self): """ 获取当前 Role 下所有绑定的用户。 """ return self.relation("users")
@property def roles(self): return self.relation("roles")
[文档] def get_roles(self): return self.relation("roles")
[文档] def validate(self, attrs): if "name" in attrs and attrs["name"] != self.get_name(): new_name = attrs["name"] if not isinstance(new_name, six.string_types): raise TypeError("role name must be string_types") r = re.compile(r"^[0-9a-zA-Z\-_]+$") if not r.match(new_name): raise TypeError( """ role's name can only contain alphanumeric characters, _, -, and spaces. """ ) return super(Role, self).validate(attrs)