diff --git a/logs_collector/collector/static/collector/js/jq.delete.archive.js b/logs_collector/collector/static/collector/js/jq.delete.archive.js deleted file mode 100644 index de47697..0000000 --- a/logs_collector/collector/static/collector/js/jq.delete.archive.js +++ /dev/null @@ -1,31 +0,0 @@ -$(function () { - function deleteArchiveListElement(id) { - const archiveList = `#li-archive-${id}` - $(archiveList).remove() - } - $(".btn-archive-eraser").click(function (e) { - e.preventDefault(); - const csrf = $("input[name=csrfmiddlewaretoken]").val() - console.log(csrf) - const archiveListElement = $(this).attr("data-jq-archive-target"); - $.ajax({ - type: "delete", - url: $(this).attr("href"), - headers: { - 'X-CSRFToken':csrf, - 'Content-Type':'application/json' - }, - // beforeSend: function(xhr) { - // xhr.setRequestHeader("X-CSRFToken", csrf); - // }, - success: function (response) { - console.log(response) - deleteArchiveListElement(archiveListElement); - }, - error: function (response) { - console.log(response) - } - }); - }); - console.log("JQ is ready to work"); -}); diff --git a/logs_collector/collector/static/collector/js/jq.ticket.detail.js b/logs_collector/collector/static/collector/js/jq.ticket.detail.js new file mode 100644 index 0000000..7a09499 --- /dev/null +++ b/logs_collector/collector/static/collector/js/jq.ticket.detail.js @@ -0,0 +1,61 @@ +$(function () { + // CSRF token: + const csrf = $("input[name=csrfmiddlewaretoken]").val() + + function deleteArchiveListElement(id) { + const archiveList = `#li-archive-${id}` + $(archiveList).hide(1500); + } + $(".btn-archive-eraser").click(function (e) { + e.preventDefault(); + const archiveListElement = $(this).attr("data-jq-archive-target"); + $.ajax({ + type: "delete", + url: $(this).attr("href"), + headers: { + 'X-CSRFToken':csrf, + 'Content-Type':'application/json' + }, + // beforeSend: function(xhr) { + // xhr.setRequestHeader("X-CSRFToken", csrf); + // }, + success: function (response) { + console.log(response.status) + deleteArchiveListElement(archiveListElement); + }, + error: function (response) { + console.log(response.status) + } + }); + }); + $("#ticket-state").click(function () { + console.log('Press'); + let resolved = false; + if ($(this).attr("checked")) { + console.log('Find it!!!') + resolved = true; + } else { + resolved = false; + } + $.ajax({ + type: "post", + url: $(this).attr("ticket-state-url"), + headers: { + 'X-CSRFToken':csrf, + 'Content-Type':'application/json' + }, + contentType: 'application/json', + dataType: 'json', + data: JSON.stringify({ + "resolved": resolved + }), + success: function (response) { + console.log(response.status) + }, + error: function (response) { + console.log(response.status) + } + }); + }); + console.log("JQ is ready to work"); +}); diff --git a/logs_collector/collector/templates/collector/base.html b/logs_collector/collector/templates/collector/base.html index 927e1ca..16300bb 100644 --- a/logs_collector/collector/templates/collector/base.html +++ b/logs_collector/collector/templates/collector/base.html @@ -8,26 +8,32 @@ rel="stylesheet" href="{% static 'collector/css/bootstrap.min.css' %}" rel="stylesheet" - /> + > + > + > - - + > + + Document diff --git a/logs_collector/collector/templates/collector/ticket.html b/logs_collector/collector/templates/collector/ticket.html index 322407d..1640416 100644 --- a/logs_collector/collector/templates/collector/ticket.html +++ b/logs_collector/collector/templates/collector/ticket.html @@ -14,12 +14,13 @@ {{ ticket.time_create }}
- +
@@ -54,7 +55,12 @@ SHA1: {{ archive.sha1 }} -
+ +
+ Uploaded: + {{ archive.time_update }} +
+
Size: {{ archive.size }} @@ -128,5 +134,5 @@ {% endblock content %} {% block jquery %} - + {% endblock jquery %} \ No newline at end of file diff --git a/logs_collector/collector/utils.py b/logs_collector/collector/utils.py index 4d9c79f..1a10837 100644 --- a/logs_collector/collector/utils.py +++ b/logs_collector/collector/utils.py @@ -16,3 +16,8 @@ def get_file_size(file_path, unit='bytes'): else: size = file_size / 1024 ** exponents_map[unit] return round(size, 3) + + +def is_ajax(request): + if request.headers.get('x-requested-with') == 'XMLHttpRequest': + return True diff --git a/logs_collector/collector/views.py b/logs_collector/collector/views.py index 1913552..2a6a3c6 100644 --- a/logs_collector/collector/views.py +++ b/logs_collector/collector/views.py @@ -1,4 +1,6 @@ +import json # from django.shortcuts import render +from django.contrib.auth.mixins import LoginRequiredMixin from django.http import FileResponse, JsonResponse, Http404 from django.views import generic @@ -6,9 +8,10 @@ from rest_framework import status # from rest_framework.response import Response from .models import Archive, Ticket, Platform +from .utils import is_ajax -class ArchiveHandlerView(generic.View): +class ArchiveHandlerView(LoginRequiredMixin, generic.View): def get(self, request, path): try: file = Archive.objects.get(file=path) @@ -72,8 +75,21 @@ class DetailTicket(generic.DetailView): template_name = 'collector/ticket.html' context_object_name = 'ticket' + def post(self, request, platform, ticket): + if is_ajax(request): + model = self.get_object() + if request.body: + data = json.loads(request.body) + if data.get('resolved') is True: + model.resolved = False + model.save() + if data.get('resolved') is False: + model.resolved = True + model.save() + return JsonResponse({'status': 201}, status=status.HTTP_201_CREATED) + def get_object(self, queryset=None): - return Ticket.objects.get(number=self.kwargs.get('ticket')) + return self.model.objects.get(number=self.kwargs.get('ticket')) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs)