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
|
||||
# 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.views import APIView
|
||||
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 common.utils import get_logger, get_object_or_none
|
||||
from orgs.utils import get_current_org
|
||||
from ..hands import IsSuperUser
|
||||
from ..models import Node
|
||||
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()
|
||||
permission_classes = (IsSuperUser,)
|
||||
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):
|
||||
child_key = Node.root().get_next_child_key()
|
||||
serializer.validated_data["key"] = child_key
|
||||
|
|
|
@ -225,7 +225,7 @@ class Asset(OrgModelMixin):
|
|||
return data
|
||||
|
||||
class Meta:
|
||||
unique_together = ('org', 'hostname')
|
||||
unique_together = [('org', 'hostname'),]
|
||||
verbose_name = _("Asset")
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -52,4 +52,4 @@ class Gateway(AssetUser, OrgModelMixin):
|
|||
return self.name
|
||||
|
||||
class Meta:
|
||||
unique_together = ['name', 'org']
|
||||
unique_together = [('name', 'org')]
|
||||
|
|
|
@ -34,4 +34,4 @@ class Label(models.Model):
|
|||
|
||||
class Meta:
|
||||
db_table = "assets_label"
|
||||
unique_together = ('name', 'value')
|
||||
unique_together = [('name', 'value'),]
|
||||
|
|
|
@ -23,7 +23,8 @@ class Node(OrgModelMixin):
|
|||
is_node = True
|
||||
|
||||
def __str__(self):
|
||||
return self.full_value
|
||||
return self.value
|
||||
# return self.full_value
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.key == other.key
|
||||
|
@ -181,8 +182,8 @@ class Node(OrgModelMixin):
|
|||
@classmethod
|
||||
def root(cls):
|
||||
root = cls.objects.filter(key__regex=r'^[0-9]+$')
|
||||
if len(root) == 1:
|
||||
return root.get()
|
||||
if root:
|
||||
return root[0]
|
||||
else:
|
||||
return cls.create_root_node()
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ class AdminUser(AssetUser):
|
|||
|
||||
class Meta:
|
||||
ordering = ['name']
|
||||
unique_together = ['name', 'org']
|
||||
unique_together = [('name', 'org'),]
|
||||
verbose_name = _("Admin user")
|
||||
|
||||
@classmethod
|
||||
|
@ -157,7 +157,7 @@ class SystemUser(AssetUser):
|
|||
|
||||
class Meta:
|
||||
ordering = ['name']
|
||||
unique_together = ['name', 'org']
|
||||
unique_together = [('name', 'org'),]
|
||||
verbose_name = _("System user")
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -31,6 +31,7 @@ class NodeGrantedSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
|||
|
||||
@staticmethod
|
||||
def get_assets_amount(obj):
|
||||
return 1
|
||||
return len(obj.assets_granted)
|
||||
|
||||
@staticmethod
|
||||
|
@ -39,6 +40,7 @@ class NodeGrantedSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
|||
|
||||
@staticmethod
|
||||
def get_parent(obj):
|
||||
return '0'
|
||||
return obj.parent.id
|
||||
|
||||
|
||||
|
|
|
@ -234,10 +234,10 @@ LOGGING = {
|
|||
'handlers': ['console', 'ansible_logs'],
|
||||
'level': "INFO",
|
||||
},
|
||||
# 'django.db': {
|
||||
# 'handlers': ['console', 'file'],
|
||||
# 'level': 'DEBUG'
|
||||
# }
|
||||
'django.db': {
|
||||
'handlers': ['console', 'file'],
|
||||
'level': 'DEBUG'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ from django.forms import ModelForm
|
|||
|
||||
from common.utils import get_logger
|
||||
from .utils import get_current_org, set_current_org
|
||||
from .models import Organization
|
||||
|
||||
logger = get_logger(__file__)
|
||||
|
||||
|
@ -32,19 +33,21 @@ class OrgManager(models.Manager):
|
|||
queryset = super(OrgManager, self).get_queryset()
|
||||
queryset = queryset.filter(**kwargs)
|
||||
# print(kwargs)
|
||||
print(queryset.query)
|
||||
# print(queryset.query)
|
||||
return queryset
|
||||
|
||||
def all(self):
|
||||
current_org = get_current_org()
|
||||
if not current_org:
|
||||
msg = 'You can `objects.set_current_org(org).all()` then run it'
|
||||
warnings.warn(msg)
|
||||
return self
|
||||
else:
|
||||
return super(OrgManager, self).all()
|
||||
# def all(self):
|
||||
# current_org = get_current_org()
|
||||
# if not current_org:
|
||||
# msg = 'You can `objects.set_current_org(org).all()` then run it'
|
||||
# warnings.warn(msg)
|
||||
# return self
|
||||
# else:
|
||||
# return super(OrgManager, self).all()
|
||||
|
||||
def set_current_org(self, org):
|
||||
if isinstance(org, str):
|
||||
org = Organization.objects.get(name=org)
|
||||
set_current_org(org)
|
||||
return self
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ from django.utils.translation import ugettext_lazy as _
|
|||
|
||||
class Organization(models.Model):
|
||||
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)
|
||||
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'))
|
||||
|
|
|
@ -22,7 +22,7 @@ class UserGroup(OrgModelMixin):
|
|||
|
||||
class Meta:
|
||||
ordering = ['name']
|
||||
unique_together = ['org', 'name']
|
||||
unique_together = [('org', 'name'),]
|
||||
verbose_name = _("User group")
|
||||
|
||||
@classmethod
|
||||
|
|
Loading…
Reference in New Issue