perf(orgs): 默认组织改为实体组织,并支持全局组织 (#5617)

* perf(orgs): 默认组织改为实体组织

* perf: 添加获取当前组织信息的api

* perf: 资产列表在 root 组织下的表现

* fix: 修复 root 组织引起的问题

* perf: 优化OrgModelMixin save; org_root获取; org_roles获取; UserCanUseCurrentOrg权限类

Co-authored-by: ibuler <ibuler@qq.com>
Co-authored-by: Bai <bugatti_it@163.com>
This commit is contained in:
fit2bot
2021-03-02 14:57:48 +08:00
committed by GitHub
parent 51c9a89b1f
commit a56ac7b34e
19 changed files with 381 additions and 298 deletions

View File

@@ -23,14 +23,11 @@ class OrgManager(models.Manager):
def all_group_by_org(self):
from ..models import Organization
orgs = list(Organization.objects.all())
orgs.append(Organization.default())
querysets = {}
for org in orgs:
if org.is_real():
org_id = org.id
else:
org_id = ''
querysets[org] = super(OrgManager, self).get_queryset().filter(org_id=org_id)
org_id = org.id
queryset = super(OrgManager, self).get_queryset().filter(org_id=org_id)
querysets[org] = queryset
return querysets
def get_queryset(self):
@@ -53,12 +50,11 @@ class OrgModelMixin(models.Model):
def save(self, *args, **kwargs):
org = get_current_org()
if org is None:
return super().save(*args, **kwargs)
if org.is_real() or org.is_system():
if org.is_root():
if not self.org_id:
raise ValidationError('Please save in a organization')
else:
self.org_id = org.id
elif org.is_default():
self.org_id = ''
return super().save(*args, **kwargs)
@property
@@ -78,10 +74,7 @@ class OrgModelMixin(models.Model):
name = self.name
elif hasattr(self, 'hostname'):
name = self.hostname
if self.org.is_real():
return name + self.sep + self.org_name
else:
return name
return name + self.sep + self.org_name
def validate_unique(self, exclude=None):
"""
@@ -89,7 +82,7 @@ class OrgModelMixin(models.Model):
failed.
Form 提交时会使用这个检验
"""
self.org_id = current_org.id if current_org.is_real() else ''
self.org_id = current_org.id
if exclude and 'org_id' in exclude:
exclude.remove('org_id')
unique_checks, date_checks = self._get_unique_checks(exclude=exclude)