mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-10 11:49:10 +00:00
pref: 修改 asset permission
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
import json
|
||||
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.encoding import force_text
|
||||
from django.core.validators import MinValueValidator, MaxValueValidator
|
||||
|
||||
from common.utils import signer, crypto
|
||||
|
||||
|
||||
@@ -13,7 +15,7 @@ __all__ = [
|
||||
'JsonCharField', 'JsonTextField', 'JsonListCharField', 'JsonListTextField',
|
||||
'JsonDictCharField', 'JsonDictTextField', 'EncryptCharField',
|
||||
'EncryptTextField', 'EncryptMixin', 'EncryptJsonDictTextField',
|
||||
'EncryptJsonDictCharField', 'PortField'
|
||||
'EncryptJsonDictCharField', 'PortField', 'BitChoices',
|
||||
]
|
||||
|
||||
|
||||
@@ -190,3 +192,37 @@ class PortField(models.IntegerField):
|
||||
})
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
class BitChoices(models.IntegerChoices):
|
||||
@classmethod
|
||||
def branches(cls):
|
||||
return [i for i in cls]
|
||||
|
||||
@classmethod
|
||||
def tree(cls):
|
||||
root = [_('All'), cls.branches()]
|
||||
return cls.render_node(root)
|
||||
|
||||
@classmethod
|
||||
def render_node(cls, node):
|
||||
if isinstance(node, BitChoices):
|
||||
return {
|
||||
'id': node.name,
|
||||
'label': node.label,
|
||||
}
|
||||
else:
|
||||
name, children = node
|
||||
return {
|
||||
'id': name,
|
||||
'label': name,
|
||||
'children': [cls.render_node(child) for child in children]
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def all(cls):
|
||||
value = 0
|
||||
for c in cls:
|
||||
value |= c.value
|
||||
return value
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user