perf: 资产授权支持 delete 控制

This commit is contained in:
ibuler
2023-05-25 18:42:54 +08:00
committed by Jiangjie.Bai
parent 73102fceb0
commit 9932e7eadd
5 changed files with 49 additions and 5 deletions

View File

@@ -61,3 +61,28 @@ class UserAssetAccountBaseACL(BaseACL, OrgModelMixin):
class Meta(BaseACL.Meta):
unique_together = ('name', 'org_id')
abstract = True
@classmethod
def filter_queryset(cls, user=None, asset=None, account=None, account_username=None, **kwargs):
queryset = cls.objects.all()
org_id = None
if user:
q = cls.users.get_filter_q(user)
queryset = queryset.filter(q)
if asset:
org_id = asset.org_id
q = cls.assets.get_filter_q(asset)
queryset = queryset.filter(q)
if account and not account_username:
account_username = account.username
if account_username:
q = models.Q(accounts__contains=account_username) | \
models.Q(accounts__contains='*') | \
models.Q(accounts__contains='@ALL')
queryset = queryset.filter(q)
if org_id:
kwargs['org_id'] = org_id
if kwargs:
queryset = queryset.filter(**kwargs)
return queryset.distinct()