stash
This commit is contained in:
parent
5af3e72218
commit
804c47a3b8
9 changed files with 66 additions and 182 deletions
|
@ -1,6 +1,6 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from tickets.models import IssueThread, Comment, StateChange, Assignment, ItemRelation, ShippingCode
|
||||
from tickets.models import IssueThread, Comment, StateChange, Assignment, ItemRelation, ShippingVoucher
|
||||
|
||||
|
||||
class IssueThreadAdmin(admin.ModelAdmin):
|
||||
|
@ -23,7 +23,7 @@ class ItemRelationAdmin(admin.ModelAdmin):
|
|||
pass
|
||||
|
||||
|
||||
class ShippingCodesAdmin(admin.ModelAdmin):
|
||||
class ShippingVouchersAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
|
||||
|
||||
|
@ -32,4 +32,4 @@ admin.site.register(Comment, CommentAdmin)
|
|||
admin.site.register(StateChange, StateChangeAdmin)
|
||||
admin.site.register(Assignment, AssignmentAdmin)
|
||||
admin.site.register(ItemRelation, ItemRelationAdmin)
|
||||
admin.site.register(ShippingCode, ShippingCodesAdmin)
|
||||
admin.site.register(ShippingVoucher, ShippingVouchersAdmin)
|
||||
|
|
|
@ -13,8 +13,8 @@ from core.settings import MAIL_DOMAIN
|
|||
from mail.models import Email
|
||||
from mail.protocol import send_smtp, make_reply, collect_references
|
||||
from notify_sessions.models import SystemEvent
|
||||
from tickets.models import IssueThread, Comment, STATE_CHOICES, ShippingCode
|
||||
from tickets.serializers import IssueSerializer, CommentSerializer, ShippingCodeSerializer
|
||||
from tickets.models import IssueThread, Comment, STATE_CHOICES, ShippingVoucher
|
||||
from tickets.serializers import IssueSerializer, CommentSerializer, ShippingVoucherSerializer
|
||||
|
||||
|
||||
class IssueViewSet(viewsets.ModelViewSet):
|
||||
|
@ -118,7 +118,7 @@ def add_comment(request, pk):
|
|||
|
||||
router = routers.SimpleRouter()
|
||||
router.register(r'tickets', IssueViewSet, basename='issues')
|
||||
router.register(r'shipping_codes', ShippingCodeViewSet, basename='shipping_codes')
|
||||
router.register(r'shipping_vouchers', ShippingVoucherViewSet, basename='shipping_vouchers')
|
||||
|
||||
urlpatterns = ([
|
||||
re_path(r'^tickets/(?P<pk>\d+)/reply/$', reply, name='reply'),
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
# Generated by Django 4.2.7 on 2024-06-15 17:37
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('tickets', '0011_issuethread_related_items'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ShippingCode',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('code', models.CharField(max_length=255)),
|
||||
('type', models.CharField(max_length=255)),
|
||||
('timestamp', models.DateTimeField(auto_now_add=True)),
|
||||
('used_at', models.DateTimeField(null=True)),
|
||||
('issue_thread', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='shipping_codes', to='tickets.issuethread')),
|
||||
],
|
||||
),
|
||||
]
|
|
@ -138,9 +138,9 @@ class ItemRelation(models.Model):
|
|||
return str(self.issue_thread) + ' related to ' + str(self.item)
|
||||
|
||||
|
||||
class ShippingCode(models.Model):
|
||||
class ShippingVoucher(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
issue_thread = models.ForeignKey(IssueThread, on_delete=models.CASCADE, related_name='shipping_codes', null=True)
|
||||
issue_thread = models.ForeignKey(IssueThread, on_delete=models.CASCADE, related_name='shipping_vouchers', null=True)
|
||||
code = models.CharField(max_length=255)
|
||||
type = models.CharField(max_length=255)
|
||||
timestamp = models.DateTimeField(auto_now_add=True)
|
||||
|
|
|
@ -2,7 +2,7 @@ from rest_framework import serializers
|
|||
|
||||
from authentication.models import ExtendedUser
|
||||
from mail.api_v2 import AttachmentSerializer
|
||||
from tickets.models import IssueThread, Comment, STATE_CHOICES, ShippingCode
|
||||
from tickets.models import IssueThread, Comment, STATE_CHOICES, ShippingVoucher
|
||||
from inventory.serializers import ItemSerializer
|
||||
|
||||
|
||||
|
@ -29,9 +29,9 @@ class StateSerializer(serializers.Serializer):
|
|||
return obj['value']
|
||||
|
||||
|
||||
class ShippingCodeSerializer(serializers.ModelSerializer):
|
||||
class ShippingVoucherSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ShippingCode
|
||||
model = ShippingVoucher
|
||||
fields = ('id', 'code', 'type', 'timestamp', 'issue_thread', 'used_at')
|
||||
read_only_fields = ('id', 'timestamp', 'used_at')
|
||||
|
||||
|
@ -122,13 +122,13 @@ class IssueSerializer(serializers.ModelSerializer):
|
|||
'timestamp': relation.timestamp,
|
||||
'item': ItemSerializer(relation.item).data,
|
||||
})
|
||||
for shipping_code in obj.shipping_codes.all():
|
||||
for shipping_voucher in obj.shipping_vouchers.all():
|
||||
timeline.append({
|
||||
'type': 'shipping_code',
|
||||
'id': shipping_code.id,
|
||||
'timestamp': shipping_code.used_at,
|
||||
'code': shipping_code.code,
|
||||
'code_type': shipping_code.type,
|
||||
'type': 'shipping_voucher',
|
||||
'id': shipping_voucher.id,
|
||||
'timestamp': shipping_voucher.used_at,
|
||||
'code': shipping_voucher.code,
|
||||
'code_type': shipping_voucher.type,
|
||||
})
|
||||
return sorted(timeline, key=lambda x: x['timestamp'])
|
||||
|
||||
|
|
|
@ -4,12 +4,12 @@ from django.test import TestCase, Client
|
|||
|
||||
from authentication.models import ExtendedUser
|
||||
from mail.models import Email, EmailAttachment
|
||||
from tickets.models import IssueThread, StateChange, Comment, ShippingCode
|
||||
from tickets.models import IssueThread, StateChange, Comment, ShippingVoucher
|
||||
from django.contrib.auth.models import Permission
|
||||
from knox.models import AuthToken
|
||||
|
||||
|
||||
class ShippingCodeApiTest(TestCase):
|
||||
class ShippingVoucherApiTest(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
@ -20,13 +20,13 @@ class ShippingCodeApiTest(TestCase):
|
|||
self.client = Client(headers={'Authorization': 'Token ' + self.token[1]})
|
||||
|
||||
def test_issues_empty(self):
|
||||
response = self.client.get('/api/2/shipping_codes/')
|
||||
response = self.client.get('/api/2/shipping_vouchers/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.json(), [])
|
||||
|
||||
def test_issues_list(self):
|
||||
ShippingCode.objects.create(code='1234', type='2kg-eu')
|
||||
response = self.client.get('/api/2/shipping_codes/')
|
||||
ShippingVoucher.objects.create(code='1234', type='2kg-eu')
|
||||
response = self.client.get('/api/2/shipping_vouchers/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.json()[0]['code'], '1234')
|
||||
self.assertEqual(response.json()[0]['used_at'], None)
|
||||
|
@ -34,7 +34,7 @@ class ShippingCodeApiTest(TestCase):
|
|||
self.assertEqual(response.json()[0]['type'], '2kg-eu')
|
||||
|
||||
def test_issues_create(self):
|
||||
response = self.client.post('/api/2/shipping_codes/', {'code': '1234', 'type': '2kg-eu'})
|
||||
response = self.client.post('/api/2/shipping_vouchers/', {'code': '1234', 'type': '2kg-eu'})
|
||||
self.assertEqual(response.status_code, 201)
|
||||
self.assertEqual(response.json()['code'], '1234')
|
||||
self.assertEqual(response.json()['used_at'], None)
|
Loading…
Add table
Add a link
Reference in a new issue