mirror of
https://github.com/RobbieHan/sandboxMP.git
synced 2026-03-31 01:00:19 +08:00
network asset
This commit is contained in:
@@ -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__'
|
||||
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))
|
||||
@@ -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
|
||||
@@ -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'),
|
||||
]
|
||||
|
||||
@@ -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
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user