#95: save CC'd emails on a comment to the Ticket for future correspondence, set to view only initially, and update tests for CC

This commit is contained in:
Garret Wassermann
2017-04-16 04:19:17 -04:00
parent 03b5e41b42
commit b2ac1fd3a5
2 changed files with 33 additions and 4 deletions

View File

@@ -34,7 +34,7 @@ from django.utils import encoding, six, timezone
from helpdesk import settings
from helpdesk.lib import send_templated_mail, safe_template_context, process_attachments
from helpdesk.models import Queue, Ticket, FollowUp, IgnoreEmail
from helpdesk.models import Queue, Ticket, TicketCC, FollowUp, IgnoreEmail
import logging
@@ -264,7 +264,7 @@ def decode_mail_headers(string):
def ticket_from_message(message, queue, logger):
# 'message' must be an RFC822 formatted message.
message = email.message_from_string(message) if six.PY3 else email.message_from_string(message.encode('utf-8'))
subject = message.get('subject', _('Created from e-mail'))
subject = message.get('subject', _('Comment from e-mail'))
subject = decode_mail_headers(decodeUnknown(message.get_charset(), subject))
for affix in STRIPPED_SUBJECT_STRINGS:
subject = subject.replace(affix, "")
@@ -274,6 +274,14 @@ def ticket_from_message(message, queue, logger):
sender = decode_mail_headers(decodeUnknown(message.get_charset(), sender))
sender_email = email.utils.parseaddr(sender)[1]
cc = message.get_all('cc', None)
if cc:
# get_all checks if multiple CC headers, but individual emails may be comma separated too
tempcc = []
for hdr in cc:
tempcc.extend(hdr.split(','))
cc = [decode_mail_headers(decodeUnknown(message.get_charset(), x.strip())) for x in tempcc]
for ignore in IgnoreEmail.objects.filter(Q(queues=queue) | Q(queues__isnull=True)):
if ignore.test(sender_email):
if ignore.keep_in_mailbox:
@@ -358,6 +366,16 @@ def ticket_from_message(message, queue, logger):
)
logger.debug("Created new ticket %s-%s" % (t.queue.slug, t.id))
if cc:
for new_cc in cc:
tcc = TicketCC(
ticket=t,
email=new_cc,
can_view=True,
can_update=False
)
tcc.save()
f = FollowUp(
ticket=t,
title=_('E-Mail Received from %(sender_email)s' % {'sender_email': sender_email}),