mirror of
https://github.com/retspen/webvirtcloud
synced 2024-12-24 23:25:24 +00:00
65 lines
1.7 KiB
Python
65 lines
1.7 KiB
Python
from django.shortcuts import render
|
|
from django.http import HttpResponse, HttpResponseRedirect
|
|
from django.urls import reverse
|
|
from django.contrib.auth.decorators import login_required
|
|
from instances.models import Instance
|
|
from logs.models import Logs
|
|
from django.conf import settings
|
|
import json
|
|
|
|
|
|
def addlogmsg(user, instance, message):
|
|
"""
|
|
:param user:
|
|
:param instance:
|
|
:param message:
|
|
:return:
|
|
"""
|
|
add_log_msg = Logs(user=user, instance=instance, message=message)
|
|
add_log_msg.save()
|
|
|
|
|
|
@login_required
|
|
def showlogs(request, page=1):
|
|
"""
|
|
:param request:
|
|
:param page:
|
|
:return:
|
|
"""
|
|
|
|
if not request.user.is_superuser:
|
|
return HttpResponseRedirect(reverse('index'))
|
|
|
|
page = int(page)
|
|
limit_from = (page-1)*settings.LOGS_PER_PAGE
|
|
limit_to = page*settings.LOGS_PER_PAGE
|
|
logs = Logs.objects.all().order_by('-date')[limit_from:limit_to+1]
|
|
has_next_page = logs.count() > settings.LOGS_PER_PAGE
|
|
# TODO: remove last element from queryset, but do not affect database
|
|
|
|
return render(request, 'showlogs.html', locals())
|
|
|
|
|
|
@login_required
|
|
def vm_logs(request, vname):
|
|
"""
|
|
:param request:
|
|
:param vname:
|
|
:return:
|
|
"""
|
|
|
|
if not request.user.is_superuser:
|
|
return HttpResponseRedirect(reverse('index'))
|
|
|
|
vm = Instance.objects.get(name=vname)
|
|
logs_ = Logs.objects.filter(instance=vm.name, date__gte=vm.created).order_by('-date')
|
|
logs = []
|
|
for l in logs_:
|
|
log = dict()
|
|
log['user'] = l.user
|
|
log['instance'] = l.instance
|
|
log['message'] = l.message
|
|
log['date'] = l.date.strftime('%x %X')
|
|
logs.append(log)
|
|
|
|
return HttpResponse(json.dumps(logs))
|