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
	
	 ibuler
						ibuler