stash
This commit is contained in:
parent
6aaa522a6b
commit
ba427c7a84
25 changed files with 274 additions and 236 deletions
|
@ -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
|
||||
|
|
|
@ -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')),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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'),
|
||||
),
|
||||
]
|
|
@ -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')]},
|
||||
),
|
||||
]
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue