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 --> | ||||
|       <ul class="navbar-nav flex-row flex-wrap me-md-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 | ||||
|             class="form-control me-2" | ||||
|             type="search" | ||||
|             placeholder="Search" | ||||
|             aria-label="Search" | ||||
|             name="search" | ||||
|           /> | ||||
|           <button | ||||
|             class="btn btn-outline-success" | ||||
|             type="submit"> | ||||
|               <i class="bi bi-search"></i> | ||||
|           </button> | ||||
|           <button class="btn btn-outline-success" type="submit"><i class="bi bi-search"></i></button> | ||||
|         </form> | ||||
|         </li> | ||||
|       </ul> | ||||
|  | ||||
| @ -7,7 +7,8 @@ | ||||
|   {% csrf_token %} | ||||
|   <!-- Ticket --> | ||||
|   {% 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"> | ||||
|           {% include 'collector/includes/ticket_info.html' %}  | ||||
|           <div class="col-xl-6 mt-1 mb-2"> | ||||
| @ -15,6 +16,7 @@ | ||||
|               {% if ticket.note %} | ||||
|               <div class="accordion-item"> | ||||
|                 <h2 class="accordion-header"> | ||||
|                    | ||||
|                   <button  | ||||
|                     class="accordion-button collapsed" | ||||
|                     type="button" data-bs-toggle="collapse" | ||||
| @ -76,6 +78,7 @@ | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <!-- Modal ticket --> | ||||
|     {% include 'collector/includes/modal_ticket.html' %} | ||||
|     <!-- Modal archive --> | ||||
|  | ||||
| @ -1,14 +1,8 @@ | ||||
| from django.urls import path, include | ||||
| 
 | ||||
| from rest_framework import routers | ||||
| from django.urls import path | ||||
| 
 | ||||
| from . import views | ||||
| 
 | ||||
| app_name = 'collector' | ||||
| 
 | ||||
| router = routers.DefaultRouter() | ||||
| router.register(r'archives', views.ArchiveUploadViewSet) | ||||
| 
 | ||||
| urlpatterns = [ | ||||
| 
 | ||||
|     # █░█░█ █▀▀ █▄▄ | ||||
| @ -70,12 +64,4 @@ urlpatterns = [ | ||||
|         views.DeleteTicketHandler.as_view(), | ||||
|         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.generic.detail import SingleObjectMixin | ||||
| from django.urls import reverse_lazy | ||||
| from django.db.models import Q | ||||
| 
 | ||||
| from rest_framework import status | ||||
| from rest_framework.parsers import FormParser, MultiPartParser | ||||
| 
 | ||||
| from rest_framework import mixins | ||||
| from rest_framework.viewsets import GenericViewSet | ||||
| # from rest_framework.response import Response | ||||
| 
 | ||||
| from .models import Archive, Ticket | ||||
| from .forms import TicketForm | ||||
| from .utils import PageTitleViewMixin, is_ajax | ||||
| 
 | ||||
| from .serializers import ArchiveUploadSerializer | ||||
| 
 | ||||
| 
 | ||||
| class ArchiveHandlerView(LoginRequiredMixin, SingleObjectMixin, generic.View): | ||||
|     model = Archive | ||||
| @ -59,7 +53,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) | ||||
| 
 | ||||
| @ -71,23 +64,6 @@ class ListAllTickets(PageTitleViewMixin, generic.ListView): | ||||
|     paginate_by = 5 | ||||
|     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): | ||||
|     model = Ticket | ||||
| @ -170,13 +146,3 @@ class DeleteTicketHandler(SingleObjectMixin, generic.View): | ||||
|             {'error': 'header XMLHttpRequest is required'}, | ||||
|             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