From b74ec483939d32acfa0b364304dbae2c655530ee Mon Sep 17 00:00:00 2001 From: "Jiangjie.Bai" Date: Thu, 13 Oct 2022 18:19:18 +0800 Subject: [PATCH] =?UTF-8?q?refacotr:=20=E6=8B=86=E5=88=86=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E6=A8=A1=E5=9D=97=E7=9A=84=E7=9B=AE=E5=BD=95=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/models/__init__.py | 1 + apps/perms/models/asset_permission.py | 46 ++----------------------- apps/perms/models/const.py | 48 +++++++++++++++++++++++++++ apps/perms/tests.py | 3 -- apps/perms/utils/permission.py | 4 +++ 5 files changed, 56 insertions(+), 46 deletions(-) create mode 100644 apps/perms/models/const.py diff --git a/apps/perms/models/__init__.py b/apps/perms/models/__init__.py index 0c7e25c70..9cb0efc76 100644 --- a/apps/perms/models/__init__.py +++ b/apps/perms/models/__init__.py @@ -2,3 +2,4 @@ # from .asset_permission import * +from .const import * diff --git a/apps/perms/models/asset_permission.py b/apps/perms/models/asset_permission.py index 9d444268f..91b894105 100644 --- a/apps/perms/models/asset_permission.py +++ b/apps/perms/models/asset_permission.py @@ -11,7 +11,8 @@ from assets.models import Asset, Node, FamilyMixin, Account from orgs.mixins.models import OrgModelMixin from orgs.mixins.models import OrgManager from common.utils import lazyproperty, date_expired_default -from common.db.models import BaseCreateUpdateModel, BitOperationChoice, UnionQuerySet +from common.db.models import BaseCreateUpdateModel, UnionQuerySet +from .const import Action, SpecialAccount __all__ = [ 'AssetPermission', 'PermNode', @@ -23,44 +24,6 @@ __all__ = [ logger = logging.getLogger(__name__) -class Action(BitOperationChoice): - ALL = 0xff - CONNECT = 0b1 - UPLOAD = 0b1 << 1 - DOWNLOAD = 0b1 << 2 - CLIPBOARD_COPY = 0b1 << 3 - CLIPBOARD_PASTE = 0b1 << 4 - UPDOWNLOAD = UPLOAD | DOWNLOAD - CLIPBOARD_COPY_PASTE = CLIPBOARD_COPY | CLIPBOARD_PASTE - - DB_CHOICES = ( - (ALL, _('All')), - (CONNECT, _('Connect')), - (UPLOAD, _('Upload file')), - (DOWNLOAD, _('Download file')), - (UPDOWNLOAD, _("Upload download")), - (CLIPBOARD_COPY, _('Clipboard copy')), - (CLIPBOARD_PASTE, _('Clipboard paste')), - (CLIPBOARD_COPY_PASTE, _('Clipboard copy paste')) - ) - - NAME_MAP = { - ALL: "all", - CONNECT: "connect", - UPLOAD: "upload_file", - DOWNLOAD: "download_file", - UPDOWNLOAD: "updownload", - CLIPBOARD_COPY: 'clipboard_copy', - CLIPBOARD_PASTE: 'clipboard_paste', - CLIPBOARD_COPY_PASTE: 'clipboard_copy_paste' - } - - NAME_MAP_REVERSE = {v: k for k, v in NAME_MAP.items()} - CHOICES = [] - for i, j in DB_CHOICES: - CHOICES.append((NAME_MAP[i], j)) - - class AssetPermissionQuerySet(models.QuerySet): def active(self): return self.filter(is_active=True) @@ -79,7 +42,7 @@ class AssetPermissionQuerySet(models.QuerySet): def filter_by_accounts(self, accounts): q = Q(accounts__contains=list(accounts)) | \ - Q(accounts__contains=AssetPermission.SpecialAccount.ALL.value) + Q(accounts__contains=SpecialAccount.ALL.value) return self.filter(q) @@ -89,9 +52,6 @@ class AssetPermissionManager(OrgManager): class AssetPermission(OrgModelMixin): - class SpecialAccount(models.TextChoices): - ALL = '@ALL', 'All' - id = models.UUIDField(default=uuid.uuid4, primary_key=True) name = models.CharField(max_length=128, verbose_name=_('Name')) users = models.ManyToManyField('users.User', blank=True, verbose_name=_("User"), diff --git a/apps/perms/models/const.py b/apps/perms/models/const.py new file mode 100644 index 000000000..6128418b0 --- /dev/null +++ b/apps/perms/models/const.py @@ -0,0 +1,48 @@ +from django.db import models +from django.utils.translation import ugettext_lazy as _ +from common.db.models import BitOperationChoice + + +__all__ = ['Action', 'SpecialAccount'] + + +class Action(BitOperationChoice): + ALL = 0xff + CONNECT = 0b1 + UPLOAD = 0b1 << 1 + DOWNLOAD = 0b1 << 2 + CLIPBOARD_COPY = 0b1 << 3 + CLIPBOARD_PASTE = 0b1 << 4 + UPDOWNLOAD = UPLOAD | DOWNLOAD + CLIPBOARD_COPY_PASTE = CLIPBOARD_COPY | CLIPBOARD_PASTE + + DB_CHOICES = ( + (ALL, _('All')), + (CONNECT, _('Connect')), + (UPLOAD, _('Upload file')), + (DOWNLOAD, _('Download file')), + (UPDOWNLOAD, _("Upload download")), + (CLIPBOARD_COPY, _('Clipboard copy')), + (CLIPBOARD_PASTE, _('Clipboard paste')), + (CLIPBOARD_COPY_PASTE, _('Clipboard copy paste')) + ) + + NAME_MAP = { + ALL: "all", + CONNECT: "connect", + UPLOAD: "upload_file", + DOWNLOAD: "download_file", + UPDOWNLOAD: "updownload", + CLIPBOARD_COPY: 'clipboard_copy', + CLIPBOARD_PASTE: 'clipboard_paste', + CLIPBOARD_COPY_PASTE: 'clipboard_copy_paste' + } + + NAME_MAP_REVERSE = {v: k for k, v in NAME_MAP.items()} + CHOICES = [] + for i, j in DB_CHOICES: + CHOICES.append((NAME_MAP[i], j)) + + +class SpecialAccount(models.TextChoices): + ALL = '@ALL', 'All' diff --git a/apps/perms/tests.py b/apps/perms/tests.py index 344266b19..e69de29bb 100644 --- a/apps/perms/tests.py +++ b/apps/perms/tests.py @@ -1,3 +0,0 @@ -from django.test import TestCase - -from django.contrib.sessions.backends import file, db, cache diff --git a/apps/perms/utils/permission.py b/apps/perms/utils/permission.py index 71bc2f07e..908c6016f 100644 --- a/apps/perms/utils/permission.py +++ b/apps/perms/utils/permission.py @@ -11,6 +11,10 @@ from perms.utils.user_permission import get_user_all_asset_perm_ids logger = get_logger(__file__) +class AssetPermissionUtil(object): + pass + + def validate_permission(user, asset, account, action='connect'): asset_perm_ids = get_user_all_asset_perm_ids(user)