mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-20 19:09:02 +00:00
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:
@@ -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)
|
||||
|
Reference in New Issue
Block a user