Merge in 0.2.21 bugfix

This commit is contained in:
Garret Wassermann 2020-04-15 07:38:52 -04:00
commit 5ad0743722
3 changed files with 50 additions and 4 deletions

View File

@ -317,7 +317,7 @@ class TicketForm(AbstractTicketForm):
self.fields['assigned_to'].choices = [('', '--------')] + [(u.id, u.get_username()) for u in assignable_users] self.fields['assigned_to'].choices = [('', '--------')] + [(u.id, u.get_username()) for u in assignable_users]
self._add_form_custom_fields() self._add_form_custom_fields()
def save(self, user=None): def save(self, user):
""" """
Writes and returns a Ticket() object Writes and returns a Ticket() object
""" """
@ -412,7 +412,7 @@ class PublicTicketForm(AbstractTicketForm):
# get the queue user entered # get the queue user entered
return Queue.objects.get(id=int(self.cleaned_data['queue'])) return Queue.objects.get(id=int(self.cleaned_data['queue']))
def save(self): def save(self, user):
""" """
Writes and returns a Ticket() object Writes and returns a Ticket() object
""" """
@ -423,7 +423,8 @@ class PublicTicketForm(AbstractTicketForm):
self._create_custom_fields(ticket) self._create_custom_fields(ticket)
followup = self._create_follow_up(ticket, title=_('Ticket Opened Via Web')) followup = self._create_follow_up(
ticket, title=_('Ticket Opened Via Web'), user=user)
followup.save() followup.save()
files = self._attach_files_to_follow_up(followup) files = self._attach_files_to_follow_up(followup)

View File

@ -4,6 +4,7 @@ import uuid
from helpdesk.models import Queue, CustomField, FollowUp, Ticket, TicketCC, KBCategory, KBItem from helpdesk.models import Queue, CustomField, FollowUp, Ticket, TicketCC, KBCategory, KBItem
from django.test import TestCase from django.test import TestCase
from django.contrib.auth import get_user_model
from django.core import mail from django.core import mail
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.forms import ValidationError from django.forms import ValidationError
@ -43,6 +44,10 @@ class TicketBasicsTestCase(TestCase):
'description': 'Some Test Ticket', 'description': 'Some Test Ticket',
} }
self.user = get_user_model().objects.create(
username='User_1',
)
self.client = Client() self.client = Client()
def test_create_ticket_instance_from_payload(self): def test_create_ticket_instance_from_payload(self):
@ -85,6 +90,45 @@ class TicketBasicsTestCase(TestCase):
# Ensure submitter, new-queue + update-queue were all emailed. # Ensure submitter, new-queue + update-queue were all emailed.
self.assertEqual(email_count + 3, len(mail.outbox)) self.assertEqual(email_count + 3, len(mail.outbox))
ticket = Ticket.objects.last()
self.assertEqual(ticket.followup_set.count(), 1)
# Follow up is anonymous
self.assertIsNone(ticket.followup_set.first().user)
def test_create_ticket_authorized(self):
email_count = len(mail.outbox)
self.client.force_login(self.user)
response = self.client.get(reverse('helpdesk:home'))
self.assertEqual(response.status_code, 200)
post_data = {
'title': 'Test ticket title',
'queue': self.queue_public.id,
'submitter_email': 'ticket1.submitter@example.com',
'body': 'Test ticket body',
'priority': 3,
}
response = self.client.post(reverse('helpdesk:home'), post_data, follow=True)
last_redirect = response.redirect_chain[-1]
last_redirect_url = last_redirect[0]
# last_redirect_status = last_redirect[1]
# Ensure we landed on the "View" page.
# Django 1.9 compatible way of testing this
# https://docs.djangoproject.com/en/1.9/releases/1.9/#http-redirects-no-longer-forced-to-absolute-uris
urlparts = urlparse(last_redirect_url)
self.assertEqual(urlparts.path, reverse('helpdesk:public_view'))
# Ensure submitter, new-queue + update-queue were all emailed.
self.assertEqual(email_count + 3, len(mail.outbox))
ticket = Ticket.objects.last()
self.assertEqual(ticket.followup_set.count(), 1)
# Follow up is for registered user
self.assertEqual(ticket.followup_set.first().user, self.user)
def test_create_ticket_private(self): def test_create_ticket_private(self):
email_count = len(mail.outbox) email_count = len(mail.outbox)
post_data = { post_data = {

View File

@ -1046,7 +1046,8 @@ class CreateTicketView(MustBeStaffMixin, abstract_views.AbstractCreateTicketMixi
return kwargs return kwargs
def form_valid(self, form): def form_valid(self, form):
self.ticket = form.save() self.ticket = form.save(
user=self.request.user if self.request.user.is_authenticated else None)
return super().form_valid(form) return super().form_valid(form)
def get_success_url(self): def get_success_url(self):