From 3eb1583c69dcd0daf8e154414abd2202880ca486 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 8 Nov 2023 17:46:32 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=A2=9E=E5=8A=A0=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E6=9D=83=E9=99=90=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/db/fields.py | 6 ++--- apps/perms/const.py | 2 ++ .../migrations/0036_auto_20231108_1626.py | 25 +++++++++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 apps/perms/migrations/0036_auto_20231108_1626.py diff --git a/apps/common/db/fields.py b/apps/common/db/fields.py index 83d522da5..1691fad1d 100644 --- a/apps/common/db/fields.py +++ b/apps/common/db/fields.py @@ -262,10 +262,8 @@ class BitChoices(models.IntegerChoices, TreeChoices): @classmethod def all(cls): - value = 0 - for c in cls: - value |= c.value - return value + # 权限 12 位 最大值 + return 4095 class PortRangeField(models.CharField): diff --git a/apps/perms/const.py b/apps/perms/const.py index 373723a4b..7af66a45f 100644 --- a/apps/perms/const.py +++ b/apps/perms/const.py @@ -15,6 +15,7 @@ class ActionChoices(BitChoices): copy = bit(4), _("Copy") + " (RDP, VNC)" paste = bit(5), _("Paste") + " (RDP, VNC)" delete = bit(6), _("Delete") + " (SFTP)" + share = bit(7), _("Share") + " (SSH)" @classmethod def is_tree(cls): @@ -26,6 +27,7 @@ class ActionChoices(BitChoices): cls.connect, (_("Transfer"), [cls.upload, cls.download, cls.delete]), (_("Clipboard"), [cls.copy, cls.paste]), + cls.share ) @classmethod diff --git a/apps/perms/migrations/0036_auto_20231108_1626.py b/apps/perms/migrations/0036_auto_20231108_1626.py new file mode 100644 index 000000000..a0777abc5 --- /dev/null +++ b/apps/perms/migrations/0036_auto_20231108_1626.py @@ -0,0 +1,25 @@ +# Generated by Django 4.1.10 on 2023-11-08 08:26 + +from django.db import migrations + + +def migrate_action_all_value(apps, schema_editor): + old_max_bit = 63 + new_max_bit = 4095 + asset_permission_model = apps.get_model("perms", "AssetPermission") + db_alias = schema_editor.connection.alias + perms = list(asset_permission_model.objects.using(db_alias).filter(actions=old_max_bit)) + for perm in perms: + perm.actions = new_max_bit + asset_permission_model.objects.bulk_update(perms, ['actions']) + + +class Migration(migrations.Migration): + dependencies = [ + ('perms', '0035_auto_20231125_1025'), + ] + operations = [ + migrations.RunPython( + code=migrate_action_all_value, + ), + ]