Create: api prototype
This commit is contained in:
parent
3b1b42d483
commit
3e969de57f
24
logs_collector/collector/serializers.py
Normal file
24
logs_collector/collector/serializers.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
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
|
@ -1,8 +1,14 @@
|
|||||||
from django.urls import path
|
from django.urls import path, include
|
||||||
|
|
||||||
|
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 = [
|
||||||
|
|
||||||
# █░█░█ █▀▀ █▄▄
|
# █░█░█ █▀▀ █▄▄
|
||||||
@ -64,4 +70,12 @@ urlpatterns = [
|
|||||||
views.DeleteTicketHandler.as_view(),
|
views.DeleteTicketHandler.as_view(),
|
||||||
name='ajax_delete_ticket'
|
name='ajax_delete_ticket'
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
|
# ▄▀█ █▀█ █
|
||||||
|
# █▀█ █▀▀ █
|
||||||
|
# -- -- --
|
||||||
|
|
||||||
|
# CREATE:
|
||||||
|
path('api/v1/', include(router.urls))
|
||||||
]
|
]
|
||||||
|
@ -7,12 +7,17 @@ from django.urls import reverse_lazy
|
|||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
# from rest_framework.response import Response
|
from rest_framework.parsers import FormParser, MultiPartParser
|
||||||
|
|
||||||
|
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
|
||||||
@ -54,6 +59,7 @@ 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)
|
||||||
|
|
||||||
@ -164,3 +170,13 @@ 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…
Reference in New Issue
Block a user