mirror of https://github.com/jumpserver/jumpserver
[Update] 修改约束
parent
fd5f562cbf
commit
c24f1a0517
|
@ -13,7 +13,7 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from rest_framework import generics, mixins
|
from rest_framework import generics, mixins, viewsets
|
||||||
from rest_framework.serializers import ValidationError
|
from rest_framework.serializers import ValidationError
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
@ -22,6 +22,7 @@ from django.utils.translation import ugettext_lazy as _
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
from common.utils import get_logger, get_object_or_none
|
from common.utils import get_logger, get_object_or_none
|
||||||
|
from orgs.utils import get_current_org
|
||||||
from ..hands import IsSuperUser
|
from ..hands import IsSuperUser
|
||||||
from ..models import Node
|
from ..models import Node
|
||||||
from ..tasks import update_assets_hardware_info_util, test_asset_connectability_util
|
from ..tasks import update_assets_hardware_info_util, test_asset_connectability_util
|
||||||
|
@ -37,11 +38,18 @@ __all__ = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class NodeViewSet(BulkModelViewSet):
|
class NodeViewSet(viewsets.ModelViewSet):
|
||||||
queryset = Node.objects.all()
|
queryset = Node.objects.all()
|
||||||
permission_classes = (IsSuperUser,)
|
permission_classes = (IsSuperUser,)
|
||||||
serializer_class = serializers.NodeSerializer
|
serializer_class = serializers.NodeSerializer
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
# queryset = super(NodeViewSet, self).get_queryset()
|
||||||
|
print("API GET QUWRYSET")
|
||||||
|
# print(get_current_org())
|
||||||
|
# print(queryset)
|
||||||
|
return Node.objects.all()
|
||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
child_key = Node.root().get_next_child_key()
|
child_key = Node.root().get_next_child_key()
|
||||||
serializer.validated_data["key"] = child_key
|
serializer.validated_data["key"] = child_key
|
||||||
|
|
|
@ -225,7 +225,7 @@ class Asset(OrgModelMixin):
|
||||||
return data
|
return data
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = ('org', 'hostname')
|
unique_together = [('org', 'hostname'),]
|
||||||
verbose_name = _("Asset")
|
verbose_name = _("Asset")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
|
@ -52,4 +52,4 @@ class Gateway(AssetUser, OrgModelMixin):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = ['name', 'org']
|
unique_together = [('name', 'org')]
|
||||||
|
|
|
@ -34,4 +34,4 @@ class Label(models.Model):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
db_table = "assets_label"
|
db_table = "assets_label"
|
||||||
unique_together = ('name', 'value')
|
unique_together = [('name', 'value'),]
|
||||||
|
|
|
@ -23,7 +23,8 @@ class Node(OrgModelMixin):
|
||||||
is_node = True
|
is_node = True
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.full_value
|
return self.value
|
||||||
|
# return self.full_value
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
return self.key == other.key
|
return self.key == other.key
|
||||||
|
@ -181,8 +182,8 @@ class Node(OrgModelMixin):
|
||||||
@classmethod
|
@classmethod
|
||||||
def root(cls):
|
def root(cls):
|
||||||
root = cls.objects.filter(key__regex=r'^[0-9]+$')
|
root = cls.objects.filter(key__regex=r'^[0-9]+$')
|
||||||
if len(root) == 1:
|
if root:
|
||||||
return root.get()
|
return root[0]
|
||||||
else:
|
else:
|
||||||
return cls.create_root_node()
|
return cls.create_root_node()
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ class AdminUser(AssetUser):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['name']
|
ordering = ['name']
|
||||||
unique_together = ['name', 'org']
|
unique_together = [('name', 'org'),]
|
||||||
verbose_name = _("Admin user")
|
verbose_name = _("Admin user")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -157,7 +157,7 @@ class SystemUser(AssetUser):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['name']
|
ordering = ['name']
|
||||||
unique_together = ['name', 'org']
|
unique_together = [('name', 'org'),]
|
||||||
verbose_name = _("System user")
|
verbose_name = _("System user")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
|
@ -31,6 +31,7 @@ class NodeGrantedSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_assets_amount(obj):
|
def get_assets_amount(obj):
|
||||||
|
return 1
|
||||||
return len(obj.assets_granted)
|
return len(obj.assets_granted)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -39,6 +40,7 @@ class NodeGrantedSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_parent(obj):
|
def get_parent(obj):
|
||||||
|
return '0'
|
||||||
return obj.parent.id
|
return obj.parent.id
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -234,10 +234,10 @@ LOGGING = {
|
||||||
'handlers': ['console', 'ansible_logs'],
|
'handlers': ['console', 'ansible_logs'],
|
||||||
'level': "INFO",
|
'level': "INFO",
|
||||||
},
|
},
|
||||||
# 'django.db': {
|
'django.db': {
|
||||||
# 'handlers': ['console', 'file'],
|
'handlers': ['console', 'file'],
|
||||||
# 'level': 'DEBUG'
|
'level': 'DEBUG'
|
||||||
# }
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ from django.forms import ModelForm
|
||||||
|
|
||||||
from common.utils import get_logger
|
from common.utils import get_logger
|
||||||
from .utils import get_current_org, set_current_org
|
from .utils import get_current_org, set_current_org
|
||||||
|
from .models import Organization
|
||||||
|
|
||||||
logger = get_logger(__file__)
|
logger = get_logger(__file__)
|
||||||
|
|
||||||
|
@ -32,19 +33,21 @@ class OrgManager(models.Manager):
|
||||||
queryset = super(OrgManager, self).get_queryset()
|
queryset = super(OrgManager, self).get_queryset()
|
||||||
queryset = queryset.filter(**kwargs)
|
queryset = queryset.filter(**kwargs)
|
||||||
# print(kwargs)
|
# print(kwargs)
|
||||||
print(queryset.query)
|
# print(queryset.query)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def all(self):
|
# def all(self):
|
||||||
current_org = get_current_org()
|
# current_org = get_current_org()
|
||||||
if not current_org:
|
# if not current_org:
|
||||||
msg = 'You can `objects.set_current_org(org).all()` then run it'
|
# msg = 'You can `objects.set_current_org(org).all()` then run it'
|
||||||
warnings.warn(msg)
|
# warnings.warn(msg)
|
||||||
return self
|
# return self
|
||||||
else:
|
# else:
|
||||||
return super(OrgManager, self).all()
|
# return super(OrgManager, self).all()
|
||||||
|
|
||||||
def set_current_org(self, org):
|
def set_current_org(self, org):
|
||||||
|
if isinstance(org, str):
|
||||||
|
org = Organization.objects.get(name=org)
|
||||||
set_current_org(org)
|
set_current_org(org)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
class Organization(models.Model):
|
class Organization(models.Model):
|
||||||
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
id = models.UUIDField(default=uuid.uuid4, primary_key=True)
|
||||||
name = models.CharField(max_length=128, verbose_name=_("Name"))
|
name = models.CharField(max_length=128, unique=True, verbose_name=_("Name"))
|
||||||
users = models.ManyToManyField('users.User', related_name='orgs', blank=True)
|
users = models.ManyToManyField('users.User', related_name='orgs', blank=True)
|
||||||
admins = models.ManyToManyField('users.User', related_name='admin_orgs', blank=True)
|
admins = models.ManyToManyField('users.User', related_name='admin_orgs', blank=True)
|
||||||
created_by = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Created by'))
|
created_by = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Created by'))
|
||||||
|
|
|
@ -22,7 +22,7 @@ class UserGroup(OrgModelMixin):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['name']
|
ordering = ['name']
|
||||||
unique_together = ['org', 'name']
|
unique_together = [('org', 'name'),]
|
||||||
verbose_name = _("User group")
|
verbose_name = _("User group")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
Loading…
Reference in New Issue