Compare commits
No commits in common. "3e969de57f493dd1bbc2fb68b3b66d72ec2c9071" and "95352ff5f0bce01e2e151e9883dfc356e718d5b9" have entirely different histories.
3e969de57f
...
95352ff5f0
@ -1,24 +0,0 @@
|
|||||||
from rest_framework import serializers
|
|
||||||
|
|
||||||
from .models import Archive, Ticket
|
|
||||||
|
|
||||||
|
|
||||||
class ArchiveUploadSerializer(serializers.ModelSerializer):
|
|
||||||
ticket_number = serializers.ReadOnlyField(source='ticket.number')
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = Archive
|
|
||||||
fields = ['file', 'ticket', 'ticket_number']
|
|
||||||
|
|
||||||
def to_internal_value(self, data):
|
|
||||||
try:
|
|
||||||
ticket = Ticket.objects.get(number=data['ticket'])
|
|
||||||
data['ticket'] = ticket.id
|
|
||||||
return super().to_internal_value(data)
|
|
||||||
except Exception:
|
|
||||||
return super().to_internal_value(data)
|
|
||||||
|
|
||||||
def to_representation(self, instance):
|
|
||||||
data = super().to_representation(instance)
|
|
||||||
data['ticket'] = data.pop('ticket_number')
|
|
||||||
return data
|
|
@ -68,19 +68,14 @@
|
|||||||
<!-- Search -->
|
<!-- Search -->
|
||||||
<ul class="navbar-nav flex-row flex-wrap me-md-auto">
|
<ul class="navbar-nav flex-row flex-wrap me-md-auto">
|
||||||
<li class="nav-item py-2 col-12 col-lg-auto">
|
<li class="nav-item py-2 col-12 col-lg-auto">
|
||||||
<form class="d-flex" role="search" action="{% url 'collector:tickets' %}">
|
<form class="d-flex" role="search">
|
||||||
<input
|
<input
|
||||||
class="form-control me-2"
|
class="form-control me-2"
|
||||||
type="search"
|
type="search"
|
||||||
placeholder="Search"
|
placeholder="Search"
|
||||||
aria-label="Search"
|
aria-label="Search"
|
||||||
name="search"
|
|
||||||
/>
|
/>
|
||||||
<button
|
<button class="btn btn-outline-success" type="submit"><i class="bi bi-search"></i></button>
|
||||||
class="btn btn-outline-success"
|
|
||||||
type="submit">
|
|
||||||
<i class="bi bi-search"></i>
|
|
||||||
</button>
|
|
||||||
</form>
|
</form>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -7,7 +7,8 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<!-- Ticket -->
|
<!-- Ticket -->
|
||||||
{% for ticket in tickets %}
|
{% for ticket in tickets %}
|
||||||
<div id="div-ticket-{{ ticket.number }}" class="list-group mb-2">
|
<div class="row">
|
||||||
|
<div id="div-ticket-{{ ticket.number }}" class="list-group mb-2 ms-1">
|
||||||
<div class="list-group-item list-group-item-action disable" aria-current="true">
|
<div class="list-group-item list-group-item-action disable" aria-current="true">
|
||||||
{% include 'collector/includes/ticket_info.html' %}
|
{% include 'collector/includes/ticket_info.html' %}
|
||||||
<div class="col-xl-6 mt-1 mb-2">
|
<div class="col-xl-6 mt-1 mb-2">
|
||||||
@ -15,6 +16,7 @@
|
|||||||
{% if ticket.note %}
|
{% if ticket.note %}
|
||||||
<div class="accordion-item">
|
<div class="accordion-item">
|
||||||
<h2 class="accordion-header">
|
<h2 class="accordion-header">
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="accordion-button collapsed"
|
class="accordion-button collapsed"
|
||||||
type="button" data-bs-toggle="collapse"
|
type="button" data-bs-toggle="collapse"
|
||||||
@ -76,6 +78,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<!-- Modal ticket -->
|
<!-- Modal ticket -->
|
||||||
{% include 'collector/includes/modal_ticket.html' %}
|
{% include 'collector/includes/modal_ticket.html' %}
|
||||||
<!-- Modal archive -->
|
<!-- Modal archive -->
|
||||||
|
@ -1,14 +1,8 @@
|
|||||||
from django.urls import path, include
|
from django.urls import path
|
||||||
|
|
||||||
from rest_framework import routers
|
|
||||||
|
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
app_name = 'collector'
|
app_name = 'collector'
|
||||||
|
|
||||||
router = routers.DefaultRouter()
|
|
||||||
router.register(r'archives', views.ArchiveUploadViewSet)
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
|
||||||
# █░█░█ █▀▀ █▄▄
|
# █░█░█ █▀▀ █▄▄
|
||||||
@ -70,12 +64,4 @@ urlpatterns = [
|
|||||||
views.DeleteTicketHandler.as_view(),
|
views.DeleteTicketHandler.as_view(),
|
||||||
name='ajax_delete_ticket'
|
name='ajax_delete_ticket'
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
# ▄▀█ █▀█ █
|
|
||||||
# █▀█ █▀▀ █
|
|
||||||
# -- -- --
|
|
||||||
|
|
||||||
# CREATE:
|
|
||||||
path('api/v1/', include(router.urls))
|
|
||||||
]
|
]
|
||||||
|
@ -4,20 +4,14 @@ from django.http import FileResponse, JsonResponse
|
|||||||
from django.views import generic
|
from django.views import generic
|
||||||
from django.views.generic.detail import SingleObjectMixin
|
from django.views.generic.detail import SingleObjectMixin
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.db.models import Q
|
|
||||||
|
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.parsers import FormParser, MultiPartParser
|
# from rest_framework.response import Response
|
||||||
|
|
||||||
from rest_framework import mixins
|
|
||||||
from rest_framework.viewsets import GenericViewSet
|
|
||||||
|
|
||||||
from .models import Archive, Ticket
|
from .models import Archive, Ticket
|
||||||
from .forms import TicketForm
|
from .forms import TicketForm
|
||||||
from .utils import PageTitleViewMixin, is_ajax
|
from .utils import PageTitleViewMixin, is_ajax
|
||||||
|
|
||||||
from .serializers import ArchiveUploadSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class ArchiveHandlerView(LoginRequiredMixin, SingleObjectMixin, generic.View):
|
class ArchiveHandlerView(LoginRequiredMixin, SingleObjectMixin, generic.View):
|
||||||
model = Archive
|
model = Archive
|
||||||
@ -59,7 +53,6 @@ class UpdateTicket(LoginRequiredMixin, PageTitleViewMixin, generic.UpdateView):
|
|||||||
return f'{self.title} - {self.kwargs.get("ticket", "update")}'
|
return f'{self.title} - {self.kwargs.get("ticket", "update")}'
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
print(self.request.user)
|
|
||||||
form.instance.user = self.request.user
|
form.instance.user = self.request.user
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
|
||||||
@ -71,23 +64,6 @@ class ListAllTickets(PageTitleViewMixin, generic.ListView):
|
|||||||
paginate_by = 5
|
paginate_by = 5
|
||||||
title = 'Collector - tickets'
|
title = 'Collector - tickets'
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
search_query = self.request.GET.get('search', '')
|
|
||||||
if search_query:
|
|
||||||
query_list = []
|
|
||||||
try:
|
|
||||||
for item in search_query.split(','):
|
|
||||||
query_list.append(int(item))
|
|
||||||
except ValueError:
|
|
||||||
return super().get_queryset()
|
|
||||||
queryset = self.model.objects.filter(
|
|
||||||
Q(number__in=query_list) | Q(number__icontains=query_list[0])
|
|
||||||
)
|
|
||||||
self.paginate_by = 100 # fake disable pagination)
|
|
||||||
return queryset
|
|
||||||
|
|
||||||
return super().get_queryset()
|
|
||||||
|
|
||||||
|
|
||||||
class ListPlatformTickets(PageTitleViewMixin, generic.ListView):
|
class ListPlatformTickets(PageTitleViewMixin, generic.ListView):
|
||||||
model = Ticket
|
model = Ticket
|
||||||
@ -170,13 +146,3 @@ class DeleteTicketHandler(SingleObjectMixin, generic.View):
|
|||||||
{'error': 'header XMLHttpRequest is required'},
|
{'error': 'header XMLHttpRequest is required'},
|
||||||
status=status.HTTP_406_NOT_ACCEPTABLE
|
status=status.HTTP_406_NOT_ACCEPTABLE
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ArchiveUploadViewSet(mixins.CreateModelMixin, GenericViewSet):
|
|
||||||
queryset = Archive.objects.order_by('-time_create')
|
|
||||||
serializer_class = ArchiveUploadSerializer
|
|
||||||
parser_classes = (MultiPartParser, FormParser)
|
|
||||||
# permission_classes = [permissions.IsAuthenticatedOrReadOnly]
|
|
||||||
|
|
||||||
def perform_create(self, serializer):
|
|
||||||
serializer.save(user=self.request.user)
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user