diff --git a/apps/cmdb/forms.py b/apps/cmdb/forms.py
index 0511b0c..33302ac 100644
--- a/apps/cmdb/forms.py
+++ b/apps/cmdb/forms.py
@@ -4,7 +4,7 @@
from django import forms
-from .models import Code, DeviceInfo, ConnectionInfo, DeviceFile
+from .models import Code, DeviceInfo, ConnectionInfo, DeviceFile, NetworkAsset
class CodeCreateForm(forms.ModelForm):
@@ -100,4 +100,31 @@ class ConnectionInfoForm(forms.ModelForm):
class DeviceFileUploadForm(forms.ModelForm):
class Meta:
model = DeviceFile
- fields = '__all__'
\ No newline at end of file
+ fields = '__all__'
+
+
+class NetworkAssetCreateForm(forms.ModelForm):
+ class Meta:
+ model = NetworkAsset
+ fields = '__all__'
+ error_messages = {
+ 'name': {'required': '请填写网络资产名称'},
+ }
+
+ def clean(self):
+ cleaned_data = super(NetworkAssetCreateForm, self).clean()
+ ip_address = cleaned_data.get('ip_address')
+
+ if NetworkAsset.objects.filter(ip_address=ip_address).count():
+ raise forms.ValidationError('资产地址已存在:{}已存在'.format(ip_address))
+
+
+class NetworkAssetUpdateForm(NetworkAssetCreateForm):
+ def clean(self):
+ cleaned_data = self.cleaned_data
+ ip_address = cleaned_data.get('ip_address')
+
+ if self.instance:
+ matching_asset = NetworkAsset.objects.exclude(pk=self.instance.pk)
+ if matching_asset.filter(ip_address=ip_address).exists():
+ raise forms.ValidationError('资产地址已存在:{}已存在'.format(ip_address))
\ No newline at end of file
diff --git a/apps/cmdb/models.py b/apps/cmdb/models.py
index a05aeee..00d63be 100644
--- a/apps/cmdb/models.py
+++ b/apps/cmdb/models.py
@@ -137,6 +137,9 @@ class NetworkAsset(models.Model):
management = models.CharField(max_length=100, blank=True, default='', verbose_name='管理地址')
show_on_top = models.BooleanField(default=False, verbose_name='首页展示')
provider = models.ForeignKey('Supplier', blank=True, null=True, on_delete=models.SET_NULL, verbose_name='服务商')
+ state = models.BooleanField(default=True, verbose_name='状态')
+ buyDate = models.DateField(default=datetime.now, blank=True, null=True, verbose_name='购买日期')
+ warrantyDate = models.DateField(default=datetime.now, blank=True, null=True, verbose_name='到保日期')
desc = models.TextField(blank=True, default='', verbose_name='备注信息')
class Meta:
@@ -144,6 +147,19 @@ class NetworkAsset(models.Model):
verbose_name_plural = verbose_name
+class NatRule(models.Model):
+ internet_ip = models.CharField(max_length=80, blank=True, default='', verbose_name='互联网IP')
+ src_port = models.IntegerField(blank=True, default='', verbose_name='源端口')
+ lan_ip = models.CharField(max_length=80, blank=True, default='', verbose_name='内网IP')
+ dest_port = models.IntegerField(blank=True, default='', verbose_name='目的端口')
+ state = models.BooleanField(default=True, verbose_name='状态')
+ desc = models.TextField(blank=True, default='', verbose_name='备注信息')
+
+ class Meta:
+ verbose_name = 'NAT规则'
+ verbose_name_plural = verbose_name
+
+
class DomainName(AbstractMode):
dn_type_choices = (('1', '主域名'),('2', '二级域名'))
domain = models.CharField(max_length=200, verbose_name='域名')
@@ -165,14 +181,3 @@ class DomainName(AbstractMode):
verbose_name_plural = verbose_name
-class NatRule(models.Model):
- internet_ip = models.CharField(max_length=80, blank=True, default='', verbose_name='互联网IP')
- src_port = models.IntegerField(blank=True, default='', verbose_name='源端口')
- lan_ip = models.CharField(max_length=80, blank=True, default='', verbose_name='内网IP')
- dest_port = models.IntegerField(blank=True, default='', verbose_name='目的端口')
- state = models.BooleanField(default=True, verbose_name='状态')
- desc = models.TextField(blank=True, default='', verbose_name='备注信息')
-
- class Meta:
- verbose_name = 'NAT规则'
- verbose_name_plural = verbose_name
\ No newline at end of file
diff --git a/apps/cmdb/urls.py b/apps/cmdb/urls.py
index 0f1e35c..87c2c3d 100644
--- a/apps/cmdb/urls.py
+++ b/apps/cmdb/urls.py
@@ -44,4 +44,10 @@ urlpatterns = [
path('eam/supplier/update/', views_eam.SupplierUpdateView.as_view(), name='eam-supplier-update'),
path('eam/supplier/list/', views_eam.SupplierListView.as_view(), name='eam-supplier-list'),
path('eam/supplier/delete/', views_eam.SupplierDeleteView.as_view(), name='eam-supplier-delete'),
+
+ path('eam/network_asset/', views_eam.NetworkAssetView.as_view(), name='eam-network_asset'),
+ path('eam/network_asset/create/', views_eam.NetworkAssetCreateView.as_view(), name='eam-network_asset-create'),
+ path('eam/network_asset/update/', views_eam.NetworkAssetUpdateView.as_view(), name='eam-network_asset-update'),
+ path('eam/network_asset/list/', views_eam.NetworkAssetListView.as_view(), name='eam-network_asset-list'),
+ path('eam/network_asset/delete/', views_eam.NetworkAssetDeleteView.as_view(), name='eam-network_asset-delete'),
]
diff --git a/apps/cmdb/views_eam.py b/apps/cmdb/views_eam.py
index f0f76fd..e0b1e1c 100644
--- a/apps/cmdb/views_eam.py
+++ b/apps/cmdb/views_eam.py
@@ -11,8 +11,9 @@ from system.mixin import LoginRequiredMixin
from custom import (BreadcrumbMixin, SandboxDeleteView,
SandboxListView, SandboxUpdateView, SandboxCreateView)
from .models import (Cabinet, DeviceInfo, Code, ConnectionInfo, DeviceFile,
- Supplier)
-from .forms import DeviceCreateForm, DeviceUpdateForm, ConnectionInfoForm, DeviceFileUploadForm
+ Supplier, NetworkAsset)
+from .forms import (DeviceCreateForm, DeviceUpdateForm, ConnectionInfoForm,
+ DeviceFileUploadForm, NetworkAssetCreateForm, NetworkAssetUpdateForm)
from utils.db_utils import MongodbDriver
from utils.sandbox_utils import LoginExecution
@@ -108,6 +109,8 @@ class DeviceListView(SandboxListView):
device['service_type'] = get_object_or_404(Code, pk=int(service_type)).value if service_type else ''
device['dev_cabinet'] = get_object_or_404(Cabinet, pk=int(dev_cabinet)).number if dev_cabinet else ''
return context_data
+
+
class DeviceCreateView(SandboxCreateView):
model = DeviceInfo
form_class = DeviceCreateForm
@@ -115,7 +118,6 @@ class DeviceCreateView(SandboxCreateView):
def get_context_data(self, **kwargs):
public_data = get_device_public()
kwargs.update(public_data)
- print(public_data)
return super().get_context_data(**kwargs)
@@ -257,17 +259,58 @@ class SupplierUpdateView(SandboxUpdateView):
class SupplierListView(SandboxListView):
model = Supplier
- fields = '__all__'
+ fields = ['id', 'firm', 'contact_details', 'desc']
def get_filters(self):
data = self.request.GET
filters = {}
- if 'number' in data and data['number']:
- filters['number__icontains'] = data['number']
- if 'position' in data and data['position']:
- filters['position__icontains'] = data['position']
+ if 'firm' in data and data['firm']:
+ filters['firm__icontains'] = data['firm']
+ if 'contact_details' in data and data['contact_details']:
+ filters['contact_deatils__icontains'] = data['contact_details']
return filters
class SupplierDeleteView(SandboxDeleteView):
- model = Supplier
\ No newline at end of file
+ model = Supplier
+
+
+class NetworkAssetView(LoginRequiredMixin, BreadcrumbMixin, TemplateView):
+ template_name = 'cmdb/network_asset.html'
+
+
+class NetworkAssetCreateView(SandboxCreateView):
+ model = NetworkAsset
+ form_class = NetworkAssetCreateForm
+
+ def get_context_data(self, **kwargs):
+ kwargs['all_provider'] = Supplier.objects.all()
+ return super().get_context_data(**kwargs)
+
+
+class NetworkAssetUpdateView(SandboxUpdateView):
+ model = NetworkAsset
+ form_class = NetworkAssetUpdateForm
+
+ def get_context_data(self, **kwargs):
+ kwargs['all_provider'] = Supplier.objects.all()
+ return super().get_context_data(**kwargs)
+
+
+class NetworkAssetListView(SandboxListView):
+ model = NetworkAsset
+ fields = ['id', 'name', 'ip_address', 'management', 'provider__firm', 'buyDate', 'warrantyDate', 'state']
+
+ def get_filters(self):
+ data = self.request.GET
+ filters = {}
+ if 'name' in data and data['name']:
+ filters['name__icontains'] = data['name']
+ if 'ip_address' in data and data['ip_address']:
+ filters['ip_address__icontains'] = data['ip_address']
+ return filters
+
+
+class NetworkAssetDeleteView(SandboxDeleteView):
+ model = NetworkAsset
+
diff --git a/templates/cmdb/cabinet.html b/templates/cmdb/cabinet.html
index 219a504..7245920 100644
--- a/templates/cmdb/cabinet.html
+++ b/templates/cmdb/cabinet.html
@@ -224,7 +224,7 @@
oDataTable.ajax.reload();
} else {
//alert(msg.message);
- layer.alert("操作失败", {icon: 2});
+ layer.alert("没有权限", {icon: 2});
}
return;
}
@@ -253,7 +253,7 @@
oDataTable.ajax.reload();
} else {
//alert(msg.message);
- layer.alert('删除失败', {icon: 2});
+ layer.alert('没有权限', {icon: 2});
}
return;
}
diff --git a/templates/cmdb/code.html b/templates/cmdb/code.html
index b36f4d6..8cc8d2c 100644
--- a/templates/cmdb/code.html
+++ b/templates/cmdb/code.html
@@ -232,7 +232,7 @@
oDataTable.ajax.reload();
} else {
//alert(msg.message);
- layer.alert("操作失败", {icon: 2});
+ layer.alert("没有权限", {icon: 2});
}
return;
}
@@ -261,7 +261,7 @@
oDataTable.ajax.reload();
} else {
//alert(msg.message);
- layer.alert('删除失败', {icon: 2});
+ layer.alert('没有权限', {icon: 2});
}
return;
}
diff --git a/templates/cmdb/network_asset.html b/templates/cmdb/network_asset.html
new file mode 100644
index 0000000..51f319d
--- /dev/null
+++ b/templates/cmdb/network_asset.html
@@ -0,0 +1,306 @@
+{% extends "base-left.html" %}
+{% load staticfiles %}
+
+{% block css %}
+
+
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+{% endblock %}
+
+
+{% block javascripts %}
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/cmdb/networkasset_form.html b/templates/cmdb/networkasset_form.html
new file mode 100644
index 0000000..493dc02
--- /dev/null
+++ b/templates/cmdb/networkasset_form.html
@@ -0,0 +1,172 @@
+{% extends 'base-layer.html' %}
+{% load staticfiles %}
+
+{% block css %}
+
+
+
+{% endblock %}
+
+{% block main %}
+
+
+{% endblock %}
+
+{% block javascripts %}
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/cmdb/supplier.html b/templates/cmdb/supplier.html
new file mode 100644
index 0000000..e04aa61
--- /dev/null
+++ b/templates/cmdb/supplier.html
@@ -0,0 +1,276 @@
+{% extends "base-left.html" %}
+{% load staticfiles %}
+
+{% block css %}
+
+
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
+{% endblock %}
+
+
+{% block javascripts %}
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/cmdb/supplier_form.html b/templates/cmdb/supplier_form.html
new file mode 100644
index 0000000..9bbd2e4
--- /dev/null
+++ b/templates/cmdb/supplier_form.html
@@ -0,0 +1,99 @@
+{% extends 'base-layer.html' %}
+{% load staticfiles %}
+{% block css %}
+
+
+{% endblock %}
+{% block main %}
+
+
+
+
+{% endblock %}
+
+{% block javascripts %}
+
+
+
+{% endblock %}
\ No newline at end of file