mirror of
https://github.com/RobbieHan/sandboxMP.git
synced 2026-04-27 20:30:14 +08:00
deviceinfo
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
from django import forms
|
||||
|
||||
from .models import Code
|
||||
from .models import Code, DeviceInfo
|
||||
|
||||
|
||||
class CodeCreateForm(forms.ModelForm):
|
||||
@@ -43,4 +43,33 @@ class CodeUpdateForm(CodeCreateForm):
|
||||
raise forms.ValidationError(msg)
|
||||
if matching_code.filter(value=value).exists():
|
||||
msg = 'value:{} 已经存在'.format(value)
|
||||
raise forms.ValidationError(msg)
|
||||
raise forms.ValidationError(msg)
|
||||
|
||||
|
||||
class DeviceCreateForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = DeviceInfo
|
||||
exclude = ['dev_connection']
|
||||
error_messages = {
|
||||
'hostname': {'required': '请填写设备地址'},
|
||||
'buyDate': {'required': '请填写购买日期'},
|
||||
'warrantyDate': {'required': '请填写到保日期'}
|
||||
}
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super(DeviceCreateForm, self).clean()
|
||||
hostname = cleaned_data.get('hostname')
|
||||
|
||||
if DeviceInfo.objects.filter(hostname=hostname).count():
|
||||
raise forms.ValidationError('设备地址:{}已存在'.format(hostname))
|
||||
|
||||
|
||||
class DeviceUpdateForm(DeviceCreateForm):
|
||||
def clean(self):
|
||||
cleaned_data = self.cleaned_data
|
||||
hostname = cleaned_data.get('hostname')
|
||||
|
||||
if self.instance:
|
||||
matching_device = DeviceInfo.objects.exclude(pk=self.instance.pk)
|
||||
if matching_device.filter(hostname=hostname).exists():
|
||||
raise forms.ValidationError('设备地址:{}已存在'.format(hostname))
|
||||
@@ -53,11 +53,11 @@ class ConnectionAbstract(models.Model):
|
||||
|
||||
|
||||
class DeviceAbstract(models.Model):
|
||||
sys_hostname = models.CharField(max_length=50, blank=True, default='', verbose_name='主机名')
|
||||
mac_address = models.CharField(max_length=50, blank=True, default='', verbose_name='MAC地址')
|
||||
sn_number = models.CharField(max_length=50, blank=True, default='', verbose_name='SN号码')
|
||||
os_type = models.CharField(max_length=50, blank=True, default='', verbose_name='系统类型')
|
||||
device_type = models.CharField(max_length=50, blank=True, default='', verbose_name='设备类型')
|
||||
sys_hostname = models.CharField(max_length=150, blank=True, default='', verbose_name='主机名')
|
||||
mac_address = models.CharField(max_length=150, blank=True, default='', verbose_name='MAC地址')
|
||||
sn_number = models.CharField(max_length=150, blank=True, default='', verbose_name='SN号码')
|
||||
os_type = models.CharField(max_length=150, blank=True, default='', verbose_name='系统类型')
|
||||
device_type = models.CharField(max_length=150, blank=True, default='', verbose_name='设备类型')
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
@@ -100,7 +100,7 @@ class DeviceInfo(AbstractMode, DeviceAbstract, TimeAbstract):
|
||||
warrantyDate = models.DateField(default=datetime.now, verbose_name="到保日期")
|
||||
desc = models.TextField(blank=True, default='', verbose_name='备注信息')
|
||||
changed_by = models.ForeignKey(User, null=True, blank=True, on_delete=models.SET_NULL)
|
||||
history = HistoricalRecords(excluded_fields=['add_time', 'modify_time'])
|
||||
history = HistoricalRecords(excluded_fields=['add_time', 'modify_time', 'parent'])
|
||||
|
||||
class Meta:
|
||||
verbose_name = '设备信息'
|
||||
|
||||
@@ -27,4 +27,10 @@ urlpatterns = [
|
||||
path('eam/cabinet/list/', views_eam.CabinetListView.as_view(), name='eam-cabinet-list'),
|
||||
path('eam/cabinet/delete/', views_eam.CabinetDeleteView.as_view(), name='eam-cabinet-delete'),
|
||||
|
||||
path('eam/device/', views_eam.DeviceView.as_view(), name='eam-device'),
|
||||
path('eam/device/create/', views_eam.DeviceCreateView.as_view(), name='eam-device-create'),
|
||||
path('eam/device/update/', views_eam.DeviceUpdateView.as_view(), name='eam-device-update'),
|
||||
path('eam/device/list/', views_eam.DeviceListView.as_view(), name='eam-device-list'),
|
||||
path('eam/device/delete/', views_eam.DeviceDeleteView.as_view(), name='eam-device-delete'),
|
||||
|
||||
]
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
from django.views.generic import TemplateView
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from system.mixin import LoginRequiredMixin
|
||||
from custom import (BreadcrumbMixin, SandboxDeleteView,
|
||||
SandboxListView, SandboxUpdateView, SandboxCreateView)
|
||||
from .models import Cabinet
|
||||
from .models import Cabinet, DeviceInfo, Code
|
||||
from .forms import DeviceCreateForm, DeviceUpdateForm
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class CabinetView(LoginRequiredMixin, BreadcrumbMixin, TemplateView):
|
||||
@@ -36,3 +41,80 @@ class CabinetListView(SandboxListView):
|
||||
|
||||
class CabinetDeleteView(SandboxDeleteView):
|
||||
model = Cabinet
|
||||
|
||||
|
||||
def get_device_public():
|
||||
all_code = Code.objects.all()
|
||||
all_cabinet = Cabinet.objects.all()
|
||||
all_user = User.objects.all()
|
||||
all_device = DeviceInfo.objects.all()
|
||||
ret = {
|
||||
'all_code': all_code,
|
||||
'all_cabinet': all_cabinet,
|
||||
'all_user': all_user,
|
||||
'all_device': all_device,
|
||||
}
|
||||
return ret
|
||||
|
||||
|
||||
class DeviceView(LoginRequiredMixin, BreadcrumbMixin, TemplateView):
|
||||
template_name = 'cmdb/deviceinfo.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
device_public = get_device_public()
|
||||
kwargs.update(device_public)
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class DeviceListView(SandboxListView):
|
||||
model = DeviceInfo
|
||||
fields = ['id', 'sys_hostname', 'sn_number', 'os_type', 'device_type', 'hostname', 'mac_address', 'leader']
|
||||
|
||||
def get_filters(self):
|
||||
data = self.request.GET
|
||||
filters = {}
|
||||
if 'sys_hostname' in data and data['sys_hostname']:
|
||||
filters['sys_hostname__icontains'] = data['sys_hostname']
|
||||
if 'hostname' in data and data['hostname']:
|
||||
filters['hostname__icontains'] = data['hostname']
|
||||
if 'network_type' in data and data['network_type']:
|
||||
filters['network_type'] = data['network_type']
|
||||
if 'service_type' in data and data['service_type']:
|
||||
filters['service_type'] = data['service_type']
|
||||
if 'operation_type' in data and data['operation_type']:
|
||||
filters['operation_type'] = data['operation_type']
|
||||
return filters
|
||||
|
||||
def get_datatables_paginator(self, request):
|
||||
context_data = super().get_datatables_paginator(request)
|
||||
data = context_data['data']
|
||||
for device in data:
|
||||
user_id = device['leader']
|
||||
device['leader'] = get_object_or_404(
|
||||
User, pk=int(user_id)).name if user_id else ''
|
||||
return context_data
|
||||
|
||||
|
||||
class DeviceCreateView(SandboxCreateView):
|
||||
model = DeviceInfo
|
||||
form_class = DeviceCreateForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
public_data = get_device_public()
|
||||
kwargs.update(public_data)
|
||||
print(public_data)
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class DeviceUpdateView(SandboxUpdateView):
|
||||
model = DeviceInfo
|
||||
form_class = DeviceUpdateForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
public_data = get_device_public()
|
||||
kwargs.update(public_data)
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class DeviceDeleteView(SandboxDeleteView):
|
||||
model = DeviceInfo
|
||||
|
||||
Reference in New Issue
Block a user