diff --git a/logs_collector/collector/static/collector/js/jq.ticket.detail.js b/logs_collector/collector/static/collector/js/jq.ticket.detail.js
index 88fea6d..10575fd 100644
--- a/logs_collector/collector/static/collector/js/jq.ticket.detail.js
+++ b/logs_collector/collector/static/collector/js/jq.ticket.detail.js
@@ -12,7 +12,7 @@ $(function () {
const archiveListElement = $(this).attr("data-jq-archive-target");
const delUrl = $(this).attr("href");
$.ajax({
- type: "delete",
+ type: "DELETE",
url: delUrl,
headers: {
"X-CSRFToken":CSRF,
@@ -21,12 +21,12 @@ $(function () {
// beforeSend: function(xhr) {
// xhr.setRequestHeader("X-CSRFToken", csrf);
// },
- success: function (response) {
- console.log(response.status);
+ success: function (data, textStatus, jqXHR) {
+ console.log(jqXHR.status);
$(archiveListElement).hide(1500);
},
- error: function (response) {
- console.log(response.status);
+ error: function (data, textStatus, jqXHR) {
+ console.log(jqXHR.status);
}
});
});
@@ -37,16 +37,13 @@ $(function () {
let resolved = false;
let ticketStateUrl = $(this).attr("ticket-state-url")
if ($(this).attr("ticket-state-switch") === "1") {
- console.log('Find it!!!')
- resolved = true;
$(this).attr("ticket-state-switch", "0"); // disable
} else {
- resolved = false;
+ resolved = true;
$(this).attr("ticket-state-switch", "1"); // enable
}
- console.log(resolved)
$.ajax({
- type: "POST",
+ type: "PATCH",
url: ticketStateUrl,
headers: {
"X-CSRFToken":CSRF,
@@ -57,11 +54,12 @@ $(function () {
data: JSON.stringify({
resolved: resolved,
}),
- success: function (response) {
- console.log(response.resolved)
+ success: function (data, textStatus, jqXHR) {
+ console.log(jqXHR.status)
},
- error: function (response) {
- console.log(response.resolved)
+ error: function (data, textStatus, jqXHR) {
+ console.log(data)
+ console.log(jqXHR.status)
}
});
});
@@ -80,16 +78,16 @@ $(function () {
'X-CSRFToken':CSRF,
'Content-Type':'application/json'
},
- success: function (response) {
- console.log(response.status);
+ success: function (data, textStatus, jqXHR) {
+ console.log(jqXHR.status);
if (delDiv.length) {
delDiv.hide(1500);
} else {
window.location.href = redirectUrl;
}
},
- error: function (response) {
- console.log(response.status);
+ error: function (data, textStatus, jqXHR) {
+ console.log(jqXHR.status);
}
});
});
diff --git a/logs_collector/collector/templates/collector/includes/modal_archive.html b/logs_collector/collector/templates/collector/includes/modal_archive.html
index 407b816..c143909 100644
--- a/logs_collector/collector/templates/collector/includes/modal_archive.html
+++ b/logs_collector/collector/templates/collector/includes/modal_archive.html
@@ -30,7 +30,7 @@
>Cancel
Admin
+ > Admin
{% endif %}
+
+ Swagger
+
diff --git a/logs_collector/collector/templates/collector/includes/ticket_info.html b/logs_collector/collector/templates/collector/includes/ticket_info.html
index 27d4581..734b29a 100644
--- a/logs_collector/collector/templates/collector/includes/ticket_info.html
+++ b/logs_collector/collector/templates/collector/includes/ticket_info.html
@@ -9,7 +9,7 @@
type="checkbox"
role="switch"
name="ticket-state"
- ticket-state-url="{% url 'collector:ajax_update_state_ticket' ticket.platform.name ticket.number %}"
+ ticket-state-url="{% url 'collector:ticket-detail' ticket.number %}"
{% if ticket.resolved %} ticket-state-switch="1" {% endif %}
{% if ticket.resolved %} checked {% endif %}>
diff --git a/logs_collector/collector/urls.py b/logs_collector/collector/urls.py
index e4f8aae..16ce312 100644
--- a/logs_collector/collector/urls.py
+++ b/logs_collector/collector/urls.py
@@ -6,17 +6,11 @@ from . import views
app_name = 'collector'
-router = routers.DefaultRouter()
-router.register(r'archives', views.ArchiveViewSet)
-router.register(r'platforms', views.PlatformViewSet)
-router.register(r'tickets', views.TicketViewSet)
+# █░█░█ █▀▀ █▄▄
+# ▀▄▀▄▀ ██▄ █▄█
+# -- -- -- -- --
urlpatterns = [
-
- # █░█░█ █▀▀ █▄▄
- # ▀▄▀▄▀ ██▄ █▄█
- # -- -- -- -- --
-
# CREATE:
path(
'tickets/create/',
@@ -55,28 +49,18 @@ urlpatterns = [
views.UpdateTicket.as_view(),
name='update'
),
+]
- # ▄▀█ ░░█ ▄▀█ ▀▄▀
- # █▀█ █▄█ █▀█ █░█
- # -- -- -- -- --
+# ▄▀█ █▀█ █
+# █▀█ █▀▀ █
+# -- -- --
- # UPDATE:
- path(
- 'ajax/tickets/update///',
- views.UpdateTicketStateHandler.as_view(),
- name='ajax_update_state_ticket'
- ),
- # DELETE:
- path(
- 'ajax/tickets/delete//',
- views.DeleteTicketHandler.as_view(),
- name='ajax_delete_ticket'
- ),
-
- # ▄▀█ █▀█ █
- # █▀█ █▀▀ █
- # -- -- --
+router = routers.DefaultRouter()
+router.register(r'archives', views.ArchiveViewSet)
+router.register(r'platforms', views.PlatformViewSet)
+router.register(r'tickets', views.TicketViewSet)
+urlpatterns += [
# CRUD:
path('api/v1/', include(router.urls)),
]
diff --git a/logs_collector/collector/views.py b/logs_collector/collector/views.py
index 2f8523b..8de0156 100644
--- a/logs_collector/collector/views.py
+++ b/logs_collector/collector/views.py
@@ -1,10 +1,8 @@
-import json
from django.core.exceptions import ValidationError, ObjectDoesNotExist
from django.contrib.auth.mixins import LoginRequiredMixin
-from django.http import FileResponse, JsonResponse
+from django.http import FileResponse
from django.views import generic
from django.views.generic.detail import SingleObjectMixin
-from django.urls import reverse_lazy
from django.db.models import Q
from rest_framework import status
@@ -20,7 +18,7 @@ from django_filters.rest_framework import DjangoFilterBackend
from .models import Archive, Ticket, Platform
from .forms import TicketForm
from .filters import ArchiveFilter, TicketFilter
-from .utils import PageTitleViewMixin, is_ajax
+from .utils import PageTitleViewMixin
from .permissions import IsGuestUpload
from .serializers import (
@@ -40,12 +38,6 @@ class ArchiveHandlerView(LoginRequiredMixin, SingleObjectMixin, generic.View):
self.object = self.get_object()
return FileResponse(self.object.file)
- def delete(self, request, path):
- if is_ajax(request):
- self.object = self.get_object()
- self.object.delete()
- return JsonResponse({'file': path}, status=status.HTTP_200_OK)
-
class CreateTicket(LoginRequiredMixin, PageTitleViewMixin, generic.CreateView):
model = Ticket
@@ -71,7 +63,6 @@ class UpdateTicket(LoginRequiredMixin, PageTitleViewMixin, generic.UpdateView):
return f'{self.title} - {self.kwargs.get("ticket", "update")}'
def form_valid(self, form):
- print(self.request.user)
form.instance.user = self.request.user
return super().form_valid(form)
@@ -95,13 +86,17 @@ class ListAllTickets(PageTitleViewMixin, generic.ListView):
queryset = self.model.objects.filter(
Q(number__in=query_list) | Q(number__icontains=query_list[0])
)
- self.paginate_by = 100 # fake disable pagination)
+ self.paginate_by = 100 # ? fake disable pagination)
return queryset
return super().get_queryset()
-class ListPlatformTickets(PageTitleViewMixin, generic.ListView):
+class ListPlatformTickets(
+ LoginRequiredMixin,
+ PageTitleViewMixin,
+ generic.ListView
+ ):
model = Ticket
template_name = 'collector/tickets.html'
context_object_name = 'tickets'
@@ -117,7 +112,7 @@ class ListPlatformTickets(PageTitleViewMixin, generic.ListView):
)
-class DetailTicket(PageTitleViewMixin, generic.DetailView):
+class DetailTicket(LoginRequiredMixin, PageTitleViewMixin, generic.DetailView):
model = Ticket
template_name = 'collector/ticket.html'
context_object_name = 'ticket'
@@ -128,62 +123,6 @@ class DetailTicket(PageTitleViewMixin, generic.DetailView):
return f'{self.title} - {self.kwargs.get("ticket", "show")}'
-class DeleteTicket(PageTitleViewMixin, generic.DeleteView):
- model = Ticket
- template_name = 'collector/ticket_delete.html'
- context_object_name = 'ticket'
- slug_field = 'number'
- slug_url_kwarg = 'ticket'
- success_url = reverse_lazy('tickets')
-
-
-class UpdateTicketStateHandler(SingleObjectMixin, generic.View):
- model = Ticket
- slug_field = 'number'
- slug_url_kwarg = 'ticket'
-
- def post(self, request, **kwargs):
- if is_ajax(request):
- self.object = self.get_object()
- if request.body:
- data = json.loads(request.body)
- resolved_field = data.get('resolved')
- if isinstance(resolved_field, bool):
- self.object.resolved = not resolved_field
- self.object.save()
- return JsonResponse(
- {'resolved': not resolved_field},
- status=status.HTTP_201_CREATED
- )
- return JsonResponse(
- {'resolved': 'must be a boolean'},
- status=status.HTTP_400_BAD_REQUEST
- )
- return JsonResponse(
- {'error': 'header XMLHttpRequest is required'},
- status=status.HTTP_406_NOT_ACCEPTABLE
- )
-
-
-class DeleteTicketHandler(SingleObjectMixin, generic.View):
- model = Ticket
- slug_field = 'number'
- slug_url_kwarg = 'ticket'
-
- def delete(self, request, ticket):
- if is_ajax(request):
- self.object = self.get_object()
- self.object.delete()
- return JsonResponse(
- {'status': status.HTTP_200_OK},
- status=status.HTTP_200_OK
- )
- return JsonResponse(
- {'error': 'header XMLHttpRequest is required'},
- status=status.HTTP_406_NOT_ACCEPTABLE
- )
-
-
class ArchiveViewSet(viewsets.ModelViewSet):
queryset = Archive.objects.order_by('-time_create')
serializer_class = ArchiveSerializer
@@ -210,7 +149,7 @@ class ArchiveViewSet(viewsets.ModelViewSet):
)
bound_ticket.attempts -= 1
bound_ticket.save()
- # ? mixin bound ticket to request.data from user
+ # ? mixin bound ticket number to request.data from user
request.data['ticket'] = bound_ticket.number
# ? change serializer for guest user
self.serializer_class = PublicArchiveUploadSerializer
diff --git a/logs_collector/logs_collector/settings.py b/logs_collector/logs_collector/settings.py
index d10fa07..4ce9933 100644
--- a/logs_collector/logs_collector/settings.py
+++ b/logs_collector/logs_collector/settings.py
@@ -173,12 +173,6 @@ SPECTACULAR_SETTINGS = {
'VERSION': '0.1.0',
'SERVE_INCLUDE_SCHEMA': True,
'SERVE_PUBLIC': False,
- 'SERVERS': [
- {
- 'url': 'http://localhost:8000/api/v1/',
- 'description': 'main api endpoint'
- },
- ],
}
# https://django-rest-framework-simplejwt.readthedocs.io/en/latest/