用于django的scim 2.0提供程序规范的部分实现。

django_scim的Python项目详细描述


这是scim 2.0[1]的部分提供者端实现 Django使用规范。它包括:

  • djangoUser对象到scim文档的序列化
  • <prefix>/Users/uid
  • 的rest视图
  • <prefix>/Users/.search
  • 的rest视图
  • 涵盖所有运算符和大多数字段的SCIM筛选器查询分析器
  • 有限的可插入性支持

请注意,目前唯一受支持的数据库是postgres。

安装

$ pip install django_scim

然后将django_scimapp添加到django设置中的INSTALLED_APPS 文件和必要的url映射:

urlpatterns = patterns('',
    url(r'^/scim/v2/Users/.search/?$',
        SearchView.as_view(), name='scim-search'),
    url(r'^/scim/v2/Users/([^/]+)$', UserView.as_view(), name='scim-user'),
)

扩展性

默认情况下,django_scim使用User类上的email字段。然而, 如果应用程序使用自定义的 数据库表,您可以重写django_scim.models.SCIMUser并将其 输入:

from django_scim.models import SCIMUser as _SCIMUser

from acme.apps.bb.models import Identity


class SCIMUser(_SCIMUser):
    def __init__(self, user):
        super(SCIMUser, self).__init__(user)
        self.identities = (Identity.objects
                                   .filter(profile__user_id=self.user.id))

    @property
    def emails(self):
        return {i.email: i.primary for i in self.identities}

在这里,我们将多个电子邮件地址保存在一个链接到 UserProfile。接下来,告诉视图使用这个类而不是 默认值:

url(r'^/scim/v2/Users/([^/]+)$', UserView.as_view(usercls=SCIMUser),
    name='scim-user'),

当您的电子邮件地址位于不同的表中时,您还需要扩展 筛选查询分析器,以确保可以在其上进行查询:

from django_scim.filter import SCIMFilterTransformer


class AcmeSCIMTransformer(SCIMFilterTransformer):
    email = lambda *args: 'i.email'

    def join(self):
        return """
            JOIN bb_userprofile p ON p.user_id = u.id
            LEFT OUTER JOIN bb_identity i ON i.profile_id = p.id
            """

并将其传递到视图:

url(r'^/scim/v2/Users/([^/]+)$',
    UserView.as_view(usercls=SCIMUser, parser=AcmeSCIMTransformer),
    name='scim-user'),
[1]http://www.simplecloud.info/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
添加组件后,java JTable为空   java将json发送到php并插入mysql,但返回null   java Spring引导JNDI CommonJ资源   从不同PC创建和合并后的Java servlet问题   java如何在使用findelements时从xpath获取文本   java使用spring boot使用gmail smtp发送电子邮件   java在不使用pojo、bean或getter和setter的情况下获取Json标题的Json数组   Java中的OpenFile对话框将null作为响应   JavaBuilder模式。扩展接口   java中无需替换的数据结构选取   java如何评价Encog中的预测神经网络   java如何在安卓中使用实际的HttpURLConnection进行单元测试?   java使用XML配置禁用WebSocket中的CSRF保护   java如何通过hibernate从多表查询中获取数据?   mysql如何在java中获取更新的行Id   java AEM/CQ组件单一组件/有限组件   java FFmpeg Javacv延迟问题   显示整数数组的java不起作用