jumpserver/apps/ops/views.py

112 lines
3.4 KiB
Python
Raw Normal View History

2016-11-16 06:20:44 +00:00
# ~*~ coding: utf-8 ~*~
from __future__ import unicode_literals
2017-03-23 16:27:33 +00:00
import time
2017-03-13 16:58:25 +00:00
import json
from datetime import datetime
2017-03-13 16:58:25 +00:00
2016-11-16 06:20:44 +00:00
from django.conf import settings
from django.views.generic import ListView, DetailView, View
from django.utils import timezone
from django.shortcuts import redirect, reverse
2016-11-16 06:20:44 +00:00
2017-12-10 16:29:25 +00:00
from .models import Task, AdHoc, AdHocRunHistory
from ops.tasks import rerun_task
2016-11-16 06:20:44 +00:00
class TaskListView(ListView):
paginate_by = settings.CONFIG.DISPLAY_PER_PAGE
2017-12-10 16:29:25 +00:00
model = Task
ordering = ('-date_created',)
context_object_name = 'task_list'
template_name = 'ops/task_list.html'
date_format = '%m/%d/%Y'
keyword = date_from_s = date_to_s = ''
def get_queryset(self):
2017-12-10 16:29:25 +00:00
date_to_default = timezone.now()
date_from_default = timezone.now() - timezone.timedelta(7)
date_from_default_s = date_from_default.strftime(self.date_format)
date_to_default_s = date_to_default.strftime(self.date_format)
2017-12-10 16:29:25 +00:00
self.queryset = super().get_queryset()
self.keyword = self.request.GET.get('keyword', '')
2017-12-10 16:29:25 +00:00
self.date_from_s = self.request.GET.get('date_from', date_from_default_s)
self.date_to_s = self.request.GET.get('date_to', date_to_default_s)
if self.date_from_s:
date_from = datetime.strptime(self.date_from_s, self.date_format)
date_from = date_from.replace(tzinfo=timezone.get_current_timezone())
2017-12-10 16:29:25 +00:00
self.queryset = self.queryset.filter(date_created__gt=date_from)
if self.date_to_s:
date_to = timezone.datetime.strptime(
self.date_to_s + ' 23:59:59', '%m/%d/%Y %H:%M:%S')
date_to = date_to.replace(tzinfo=timezone.get_current_timezone())
2017-12-10 16:29:25 +00:00
self.queryset = self.queryset.filter(date_created__lt=date_to)
if self.keyword:
self.queryset = self.queryset.filter(
name__icontains=self.keyword,
)
return self.queryset
def get_context_data(self, **kwargs):
context = {
2017-03-13 16:58:25 +00:00
'app': 'Ops',
2017-12-06 10:31:51 +00:00
'action': 'Playbook record list',
'date_from': self.date_from_s,
'date_to': self.date_to_s,
'keyword': self.keyword,
}
kwargs.update(context)
return super(TaskListView, self).get_context_data(**kwargs)
2017-03-13 16:58:25 +00:00
class TaskDetailView(DetailView):
2017-12-10 16:29:25 +00:00
model = Task
template_name = 'ops/task_detail.html'
2017-03-13 16:58:25 +00:00
def get_context_data(self, **kwargs):
context = {
'app': 'Ops',
2017-12-10 16:29:25 +00:00
'action': 'Task detail',
2017-03-13 16:58:25 +00:00
}
kwargs.update(context)
2017-12-10 16:29:25 +00:00
return super().get_context_data(**kwargs)
class TaskAdhocView(DetailView):
model = Task
template_name = 'ops/task_adhoc.html'
def get_context_data(self, **kwargs):
context = {
'app': 'Ops',
'action': 'Task versions',
}
kwargs.update(context)
return super().get_context_data(**kwargs)
class TaskHistoryView(DetailView):
model = Task
template_name = 'ops/task_history.html'
def get_context_data(self, **kwargs):
context = {
'app': 'Ops',
'action': 'Task run history',
}
kwargs.update(context)
return super().get_context_data(**kwargs)
class TaskRunView(View):
pk_url_kwarg = 'pk'
def get(self, request, *args, **kwargs):
pk = kwargs.get(self.pk_url_kwarg)
rerun_task.delay(pk)
2017-03-23 16:27:33 +00:00
time.sleep(0.5)
return redirect(reverse('ops:task-detail', kwargs={'pk': pk}))