Kiwi TCMS的多租户支持
项目描述
简介
此包为Kiwi TCMS提供多租户支持,并围绕django-tenants进行包装。您可以使用它来在同一应用服务器上托管不同的组织或托管多个由不同团队使用的不同产品实例。每个租户只能看到自己创建的信息。
安装
重要: 多租户由PostgreSQL模式支持!它不适用于不同的数据库后端。
警告: 当前租户基于访问Kiwi TCMS的FQDN来决定!
需要在下游Docker镜像或托管主Kiwi TCMS实例的Python虚拟env中引入以下更改
pip install kiwitcms-tenants
然后确保KIWI_TENANTS_DOMAIN环境变量已指定!!!其余设置安装到tcms_settings_dir/multi_tenant.py,Kiwi TCMS将自动获取它们!
首次启动配置
当您首次启动多租户Kiwi TCMS实例时,您还需要创建所谓的公共租户的信息。这就是您的应用程序运行在上的默认租户。
./manage.py initial_setup
您的租户将在 https://$KIWI_TENANTS_DOMAIN 上可用!其他租户可以通过网页界面创建,并将位于 team-01.$KIWI_TENANTS_DOMAIN、product-02.$KIWI_TENANTS_DOMAIN 等等,具体取决于您提供的实际 模式名称。
DNS 配置
您需要配置通配符 DNS 解析,以支持 *.tenants.example.org!
如果使用 AWS Route 53,请为 example.org 域创建一个 A 记录,名称为 Name==*.tenants,并将其指向 Kiwi TCMS 实例的 IP 地址。
一旦 DNS 配置完成,您应该能够使用工具如 dig 和 nslookup 查询各种域名。
$ dig public.tenant.kiwitcms.org ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-12.P2.el7 <<>> public.tenant.kiwitcms.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58543 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;public.tenant.kiwitcms.org. IN A ;; ANSWER SECTION: public.tenant.kiwitcms.org. 36 IN A 100.24.231.234 ;; Query time: 35 msec ;; SERVER: 10.38.5.26#53(10.38.5.26) ;; WHEN: Tue Nov 19 14:04:09 EET 2019 ;; MSG SIZE rcvd: 71 $ nslookup linux.tenant.kiwitcms.org Server: 10.38.5.26 Address: 10.38.5.26#53 Non-authoritative answer: Name: linux.tenant.kiwitcms.org Address: 100.24.231.234
所有子域名应解析到相同的 IP 地址!
从单租户迁移到多租户
请参阅官方 django-tenants 文档中的 从单租户迁移到多租户 部分!该部分由 Kiwi TCMS 团队贡献,这是我们迁移先前演示网站(ST)到其新 MT 版本的流程!
本地开发
从 Kiwi TCMS v13.1 开始,会话和 CSRF 饼干仅配置在 HTTPS 连接上,这将防止浏览器在纯文本 HTTP 连接上发送饼干。这将导致使用本地开发服务器时无法登录。为了解决这个问题,首先生成一个 SSL 证书
/usr/bin/sscg -v -f --country BG --locality Sofia --organization "Kiwi TCMS" --organizational-unit "QA" --ca-file ssl/ca.crt --cert-file ssl/host.crt --cert-key-file ssl/host.key
然后使用 runerver_plus 命令以 HTTPS 启动 Kiwi TCMS 开发服务器
PYTHONPATH=../Kiwi/ KIWI_TENANTS_DOMAIN=tenant.example.bg ./manage.py runserver_plus --cert-file ssl/host.crt --key-file ssl/host.key
然后,将您的浏览器指向 https://tenant.example.bg:8000/。浏览器上的 SSL 警告是预期的!
您可以使用您的 操作系统主机文件 在开发期间配置 DNS 解析
127.0.0.1 localhost tenant.example.bg empty.tenant.example.bg
变更日志
v3.2.0 (28 Aug 2024)
将 django-tenants 从 3.6.1 更新到 3.7.0
v3.1.0 (02 Jul 2024)
添加用于 TENANT_SCHEMA_NAME 模板变量的上下文处理器
更新测试套件以适应 Django 5 的更改
v3.0.0 (09 Jun 2024)
将此软件包重新授权为 GNU Affero 通用公共许可证 v3 或更高版本
先前版本仍受 GNU 通用公共许可证 v3 许可
v2.8.3 (02 May 2024)
在克隆租户时,请确保填写 extra_emails 字段
v2.8.2 (01 May 2024)
允许下游安装覆盖编辑租户页面模板
v2.8.1 (29 Apr 2024)
错误修复:在邀请用户页面上显示空字符串而不是 None
添加针对使用 settings.EMAIL_VALIDATORS 无法验证的电子邮件的 utils 函数的测试
v2.8.0 (28 Apr 2024)
重构邀请用户页面 HTML 模板以显示表单字段错误
在邀请用户时,考虑到 settings.EMAIL_VALIDATORS 的值来验证地址
更新文档
调整测试以适应 django-grappelli 的较新版本
v2.7.0 (24 Apr 2024)
添加 Tenant.extra_emails 字段以存储技术电子邮件、账单电子邮件等信息。供附加工具使用
添加 initialize_tenants 管理命令
更新本地开发说明
使用 black 启用代码格式化
开始使用上游 Postgres 容器进行测试
在拉取请求和分支上执行 CodeQL
调整测试以适应 Django 5.0
v2.6.1 (08 Mar 2024)
从租户名称区域移除对 non-existing.png 文件的引用,以避免触发速率限制的 404 响应
v2.6.0 (14 Jan 2024)
将 django-tenants 从 3.5.0 更新到 3.6.1
将pylint-django从2.5.3更新到2.5.5
使用Python 3.11开始构建和测试
开始使用psycopg3进行测试
v2.5.2(2023年10月24日)
将trackers_integration添加到tenant_groups.models.Group.relevant_apps中,以便为个人API令牌的权限进行按租户分配,请参阅https://github.com/kiwitcms/trackers-integration/pull/44
v2.5.1(2023年5月12日)
更新到django-tenants==3.5.0
替换已被Kiwi TCMS v12.2移除的form_errors_to_list()
v2.5.0(2023年2月10日)
更新到django-tenants==3.4.8
修复Kiwi TCMS v11.7或更高版本创建租户页面上的错误
v2.4.0(2022年11月15日)
允许自定义租户徽标以在导航中进行自定义(Ivajlo Karabojkov)
添加CodeQL工作流程以进行GitHub代码扫描
修复make消息命令
v2.3.2(2022年10月31日)
将django-tenants从3.4.5更新到3.4.7
在空租户上不要添加用户到TenantGroup
调整从租户管理页面到重定向以避免混淆
更新初始配置文档
在测试中添加更多断言
v2.3.1(2022年9月10日)
如果不存在该属性,则不要访问request.tenant。修复KIWI-TCMS-K2
v2.3.0(2022年9月2日)
即使在公开可读的租户上也不要授予auth.view_权限
尊重settings.DEFAULT_GROUPS而不是硬编码。被邀请的用户和通过管理面板授权的用户将被添加到与settings.DEFAULT_GROUPS匹配的租户组(默认为“测试员”),如果此类租户组存在。如果设置是一个空列表或没有匹配特定名称的租户组,则授权用户将无法关联组。将取决于Kiwi TCMS管理员手动为每个用户分配权限和租户组。
v2.2.1(2022年8月30日)
修复create_oss_tenant()辅助函数中的错误
v2.2.0(2022年8月14日)
将django-tenants从3.4.2更新到3.4.4
在导航中显示租户信息(Ivajlo Karabojkov)
允许编辑Tenant.name,以使管理员更容易在导航中自定义显示的文本!
关于测试和CI的内部更新
v2.1.1(2022年4月27日)
如果用户无法更改租户组,则不会崩溃。修复KIWI-TCMS-J8
v2.1.0(2022年4月27日)
添加refresh_tenant_permissions命令,该命令将由refresh_permissions自动执行
v2.0.1(2022年4月19日)
修复帮助消息中的URL
v2.0.0(2022年4月18日)
定义每个租户的Group模型,并添加一个身份验证后端,该后端将消耗来自tenant-groups的权限。关闭#104 问题#104
添加pre-commit CI配置并应用自动修复
v1.11.0(2022年1月24日)
添加对KIWI_TENANTS_DOMAIN环境变量的系统检查。关闭问题#140
v1.10.0(2022年1月19日)
将django-tenants从3.4.1更新到3.4.2,将有助于迁移到Django 4
v1.9.0(2022年1月10日)
将django-tenants从3.3.4更新到3.4.1
更新测试的预期错误消息
修复代码覆盖率上传
v1.8.0(2021年10月16日)
将django-tenants从3.3.2更新到3.3.4。修复了当数据库用户名包含短横线时克隆租户的bug
使用f-strings,因为pylint真的很喜欢它们
v1.7.0(2021年9月3日)
使用clone_tenant加快租户创建速度。修复问题#127!需要存在名称为empty的模式!
修复pylint警告
从Travis CI迁移到GitHub Actions
v1.6.0(2021年6月18日)
将django-tenants从3.3.1更新到3.3.2
增强租户域名检测的鲁棒性,避免在公共租户的域名不使用前缀的情况下出现错误(例如,与 KIWI_TENANT_DOMAIN 匹配)
v1.5.0 (04 Jun 2021)
数据库:重命名 Tenant.on_trial -> Tenant.publicly_readable
允许未经授权的用户访问公开可读的租户
将 django-tenants 从 3.3.0 更新到 3.3.1
更新翻译字符串
与 Kiwi TCMS v10.1 进行测试
将 NewTenantForm 转换为从 ModelForm 继承
v1.4.4 (12 May 2021)
将 django-tenants 从 3.2.1 更新到 3.3.0
与 Kiwi TCMS v10.0 进行测试
与 Python 3.8 进行测试
v1.4.3 (25 Jan 2021)
在 NewTenantForm 中添加缺失的 csrf_token
v1.4.2 (23 Dec 2020)
修复我们在用户注册表中覆盖 captcha 字段时的一个错误
修复邀请电子邮件的主题
v1.4 (23 Dec 2020)
v1.3.1 (09 Sep 2020)
替换弃用的导入以消除 Django 3.1 的警告
v1.3 (26 Aug 2020)
与 Kiwi TCMS v8.6 进行测试
将 django-tenants 从 3.1.0 更新到 3.2.1
不要在 devel.txt 中固定依赖项
v1.2.1 (24 Jul 2020)
即使发生错误也要过滤掉 AuthorizedUsersChangeForm
与 Kiwi TCMS v8.5 进行测试
v1.2 (20 Jun 2020)
将 django-tenants 从 3.0.3 更新到 3.1.0
改进测试并对 linters 进行一些小的更新
与 Kiwi TCMS v8.4 进行测试
v1.1.1 (27 Apr 2020)
不提供 TENANT_APPS,因为它与 Kiwi TCMS v8.3 一起分发
v1.1 (25 Apr 2020)
恢复改进的 schema_name 的 HTML 占位符
正确验证 schema/域名输入值
v1.0.3 (24 Apr 2020)
始终将 schema_name 转换为小写,以确保它实际上可以作为有效的主机名使用
v1.0.2 (24 Apr 2020)
将 django-tenants 从 3.0.1 更新到 3.0.3
在 UI 中将有效的 schema_name 模式显示为帮助文本
删除 schema_name 的占位符文本,因为它具有误导性
v1.0.1 (18 Mar 2020)
略微调整设置 TENANT_APPS 和 MULTITENANT_RELATIVE_MEDIA_ROOT 的默认值,以匹配 Kiwi TCMS 和在此软件包成为插件之前的安装。这将避免破坏现有部署!
v1.0 (15 Mar 2020)
将其转换为合适的 Kiwi TCMS 插件,并在 tcms_settings_dir/ 下安装设置覆盖(与 Kiwi TCMS v8.2 或更高版本兼容)
不再需要 MENU_ITEMS 和 ROOT_URLCONF 覆盖
不需要手动在 INSTALLED_APPS 中加载 tcms_tenants
只需指定 KIWI_TENANTS_DOMAIN 环境变量即可!
为 NewTenantView 需要 tcms_tenants.add_tenant 权限
将 NewTenantView 重新实现为 FormView
重构 redirect_to() 为基于类的视图
为 admin.py 添加测试。关闭 #5 问题 #5
将 datetime.now 替换为 timezone.now 以更好地支持启用了时区配置的安装
启用 pylint。关闭 问题 #17
启用 flake8
v0.5.1 (17 Feb 2020)
将django-tenants从3.0.0升级到3.0.1。修复了问题#60
v0.5 (2020年1月16日)
将django-tenants从2.2.3升级到3.0.0
成功测试与Kiwi TCMS v7.3以及Django 3.0兼容
v0.4.7 (2019年12月11日)
将tcms_tenants.tests.LoggedInTestCase.tenant.owner.password设置为“password”,以便下游测试可以重用
v0.4.6 (2019年12月11日)
添加斯洛文尼亚语的新翻译
在Django 3.0中将ugettext_lazy替换为gettext_lazy
开始提供tcms_tenants.tests以便其他多租户插件包使用
确认与Kiwi TCMS v7.2兼容
v0.4.5 (2019年11月24日)
记录如何配置多租户
记录ST到MT迁移
添加辅助方法create_oss_tenant()
在测试期间对TENANT_APPS进行内部更新
v0.4.4 (2019年10月29日)
添加俄语新翻译
v0.4.3 (2019年5月18日)
添加Tenant.organization字段
在创建租户时将site.name设置为tenant.domain.domain
v0.4.0 (2019年5月12日)
允许通过名为form_action_url的额外上下文变量覆盖创建租户表单的URL
v0.3.0 (2019年5月8日)
创建新租户时发送电子邮件
添加可以用于阻止未付款租户的中介件
重写中介件,去除已弃用的MiddlewareMixin,参见问题#17
添加更多测试
v0.2.0 (2019年5月5日)
从TENANT_APPS中移除django.contrib.contenttypes
简化重写NewTenantView的过程
使用DateTimeField代替DateField
在Admin中显示第一个主域名
大幅加速测试
Pylint修复
v0.1.10 (2019年5月3日)
恢复带有可选schema_name参数的tenant_url模板标签
v0.1.9 (2019年5月3日)
修复失败的测试
v0.1.8 (2019年5月3日)
修复缺少迁移目录的打包问题
添加视图,方便GitHub登录和重定向。调用者应通过公开租户进行OAuth登录,然后重定向到该视图,浏览器将被发送到实际租户!这将解决由于只能指定一个重定向URI而从GitHub看到的redirect_uri不匹配问题
pylint修复
移除未使用的templatetags/目录
v0.1.6 (2019年4月28日)
租户对象现在有所有者
v0.1.5 (2019年4月24日)
将django-tenants更新到2.2.3
添加斯洛文尼亚语的新翻译
在wheel包中不包含test_project/文件
v0.1.4 (2019年4月15日)
更新到django-tenants 2.2.0以支持Django 2.2
v0.1.3 (2019年4月10日)
将设置TCMS_TENANTS_DOMAIN重命名为KIWI_TENANTS_DOMAIN
v0.1.2 (2019年4月4日) - 初次发布
支持通过Web界面创建租户
仅允许超级用户删除租户
支持授权其他用户访问当前租户
当未经授权的用户尝试访问租户时,返回403禁止访问的中介件
支持覆盖tcms_tenants/new.html模板以提供SLA、条款和条件等
项目详情
下载文件
下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于 安装包的信息。
源代码分布
构建分布
kiwitcms-tenants-3.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a56a02abfd615a94f6e90a65b2812ea15d3ada6987a936b966c0ec00ac2b0dd4 |
|
MD5 | d9af4df8d00a09db296fd81715f6e59a |
|
BLAKE2b-256 | 58dc0def66f534f0baf92af45a9744b8e9ffdde98e7879abf0de47f908b58642 |
kiwitcms_tenants-3.2.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 55c501f5b6d64cf629ac698baad93be7a437b1214293ff673191051238553ccc |
|
MD5 | 711435e86056a41097b4101f88271ae5 |
|
BLAKE2b-256 | 323bcf0ab0f1e02c23d110dca547551e894ab6e2ed9d9ce5961fd7a13af30645 |