This commit is contained in:
j3d1 2023-12-11 22:18:33 +01:00
parent 6aaa522a6b
commit ba427c7a84
25 changed files with 274 additions and 236 deletions

View file

@ -53,13 +53,9 @@ class IssueSerializer(serializers.ModelSerializer):
class IssueViewSet(viewsets.ModelViewSet):
serializer_class = IssueSerializer
queryset = IssueThread.objects.all()
permission_classes = []
authentication_classes = []
@api_view(['POST'])
@permission_classes([])
@authentication_classes([])
def reply(request, pk):
issue = IssueThread.objects.get(pk=pk)
# email = issue.reply(request.data['body']) # TODO evaluate if this is a useful abstraction

View file

@ -1,4 +1,4 @@
# Generated by Django 4.2.7 on 2023-12-06 02:34
# Generated by Django 4.2.7 on 2023-12-09 02:13
from django.db import migrations, models
import django.db.models.deletion
@ -18,9 +18,13 @@ class Migration(migrations.Migration):
('is_deleted', models.BooleanField(default=False)),
('deleted_at', models.DateTimeField(blank=True, null=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('name', models.CharField(max_length=255)),
('state', models.CharField(default='new', max_length=255)),
('assigned_to', models.CharField(max_length=255, null=True)),
('last_activity', models.DateTimeField(auto_now=True)),
],
options={
'abstract': False,
'permissions': [('send_mail', 'Can send mail')],
},
),
migrations.CreateModel(
@ -29,7 +33,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(primary_key=True, serialize=False)),
('state', models.CharField(max_length=255)),
('timestamp', models.DateTimeField(auto_now_add=True)),
('issue_thread', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tickets.issuethread')),
('issue_thread', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='state_changes', to='tickets.issuethread')),
],
),
migrations.CreateModel(
@ -38,7 +42,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(primary_key=True, serialize=False)),
('comment', models.TextField()),
('timestamp', models.DateTimeField(auto_now_add=True)),
('issue_thread', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tickets.issuethread')),
('issue_thread', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='tickets.issuethread')),
],
),
]

View file

@ -1,45 +0,0 @@
# Generated by Django 4.2.7 on 2023-12-06 03:53
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('tickets', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='issuethread',
name='assigned_to',
field=models.CharField(max_length=255, null=True),
),
migrations.AddField(
model_name='issuethread',
name='last_activity',
field=models.DateTimeField(auto_now=True),
),
migrations.AddField(
model_name='issuethread',
name='name',
field=models.CharField(default='unnamed issue', max_length=255),
preserve_default=False,
),
migrations.AddField(
model_name='issuethread',
name='state',
field=models.CharField(default='new', max_length=255),
),
migrations.AlterField(
model_name='comment',
name='issue_thread',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='tickets.issuethread'),
),
migrations.AlterField(
model_name='statechange',
name='issue_thread',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='state_changes', to='tickets.issuethread'),
),
]

View file

@ -1,17 +0,0 @@
# Generated by Django 4.2.7 on 2023-12-06 13:47
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('tickets', '0002_issuethread_assigned_to_issuethread_last_activity_and_more'),
]
operations = [
migrations.AlterModelOptions(
name='issuethread',
options={'permissions': [('send_mail', 'Can send mail')]},
),
]

View file

@ -2,16 +2,24 @@ from datetime import datetime, timedelta
from django.test import TestCase, Client
from authentication.models import ExtendedUser
from mail.models import Email
from tickets.models import IssueThread, StateChange, Comment
client = Client()
from django.contrib.auth.models import User
from knox.models import AuthToken
class IssueApiTest(TestCase):
def setUp(self):
super().setUp()
self.user = ExtendedUser.objects.create_user('testuser', 'test', 'test')
self.user.save()
self.token = AuthToken.objects.create(user=self.user)
self.client = Client(headers={'Authorization': 'Token ' + self.token[1]})
def test_issues_empty(self):
response = client.get('/api/2/tickets/')
response = self.client.get('/api/2/tickets/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), [])
@ -48,7 +56,7 @@ class IssueApiTest(TestCase):
timestamp=now + timedelta(seconds=3),
)
response = client.get('/api/2/tickets/')
response = self.client.get('/api/2/tickets/')
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.json()), 1)
self.assertEqual(response.json()[0]['id'], issue.id)