Commit 4631d7de authored by jym503558564's avatar jym503558564

[Update] 修改一些问题

parent b9bb755c
...@@ -234,7 +234,7 @@ class CommandExecutionListView(UserCommandExecutionListView): ...@@ -234,7 +234,7 @@ class CommandExecutionListView(UserCommandExecutionListView):
return queryset return queryset
def get_user_list(self): def get_user_list(self):
users = current_org.get_org_members_exclude_auditors() users = current_org.get_org_members(include_auditors=False)
return users return users
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
......
...@@ -161,15 +161,11 @@ class NeedMFAVerify(permissions.BasePermission): ...@@ -161,15 +161,11 @@ class NeedMFAVerify(permissions.BasePermission):
class CanUpdateDeleteSuperUser(permissions.BasePermission): class CanUpdateDeleteSuperUser(permissions.BasePermission):
def has_object_permission(self, request, view, obj): def has_object_permission(self, request, view, obj):
if request.method in ['GET', 'OPTIONS']: if request.method == 'DELETE' and request.user.id == str(obj.id):
return True
elif request.method == 'DELETE' and str(request.user.id) == str(obj.id):
return False return False
elif request.method in ('DELETE', 'PATCH', 'PUT') and \ if request.method not in ('GET', 'OPTIONS') and \
not request.user.is_superuser and obj.is_auditor: not request.user.is_superuser and obj.is_auditor:
return False return False
elif request.user.is_superuser:
return True
if hasattr(obj, 'is_superuser') and obj.is_superuser: if hasattr(obj, 'is_superuser') and obj.is_superuser:
return False return False
return True return True
...@@ -67,16 +67,6 @@ class Organization(models.Model): ...@@ -67,16 +67,6 @@ class Organization(models.Model):
org = cls.default() if default else None org = cls.default() if default else None
return org return org
# def get_org_users(self, include_app=False):
# from users.models import User
# if self.is_real():
# users = self.users.all()
# else:
# users = User.objects.all()
# if not include_app:
# users = users.exclude(role=User.ROLE_APP)
# return users
def get_org_users(self): def get_org_users(self):
if self.is_real(): if self.is_real():
return self.users.all() return self.users.all()
...@@ -92,22 +82,18 @@ class Organization(models.Model): ...@@ -92,22 +82,18 @@ class Organization(models.Model):
return self.auditors.all() return self.auditors.all()
return [] return []
def get_org_members(self, include_app=False): def get_org_members(self, include_app=False, include_auditors=True):
from users.models import User from users.models import User
if self.is_real(): if self.is_real():
members = self.users.all() | self.auditors.all() members = self.get_org_users() | self.get_org_auditors()
else: else:
members = User.objects.all() members = User.objects.all()
if not include_app: if not include_app:
members = members.exclude(role=User.ROLE_APP) members = members.exclude(role=User.ROLE_APP)
if not include_auditors:
members = members.exclude(role=User.ROLE_AUDITOR)
return members return members
def get_org_members_exclude_auditors(self, include_app=False):
from users.models import User
members = self.get_org_members(include_app=include_app)
members_exclude_auditors = members.exclude(role=User.ROLE_AUDITOR)
return members_exclude_auditors
def can_admin_by(self, user): def can_admin_by(self, user):
if user.is_superuser: if user.is_superuser:
return True return True
...@@ -140,6 +126,13 @@ class Organization(models.Model): ...@@ -140,6 +126,13 @@ class Organization(models.Model):
admin_orgs.append(cls.default()) admin_orgs.append(cls.default())
return admin_orgs return admin_orgs
@classmethod
def get_user_audit_orgs(cls, user):
audit_orgs = []
if user.is_auditor:
audit_orgs = user.audit_orgs.all()
return audit_orgs
@classmethod @classmethod
def default(cls): def default(cls):
return cls(id=cls.DEFAULT_ID, name=cls.DEFAULT_NAME) return cls(id=cls.DEFAULT_ID, name=cls.DEFAULT_NAME)
......
...@@ -39,7 +39,7 @@ class AssetPermissionForm(OrgModelForm): ...@@ -39,7 +39,7 @@ class AssetPermissionForm(OrgModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
users_field = self.fields.get('users') users_field = self.fields.get('users')
users_field.queryset = current_org.get_org_members_exclude_auditors() users_field.queryset = current_org.get_org_members(include_auditors=False)
nodes_field = self.fields['nodes'] nodes_field = self.fields['nodes']
nodes_field.choices = ((n.id, n.full_value) for n in Node.get_queryset()) nodes_field.choices = ((n.id, n.full_value) for n in Node.get_queryset())
......
...@@ -19,7 +19,7 @@ class RemoteAppPermissionCreateUpdateForm(OrgModelForm): ...@@ -19,7 +19,7 @@ class RemoteAppPermissionCreateUpdateForm(OrgModelForm):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
users_field = self.fields.get('users') users_field = self.fields.get('users')
if hasattr(users_field, 'queryset'): if hasattr(users_field, 'queryset'):
users_field.queryset = current_org.get_org_members_exclude_auditors() users_field.queryset = current_org.get_org_members(include_auditors=False)
class Meta: class Meta:
model = RemoteAppPermission model = RemoteAppPermission
......
...@@ -135,7 +135,7 @@ class AssetPermissionUserView(PermissionsMixin, ...@@ -135,7 +135,7 @@ class AssetPermissionUserView(PermissionsMixin,
context = { context = {
'app': _('Perms'), 'app': _('Perms'),
'action': _('Asset permission user list'), 'action': _('Asset permission user list'),
'users_remain': current_org.get_org_members_exclude_auditors().exclude( 'users_remain': current_org.get_org_members(include_auditors=False).exclude(
assetpermission=self.object assetpermission=self.object
), ),
'user_groups_remain': UserGroup.objects.exclude( 'user_groups_remain': UserGroup.objects.exclude(
......
...@@ -107,7 +107,7 @@ class RemoteAppPermissionUserView(PermissionsMixin, ...@@ -107,7 +107,7 @@ class RemoteAppPermissionUserView(PermissionsMixin,
context = { context = {
'app': _('Perms'), 'app': _('Perms'),
'action': _('RemoteApp permission user list'), 'action': _('RemoteApp permission user list'),
'users_remain': current_org.get_org_members_exclude_auditors().exclude( 'users_remain': current_org.get_org_members(include_auditors=False).exclude(
remoteapppermission=self.object remoteapppermission=self.object
), ),
'user_groups_remain': UserGroup.objects.exclude( 'user_groups_remain': UserGroup.objects.exclude(
......
...@@ -335,7 +335,7 @@ class UserGroupForm(OrgModelForm): ...@@ -335,7 +335,7 @@ class UserGroupForm(OrgModelForm):
return return
users_field = self.fields.get('users') users_field = self.fields.get('users')
if hasattr(users_field, 'queryset'): if hasattr(users_field, 'queryset'):
users_field.queryset = current_org.get_org_members_exclude_auditors() users_field.queryset = current_org.get_org_members(include_auditors=False)
def save(self, commit=True): def save(self, commit=True):
group = super().save(commit=commit) group = super().save(commit=commit)
......
...@@ -167,7 +167,7 @@ class RoleMixin: ...@@ -167,7 +167,7 @@ class RoleMixin:
@property @property
def audit_orgs(self): def audit_orgs(self):
from orgs.models import Organization from orgs.models import Organization
return Organization.get_user_admin_orgs(self) return Organization.get_user_audit_orgs(self)
@property @property
def is_org_auditor(self): def is_org_auditor(self):
......
...@@ -76,7 +76,7 @@ class UserGroupDetailView(PermissionsMixin, DetailView): ...@@ -76,7 +76,7 @@ class UserGroupDetailView(PermissionsMixin, DetailView):
permission_classes = [IsOrgAdmin] permission_classes = [IsOrgAdmin]
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
users = current_org.get_org_members_exclude_auditors().exclude(id__in=self.object.users.all()) users = current_org.get_org_members(include_auditors=False).exclude(id__in=self.object.users.all())
context = { context = {
'app': _('Users'), 'app': _('Users'),
'action': _('User group detail'), 'action': _('User group detail'),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment