tags&filters

This commit is contained in:
RobbieHan
2019-02-17 22:40:06 +08:00
parent b58be33aac
commit e3490b3af7
7 changed files with 279 additions and 1 deletions

View File

@@ -0,0 +1,3 @@
# @Time : 2019/2/17 21:28
# @Author : RobbieHan
# @File : __init__.py.py

View File

@@ -0,0 +1,60 @@
from django import template
from django.db.models.query import QuerySet
from django.contrib.auth import get_user_model
from cmdb.models import Code, Cabinet
register = template.Library()
User = get_user_model()
@register.simple_tag
def get_con(context, arg, field):
if isinstance(context, QuerySet):
context = context.values()
instance = [con for con in context if con['id'] == arg]
if instance:
return instance[0][field]
return ''
@register.filter(name='compare_result')
def get_change_compare(changes):
change_compare = []
for key, value in changes.items():
if key in ['network_type', 'service_type', 'operation_type']:
log = replace_log(key, value, Code, 'value')
elif key == 'dev_cabinet':
log = replace_log(key, value, Cabinet, 'number')
elif key == 'leader':
log = replace_log(key, value, User, 'name')
else:
log = '字段:"%(field)s",由:"%(old)s",变更为:"%(new)s"' % {
'field': key,
'old': value[0],
'new': value[1]
}
change_compare.append(log)
return ''.join(str(i) for i in change_compare)
def replace_log(key, value, model, field):
old = value[0]
new = value[1]
log_format = '字段:"%(field)s",由:"%(old)s",变更为:"%(new)s"'
try:
data = model.objects.filter(id=old).values()[0]
old_data = data[field]
except Exception:
old_data = old
try:
data = model.objects.filter(id=new).values()[0]
new_data = data[field]
except Exception:
new_data = new
return log_format % {
'field': key,
'old': old_data,
'new': new_data
}

View File

@@ -33,4 +33,5 @@ urlpatterns = [
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'),
path('eam/device/device2connection/', views_eam.Device2ConnectionView.as_view(), name='eam-device-device2connection'),
path('eam/device/detail/', views_eam.DeviceDetailView.as_view(), name='eam-device-detail'),
]

View File

@@ -11,6 +11,7 @@ from custom import (BreadcrumbMixin, SandboxDeleteView,
SandboxListView, SandboxUpdateView, SandboxCreateView)
from .models import Cabinet, DeviceInfo, Code, ConnectionInfo
from .forms import DeviceCreateForm, DeviceUpdateForm, ConnectionInfoForm
from utils.db_utils import MongodbDriver
User = get_user_model()
@@ -157,4 +158,20 @@ class Device2ConnectionView(LoginRequiredMixin, View):
form_errors = str(form.errors)
errors = re.findall(pattern, form_errors)
res['error'] = errors[0]
return JsonResponse(res)
return JsonResponse(res)
class DeviceDetailView(LoginRequiredMixin, BreadcrumbMixin, TemplateView):
template_name = 'cmdb/deviceinfo_detail.html'
def get_context_data(self, **kwargs):
device = get_object_or_404(DeviceInfo, pk=int(self.request.GET['id']))
mongo = MongodbDriver()
logs = mongo.find(id=int(self.request.GET['id']), sort_by='history_date')
all_file = device.devicefile_set.all()
device_public = get_device_public()
kwargs['device'] = device
kwargs['logs'] = logs
kwargs['all_file'] = all_file
kwargs.update(device_public)
return super().get_context_data(**kwargs)