From 0661fc995d99f3294860e6aa738305b82fb7f204 Mon Sep 17 00:00:00 2001 From: Evan Borgstrom Date: Fri, 16 Dec 2011 14:27:16 -0500 Subject: [PATCH 1/3] Handle context['queue'] as a dict or an object See: GH-70 - https://github.com/rossp/django-helpdesk/pull/70 --- helpdesk/lib.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/helpdesk/lib.py b/helpdesk/lib.py index 05469588..64999653 100644 --- a/helpdesk/lib.py +++ b/helpdesk/lib.py @@ -54,7 +54,15 @@ def send_templated_mail(template_name, email_context, recipients, sender=None, b import os context = Context(email_context) - locale = context['queue'].get('locale', 'en') + + # XXX: context['queue'] seems to able to be provided as either + # a dict or a Queue object, handle both & fallback to 'en' + if isinstance(context['queue'], dict): + locale = context['queue'].get('locale', 'en') + elif hasattr(context['queue'], 'locale'): + locale = context['queue'].locale + else: + locale = 'en' t = None try: From 969c0cdc6e2f5bb93b570679fc7914df3a1498cf Mon Sep 17 00:00:00 2001 From: Alex Garel Date: Tue, 29 Nov 2011 19:25:48 +0100 Subject: [PATCH 2/3] Merge+Fix of Alex's commit for GH-93 bug fix : on update we need followup comment for notification --- helpdesk/management/commands/get_email.py | 68 ++++++++++++----------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index 795fc2e5..1b22c0b0 100644 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -246,6 +246,39 @@ def ticket_from_message(message, queue, quiet): t.status = Ticket.REOPENED_STATUS t.save() + f = FollowUp( + ticket = t, + title = _('E-Mail Received from %(sender_email)s' % {'sender_email': sender_email}), + date = datetime.now(), + public = True, + comment = body, + ) + + if t.status == Ticket.REOPENED_STATUS: + f.new_status = Ticket.REOPENED_STATUS + f.title = _('Ticket Re-Opened by E-Mail Received from %(sender_email)s' % {'sender_email': sender_email}) + + f.save() + + if not quiet: + print (" [%s-%s] %s%s" % (t.queue.slug, t.id, t.title, update)).encode('ascii', 'replace') + + for file in files: + if file['content']: + filename = file['filename'].encode('ascii', 'replace').replace(' ', '_') + filename = re.sub('[^a-zA-Z0-9._-]+', '', filename) + a = Attachment( + followup=f, + filename=filename, + mime_type=file['type'], + size=len(file['content']), + ) + a.file.save(filename, ContentFile(file['content']), save=False) + a.save() + if not quiet: + print " - %s" % filename + + context = { 'ticket': t, 'queue': queue, @@ -281,6 +314,9 @@ def ticket_from_message(message, queue, quiet): ) else: + + context.update(comment=f.comment) + if t.status == Ticket.REOPENED_STATUS: update = _(' (Reopened)') else: @@ -304,38 +340,6 @@ def ticket_from_message(message, queue, quiet): fail_silently=True, ) - f = FollowUp( - ticket = t, - title = _('E-Mail Received from %(sender_email)s' % {'sender_email': sender_email}), - date = datetime.now(), - public = True, - comment = body, - ) - - if t.status == Ticket.REOPENED_STATUS: - f.new_status = Ticket.REOPENED_STATUS - f.title = _('Ticket Re-Opened by E-Mail Received from %(sender_email)s' % {'sender_email': sender_email}) - - f.save() - - if not quiet: - print (" [%s-%s] %s%s" % (t.queue.slug, t.id, t.title, update)).encode('ascii', 'replace') - - for file in files: - if file['content']: - filename = file['filename'].encode('ascii', 'replace').replace(' ', '_') - filename = re.sub('[^a-zA-Z0-9._-]+', '', filename) - a = Attachment( - followup=f, - filename=filename, - mime_type=file['type'], - size=len(file['content']), - ) - a.file.save(filename, ContentFile(file['content']), save=False) - a.save() - if not quiet: - print " - %s" % filename - return t From 1f00eef6d0a9eea47bf0ab0d2d5b9e6bf3b388c8 Mon Sep 17 00:00:00 2001 From: Evan Borgstrom Date: Tue, 24 Jan 2012 23:19:07 -0500 Subject: [PATCH 3/3] [GH-93] re-applying changes... --- helpdesk/management/commands/get_email.py | 113 +++++++++++----------- 1 file changed, 58 insertions(+), 55 deletions(-) diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index f9d69a09..d0e9691d 100644 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -251,61 +251,6 @@ def ticket_from_message(message, queue, quiet): t.status = Ticket.REOPENED_STATUS t.save() - context = safe_template_context(t) - - if new: - - if sender_email: - send_templated_mail( - 'newticket_submitter', - context, - recipients=sender_email, - sender=queue.from_address, - fail_silently=True, - ) - - if queue.new_ticket_cc: - send_templated_mail( - 'newticket_cc', - context, - recipients=queue.new_ticket_cc, - sender=queue.from_address, - fail_silently=True, - ) - - if queue.updated_ticket_cc and queue.updated_ticket_cc != queue.new_ticket_cc: - send_templated_mail( - 'newticket_cc', - context, - recipients=queue.updated_ticket_cc, - sender=queue.from_address, - fail_silently=True, - ) - - else: - if t.status == Ticket.REOPENED_STATUS: - update = _(' (Reopened)') - else: - update = _(' (Updated)') - - if t.assigned_to: - send_templated_mail( - 'updated_owner', - context, - recipients=t.assigned_to.email, - sender=queue.from_address, - fail_silently=True, - ) - - if queue.updated_ticket_cc: - send_templated_mail( - 'updated_cc', - context, - recipients=queue.updated_ticket_cc, - sender=queue.from_address, - fail_silently=True, - ) - f = FollowUp( ticket = t, title = _('E-Mail Received from %(sender_email)s' % {'sender_email': sender_email}), @@ -338,6 +283,64 @@ def ticket_from_message(message, queue, quiet): if not quiet: print " - %s" % filename + + context = safe_template_context(t) + + if new: + + if sender_email: + send_templated_mail( + 'newticket_submitter', + context, + recipients=sender_email, + sender=queue.from_address, + fail_silently=True, + ) + + if queue.new_ticket_cc: + send_templated_mail( + 'newticket_cc', + context, + recipients=queue.new_ticket_cc, + sender=queue.from_address, + fail_silently=True, + ) + + if queue.updated_ticket_cc and queue.updated_ticket_cc != queue.new_ticket_cc: + send_templated_mail( + 'newticket_cc', + context, + recipients=queue.updated_ticket_cc, + sender=queue.from_address, + fail_silently=True, + ) + + else: + context.update(comment=f.comment) + + if t.status == Ticket.REOPENED_STATUS: + update = _(' (Reopened)') + else: + update = _(' (Updated)') + + if t.assigned_to: + send_templated_mail( + 'updated_owner', + context, + recipients=t.assigned_to.email, + sender=queue.from_address, + fail_silently=True, + ) + + if queue.updated_ticket_cc: + send_templated_mail( + 'updated_cc', + context, + recipients=queue.updated_ticket_cc, + sender=queue.from_address, + fail_silently=True, + ) + return t