Commit 3e17e942 authored by ibuler's avatar ibuler

[Update] 修改资产

parent 5648dcd7
...@@ -3,14 +3,17 @@ ...@@ -3,14 +3,17 @@
from django import forms from django import forms
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from ..models import Asset, AdminUser
from common.utils import get_logger from common.utils import get_logger
from orgs.mixins import OrgModelForm
from ..models import Asset, AdminUser
logger = get_logger(__file__) logger = get_logger(__file__)
__all__ = ['AssetCreateForm', 'AssetUpdateForm', 'AssetBulkUpdateForm'] __all__ = ['AssetCreateForm', 'AssetUpdateForm', 'AssetBulkUpdateForm']
class AssetCreateForm(forms.ModelForm): class AssetCreateForm(OrgModelForm):
class Meta: class Meta:
model = Asset model = Asset
fields = [ fields = [
...@@ -50,7 +53,7 @@ class AssetCreateForm(forms.ModelForm): ...@@ -50,7 +53,7 @@ class AssetCreateForm(forms.ModelForm):
} }
class AssetUpdateForm(forms.ModelForm): class AssetUpdateForm(OrgModelForm):
class Meta: class Meta:
model = Asset model = Asset
fields = [ fields = [
...@@ -90,7 +93,7 @@ class AssetUpdateForm(forms.ModelForm): ...@@ -90,7 +93,7 @@ class AssetUpdateForm(forms.ModelForm):
} }
class AssetBulkUpdateForm(forms.ModelForm): class AssetBulkUpdateForm(OrgModelForm):
assets = forms.ModelMultipleChoiceField( assets = forms.ModelMultipleChoiceField(
required=True, help_text='* required', required=True, help_text='* required',
label=_('Select assets'), queryset=Asset.objects.all(), label=_('Select assets'), queryset=Asset.objects.all(),
......
...@@ -71,16 +71,11 @@ class Asset(OrgModelMixin): ...@@ -71,16 +71,11 @@ class Asset(OrgModelMixin):
) )
id = models.UUIDField(default=uuid.uuid4, primary_key=True) id = models.UUIDField(default=uuid.uuid4, primary_key=True)
ip = models.GenericIPAddressField(max_length=32, verbose_name=_('IP'), ip = models.GenericIPAddressField(max_length=32, verbose_name=_('IP'), db_index=True)
db_index=True) hostname = models.CharField(max_length=128, verbose_name=_('Hostname'))
hostname = models.CharField(max_length=128, unique=True, protocol = models.CharField(max_length=128, default=SSH_PROTOCOL, choices=PROTOCOL_CHOICES, verbose_name=_('Protocol'))
verbose_name=_('Hostname'))
protocol = models.CharField(max_length=128, default=SSH_PROTOCOL,
choices=PROTOCOL_CHOICES,
verbose_name=_('Protocol'))
port = models.IntegerField(default=22, verbose_name=_('Port')) port = models.IntegerField(default=22, verbose_name=_('Port'))
platform = models.CharField(max_length=128, choices=PLATFORM_CHOICES, platform = models.CharField(max_length=128, choices=PLATFORM_CHOICES, default='Linux', verbose_name=_('Platform'))
default='Linux', verbose_name=_('Platform'))
domain = models.ForeignKey("assets.Domain", null=True, blank=True, domain = models.ForeignKey("assets.Domain", null=True, blank=True,
related_name='assets', verbose_name=_("Domain"), related_name='assets', verbose_name=_("Domain"),
on_delete=models.SET_NULL) on_delete=models.SET_NULL)
...@@ -94,11 +89,8 @@ class Asset(OrgModelMixin): ...@@ -94,11 +89,8 @@ class Asset(OrgModelMixin):
null=True, verbose_name=_("Admin user")) null=True, verbose_name=_("Admin user"))
# Some information # Some information
public_ip = models.GenericIPAddressField(max_length=32, blank=True, public_ip = models.GenericIPAddressField(max_length=32, blank=True, null=True, verbose_name=_('Public IP'))
null=True, number = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Asset number'))
verbose_name=_('Public IP'))
number = models.CharField(max_length=32, null=True, blank=True,
verbose_name=_('Asset number'))
# Collect # Collect
vendor = models.CharField(max_length=64, null=True, blank=True, vendor = models.CharField(max_length=64, null=True, blank=True,
...@@ -233,7 +225,7 @@ class Asset(OrgModelMixin): ...@@ -233,7 +225,7 @@ class Asset(OrgModelMixin):
return data return data
class Meta: class Meta:
unique_together = ('ip', 'port') unique_together = ('org', 'hostname')
verbose_name = _("Asset") verbose_name = _("Asset")
@classmethod @classmethod
......
...@@ -7,7 +7,8 @@ from django.db.models import Q ...@@ -7,7 +7,8 @@ from django.db.models import Q
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from orgs.mixins import OrgModelMixin from orgs.mixins import OrgModelMixin
from common.utils import with_cache from orgs.utils import get_current_org, set_current_org
from orgs.models import Organization
__all__ = ['Node'] __all__ = ['Node']
...@@ -119,7 +120,11 @@ class Node(OrgModelMixin): ...@@ -119,7 +120,11 @@ class Node(OrgModelMixin):
return self.get_all_assets().valid() return self.get_all_assets().valid()
def is_root(self): def is_root(self):
return self.key == '0' root = self.__class__.root()
if self == root:
return True
else:
return False
@property @property
def parent(self): def parent(self):
...@@ -148,8 +153,8 @@ class Node(OrgModelMixin): ...@@ -148,8 +153,8 @@ class Node(OrgModelMixin):
def get_ancestor(self, with_self=False): def get_ancestor(self, with_self=False):
if self.is_root(): if self.is_root():
ancestor = self.__class__.objects.filter(key='0') root = self.__class__.root()
return ancestor return [root]
_key = self.key.split(':') _key = self.key.split(':')
if not with_self: if not with_self:
...@@ -163,11 +168,26 @@ class Node(OrgModelMixin): ...@@ -163,11 +168,26 @@ class Node(OrgModelMixin):
).order_by('key') ).order_by('key')
return ancestor return ancestor
@classmethod
def create_root_node(cls):
with transaction.atomic():
org = get_current_org()
set_current_org(Organization.root())
org_nodes_roots = cls.objects.filter(key__regex=r'^[0-9]+$')
org_nodes_roots_keys = org_nodes_roots.values_list('key', flat=True)
max_value = max([int(k) for k in org_nodes_roots_keys]) if org_nodes_roots_keys else 0
set_current_org(org)
root = cls.objects.create(key=max_value+1, value=org.name)
return root
@classmethod @classmethod
def root(cls): def root(cls):
obj, created = cls.objects.get_or_create( root = cls.objects.filter(key__regex=r'^[0-9]+$')
key='0', defaults={"key": '0', 'value': "ROOT"} print("GET ROOT NODE")
) if len(root) == 1:
print(obj) return root.get()
return obj else:
return cls.create_root_node()
...@@ -18,28 +18,17 @@ __all__ = [ ...@@ -18,28 +18,17 @@ __all__ = [
class OrgManager(models.Manager): class OrgManager(models.Manager):
def __init__(self, *args, **kwargs):
print("INit manager")
super().__init__(*args, **kwargs)
def get_queryset(self): def get_queryset(self):
print("GET CURR")
current_org = get_current_org() current_org = get_current_org()
kwargs = {} kwargs = {}
print("Get queryset ")
print(current_org)
print(self.model)
if not current_org: if not current_org:
pass kwargs['id'] = None
elif current_org.is_real(): elif current_org.is_real():
kwargs['org'] = current_org kwargs['org'] = current_org
elif current_org.is_default(): elif current_org.is_default():
kwargs['org'] = None kwargs['org'] = None
queryset = super().get_queryset().filter(**kwargs) queryset = super().get_queryset().filter(**kwargs)
print(kwargs)
print(queryset)
return queryset return queryset
def all(self): def all(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment