提交 c24f1a05 编写于 作者: baltery's avatar baltery

[Update] 修改约束

上级 fd5f562c
...@@ -13,7 +13,7 @@ ...@@ -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 _ ...@@ -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__ = [ ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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 = { ...@@ -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 ...@@ -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): ...@@ -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 _ ...@@ -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): ...@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册