domainname

This commit is contained in:
RobbieHan
2019-04-12 14:06:12 +08:00
parent 9430fa0781
commit fc5a19bdbf
10 changed files with 714 additions and 379 deletions

View File

@@ -6,7 +6,8 @@ import re
from django import forms
from .models import Code, DeviceInfo, ConnectionInfo, DeviceFile, NetworkAsset, NatRule
from .models import (Code, DeviceInfo, ConnectionInfo, DeviceFile,
NetworkAsset, NatRule, DomainName)
class CodeCreateForm(forms.ModelForm):
@@ -118,8 +119,6 @@ class NetworkAssetForm(forms.ModelForm):
memory = cleaned_data.get('memory')
disk = cleaned_data.get('disk')
show_on_top = cleaned_data.get('show_on_top')
# if NetworkAsset.objects.filter(ip_address=ip_address).count():
# raise forms.ValidationError('资产地址已存在:{}已存在'.format(ip_address))
if memory:
me = re.match('(.*)/(.*)', memory)
if me:
@@ -155,6 +154,18 @@ class NatRuleForm(forms.ModelForm):
'internet_ip': {'required': '请填写公网IP'},
'src_port': {'required': '请填写公网端口'},
'lan_ip': {'required': '请填写内网地址'},
'dest_port': {'required': '请填写内网端口'}
'dest_port': {'required': '请填写内网端口'},
'desc': {'required': '请填写规则说明'}
}
class DomainNameForm(forms.ModelForm):
class Meta:
model = DomainName
fields = '__all__'
error_messages = {
'domain': {'required': '域名不能为空'},
'buyDate': {'required': '请填写域名购买日期'},
'warrantyDate': {'required': '请填写域名到期时间'},
'dn_type': {'required': '域名类型不能为空'}
}

View File

@@ -167,14 +167,15 @@ class DomainName(AbstractMode):
dn_type_choices = (('1', '主域名'),('2', '二级域名'))
domain = models.CharField(max_length=200, verbose_name='域名')
dn_type = models.CharField(max_length=20, choices=dn_type_choices, default='1')
nat_rule = models.ManyToManyField('NatRule', blank=True)
resolution_server = models.ForeignKey('Supplier', related_name='res_server',
blank=True, null=True, on_delete=models.SET_NULL, verbose_name='解析服务')
domain_provider = models.ForeignKey('Supplier', related_name='do_provider',
blank=True, null=True, on_delete=models.SET_NULL, verbose_name='域名服务')
operation_type = models.ForeignKey('Code', blank=True, null=True, on_delete=models.SET_NULL, verbose_name='所属项目')
state = models.BooleanField(default=True, verbose_name='状态')
ssl_cert = models.FileField(upload_to="ssl_cert/%Y/%m", null=True, blank=True, verbose_name="SSL证书")
buyDate = models.DateField(default=datetime.now, blank=True, null=True, verbose_name='购买日期')
warrantyDate = models.DateField(default=datetime.now, blank=True, null=True, verbose_name='到保日期')
buyDate = models.DateField(default=datetime.now, verbose_name='购买日期')
warrantyDate = models.DateField(default=datetime.now, verbose_name='到期时间')
desc = models.TextField(blank=True, default='', verbose_name='备注信息')
class Meta:
@@ -182,5 +183,13 @@ class DomainName(AbstractMode):
verbose_name_plural = verbose_name
class SSLCert(TimeAbstract):
domain_name = models.ForeignKey('DomainName', blank=True, null=True, on_delete=models.SET_NULL, verbose_name='域名')
ssl_cert = models.FileField(upload_to="ssl_cert/", verbose_name="域名证书")
buyDate = models.DateField(default=datetime.now, verbose_name='购买日期')
warrantyDate = models.DateField(default=datetime.now, verbose_name='到期时间')
upload_user = models.CharField(max_length=20, verbose_name="上传人")
desc = models.TextField(blank=True, default='', verbose_name='备注信息')

View File

@@ -56,4 +56,11 @@ urlpatterns = [
path('eam/natrule/update/', views_eam.NatRuleUpdateView.as_view(), name='eam-natrule-update'),
path('eam/natrule/list/', views_eam.NatRuleListView.as_view(), name='eam-natrule-list'),
path('eam/natrule/delete/', views_eam.NatRuleDeleteView.as_view(), name='eam-natrule-delete'),
path('eam/domain/', views_eam.DomainNameView.as_view(), name='eam-domain'),
path('eam/domain/create/', views_eam.DomainNameCreateView.as_view(), name='eam-domain-create'),
path('eam/domain/update/', views_eam.DomainNameUpdateView.as_view(), name='eam-domain-update'),
path('eam/domain/list/', views_eam.DomainNameListView.as_view(), name='eam-domain-list'),
path('eam/domain/delete/', views_eam.DomainNameDeleteView.as_view(), name='eam-domain-delete'),
path('eam/domain/dn2nr/', views_eam.DomainName2NatRule.as_view(), name='eam-domain-dn2nr'),
]

View File

@@ -12,7 +12,7 @@ class CmdbView(LoginRequiredMixin, View):
ret = dict()
cabinet_all = Cabinet.objects.all()
operation_type_all = Code.objects.filter(parent__key='operation_type')
net_asset=list(NetworkAsset.objects.filter(show_on_top=True).values())
# net_asset=list(NetworkAsset.objects.filter(show_on_top=True).values())
cabinet_list = []
cabinet_count = []
for cabinet in cabinet_all:
@@ -29,23 +29,23 @@ class CmdbView(LoginRequiredMixin, View):
}
operations.append(data)
for asset in net_asset:
disk = asset['disk']
memory = asset['memory']
if disk:
di = re.match('(.*)/(.*)', disk)
di_used = int(di.group(1))
di_total = int(di.group(2))
di_percent = '{:.0%}'.format(di_used / di_total)
asset['disk'] = {'disk': disk, 'percent': di_percent}
if memory:
me = re.match('(.*)/(.*)', memory)
me_used = int(me.group(1))
me_total = int(me.group(2))
me_percent = '{:.0%}'.format(me_used / me_total)
asset['memory'] = {'memory': memory, 'percent': me_percent}
# for asset in net_asset:
# disk = asset['disk']
# memory = asset['memory']
# if disk:
# di = re.match('(.*)/(.*)', disk)
# di_used = int(di.group(1))
# di_total = int(di.group(2))
# di_percent = '{:.0%}'.format(di_used / di_total)
# asset['disk'] = {'disk': disk, 'percent': di_percent}
# if memory:
# me = re.match('(.*)/(.*)', memory)
# me_used = int(me.group(1))
# me_total = int(me.group(2))
# me_percent = '{:.0%}'.format(me_used / me_total)
# asset['memory'] = {'memory': memory, 'percent': me_percent}
ret['cabinet_list'] = cabinet_list
ret['cabinet_count'] = cabinet_count
ret['operations'] = operations
ret['net_asset'] = net_asset
# ret['net_asset'] = net_asset
return render(request, 'cmdb/cmdb_index.html', ret)

View File

@@ -1,4 +1,5 @@
import re
from datetime import datetime, timedelta
from django.views.generic import TemplateView, View
from django.contrib.auth import get_user_model
@@ -13,8 +14,7 @@ from custom import (BreadcrumbMixin, SandboxDeleteView,
from .models import (Cabinet, DeviceInfo, Code, ConnectionInfo, DeviceFile,
Supplier, NetworkAsset, NatRule, DomainName)
from .forms import (DeviceCreateForm, DeviceUpdateForm, ConnectionInfoForm,
DeviceFileUploadForm, NetworkAssetForm,
NatRuleForm)
DeviceFileUploadForm, NetworkAssetForm,NatRuleForm, DomainNameForm)
from utils.db_utils import MongodbDriver
from utils.sandbox_utils import LoginExecution
@@ -388,44 +388,73 @@ class NatRuleListView(SandboxListView):
class NatRuleDeleteView(SandboxDeleteView):
model = NatRule
# class DomainNameView(LoginRequiredMixin, BreadcrumbMixin, TemplateView):
# template_name = 'cmdb/domainname.html'
#
#
# class DomainNameCreateView(SandboxCreateView):
# model = DomainName
# form_class = NetworkAssetCreateForm
#
# def get_context_data(self, **kwargs):
# kwargs['all_supplier'] = Supplier.objects.all()
# return super().get_context_data(**kwargs)
#
#
# class DomainNameUpdateView(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 DomainNameListView(SandboxListView):
# model = NetworkAsset
# fields = ['id', 'domain', 'resolution_server', 'domain_provider', 'state', 'buyDate', 'warrantyDate', 'desc']
#
# def get_filters(self):
# data = self.request.GET
# filters = {'dn_type': '1'}
# if 'domain' in data and data['domain']:
# filters['domain__icontains'] = data['domain']
# if 'resolution_server' in data and data['resolution_server']:
# filters['resolution_server'] = data['resolution_server']
# if 'domain_provider' in data and data['domain_provider']:
# filters['domain_provider'] = data['domain_provider']
#
# return filters
#
#
# class DomainNameDeleteView(SandboxDeleteView):
# model = DomainName
class DomainNameView(LoginRequiredMixin, BreadcrumbMixin, TemplateView):
template_name = 'cmdb/domainname.html'
def get_context_data(self, **kwargs):
kwargs['all_operation'] = Code.objects.filter(parent__key='OPERATION_TYPE')
return super().get_context_data(**kwargs)
class DomainNameCreateView(SandboxCreateView):
model = DomainName
form_class = DomainNameForm
def get_context_data(self, **kwargs):
kwargs['all_supplier'] = Supplier.objects.all()
kwargs['all_nat'] = NatRule.objects.all()
kwargs['all_operation'] = Code.objects.filter(parent__key='OPERATION_TYPE')
return super().get_context_data(**kwargs)
class DomainNameUpdateView(SandboxUpdateView):
model = DomainName
form_class = DomainNameForm
def get_context_data(self, **kwargs):
kwargs['all_supplier'] = Supplier.objects.all()
kwargs['all_nat'] = NatRule.objects.all()
kwargs['all_operation'] = Code.objects.filter(parent__key='OPERATION_TYPE')
return super().get_context_data(**kwargs)
class DomainNameListView(SandboxListView):
model = DomainName
fields = ['id', 'domain', 'dn_type', 'resolution_server__firm',
'domain_provider__firm', 'operation_type__value',
'state', 'warrantyDate', 'desc']
def get_filters(self):
data = self.request.GET
filters = {}
if 'select' in data and data['select']:
select = int(data['select'])
if select == 0:
date_time = datetime.today()
filters['warrantyDate__lte'] = date_time
if select == 1:
now = datetime.today()
date_time = now + timedelta(days=30)
filters['warrantyDate__range'] = (now, date_time)
if 'dn_type' in data and data['dn_type']:
filters['dn_type'] = data['dn_type']
if 'domain' in data and data['domain']:
filters['domain__icontains'] = data['domain']
if 'operation_type' in data and data['operation_type']:
filters['operation_type'] = data['operation_type']
return filters
class DomainNameDeleteView(SandboxDeleteView):
model = DomainName
class DomainName2NatRule(LoginRequiredMixin, View):
def get(self, request):
ret = dict()
if 'id' in request.GET and request.GET['id']:
domain_name = get_object_or_404(DomainName, pk=int(request.GET['id']))
ret['all_nat'] = domain_name.nat_rule.all()
return render(request, 'cmdb/domainname2natrule.html', ret)