Compare commits

...

3 Commits

5 changed files with 43 additions and 16 deletions

View File

@ -0,0 +1,19 @@
# Generated by Django 4.2 on 2023-08-08 05:52
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('collector', '0002_alter_ticket_options_alter_archive_size_and_more'),
]
operations = [
migrations.AlterField(
model_name='archive',
name='ticket',
field=models.ForeignKey(db_column='ticket_number', on_delete=django.db.models.deletion.CASCADE, to='collector.ticket', to_field='number'),
),
]

View File

@ -32,7 +32,12 @@ class Archive(models.Model):
sha1 = models.CharField(max_length=1024, editable=False)
time_create = models.DateTimeField(auto_now_add=True)
time_update = models.DateTimeField(auto_now=True)
ticket = models.ForeignKey('Ticket', on_delete=models.CASCADE)
ticket = models.ForeignKey(
'Ticket',
to_field='number',
db_column='ticket_number',
on_delete=models.CASCADE
)
user = models.ForeignKey(User, on_delete=models.CASCADE)
def save(self, *args, **kwargs):

View File

@ -4,21 +4,14 @@ 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']
fields = ['file', 'ticket']
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
class TicketSerializer(serializers.ModelSerializer):
class Meta:
model = Ticket
fields = ['number', 'platform', 'note']

View File

@ -8,6 +8,8 @@ app_name = 'collector'
router = routers.DefaultRouter()
router.register(r'archives', views.ArchiveUploadViewSet)
router.register(r'tickets/create', views.TicketCreateViewSet)
urlpatterns = [
@ -71,7 +73,6 @@ urlpatterns = [
name='ajax_delete_ticket'
),
# ▄▀█ █▀█ █
# █▀█ █▀▀ █
# -- -- --

View File

@ -16,7 +16,7 @@ from .models import Archive, Ticket
from .forms import TicketForm
from .utils import PageTitleViewMixin, is_ajax
from .serializers import ArchiveUploadSerializer
from .serializers import ArchiveUploadSerializer, TicketSerializer
class ArchiveHandlerView(LoginRequiredMixin, SingleObjectMixin, generic.View):
@ -180,3 +180,12 @@ class ArchiveUploadViewSet(mixins.CreateModelMixin, GenericViewSet):
def perform_create(self, serializer):
serializer.save(user=self.request.user)
class TicketCreateViewSet(mixins.CreateModelMixin, GenericViewSet):
queryset = Ticket.objects.order_by('-time_create')
serializer_class = TicketSerializer
# permission_classes = [permissions.IsAuthenticatedOrReadOnly]
def perform_create(self, serializer):
serializer.save(user=self.request.user)