Pull in changes from bclermont to fix content-type handling on queues when processing incoming e-mail. Closes GH-70.

This commit is contained in:
Ross Poulton 2011-11-05 00:56:53 +00:00
parent d44fba380d
commit 2aaaf57504

View File

@ -54,13 +54,7 @@ def send_templated_mail(template_name, email_context, recipients, sender=None, b
import os import os
context = Context(email_context) context = Context(email_context)
locale = 'en'; locale = context['queue'].get('locale', 'en')
if hasattr(context['queue'], 'locale'):
locale = getattr(context['queue'], 'locale', '')
else:
locale = context['queue'].get('locale', 'en')
if not locale:
locale = 'en'
t = None t = None
try: try:
@ -85,15 +79,15 @@ def send_templated_mail(template_name, email_context, recipients, sender=None, b
email_html_base_file = os.path.join('helpdesk', locale, 'email_html_base.html') email_html_base_file = os.path.join('helpdesk', locale, 'email_html_base.html')
''' keep new lines in html emails ''' ''' keep new lines in html emails '''
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
if context.has_key('comment'): if context.has_key('comment'):
html_txt = context['comment'] html_txt = context['comment']
html_txt = html_txt.replace('\r\n', '<br>') html_txt = html_txt.replace('\r\n', '<br>')
context['comment'] = mark_safe(html_txt) context['comment'] = mark_safe(html_txt)
html_part = loader.get_template_from_string( html_part = loader.get_template_from_string(
"{%% extends '%s' %%}{%% block title %%}%s{%% endblock %%}{%% block content %%}%s{%% endblock %%}" % (email_html_base_file, t.heading, t.html) "{%% extends '%s' %%}{%% block title %%}%s{%% endblock %%}{%% block content %%}%s{%% endblock %%}" % (email_html_base_file, t.heading, t.html)
).render(context) ).render(context)
@ -150,13 +144,13 @@ def apply_query(queryset, params):
""" """
Apply a dict-based set of filters & paramaters to a queryset. Apply a dict-based set of filters & paramaters to a queryset.
queryset is a Django queryset, eg MyModel.objects.all() or queryset is a Django queryset, eg MyModel.objects.all() or
MyModel.objects.filter(user=request.user) MyModel.objects.filter(user=request.user)
params is a dictionary that contains the following: params is a dictionary that contains the following:
filtering: A dict of Django ORM filters, eg: filtering: A dict of Django ORM filters, eg:
{'user__id__in': [1, 3, 103], 'title__contains': 'foo'} {'user__id__in': [1, 3, 103], 'title__contains': 'foo'}
other_filter: Another filter of some type, most likely a other_filter: Another filter of some type, most likely a
set of Q() objects. set of Q() objects.
sorting: The name of the column to sort by sorting: The name of the column to sort by
""" """
@ -180,7 +174,7 @@ def safe_template_context(ticket):
""" """
Return a dictionary that can be used as a template context to render Return a dictionary that can be used as a template context to render
comments and other details with ticket or queue paramaters. Note that comments and other details with ticket or queue paramaters. Note that
we don't just provide the Ticket & Queue objects to the template as we don't just provide the Ticket & Queue objects to the template as
they could reveal confidential information. Just imagine these two options: they could reveal confidential information. Just imagine these two options:
* {{ ticket.queue.email_box_password }} * {{ ticket.queue.email_box_password }}
* {{ ticket.assigned_to.password }} * {{ ticket.assigned_to.password }}
@ -204,7 +198,7 @@ def safe_template_context(ticket):
else: else:
context['queue'][field] = attr context['queue'][field] = attr
for field in ( 'title', 'created', 'modified', 'submitter_email', for field in ( 'title', 'created', 'modified', 'submitter_email',
'status', 'get_status_display', 'on_hold', 'description', 'status', 'get_status_display', 'on_hold', 'description',
'resolution', 'priority', 'get_priority_display', 'resolution', 'priority', 'get_priority_display',
'last_escalation', 'ticket', 'ticket_for_url', 'last_escalation', 'ticket', 'ticket_for_url',
@ -225,7 +219,7 @@ def safe_template_context(ticket):
def text_is_spam(text, request): def text_is_spam(text, request):
# Based on a blog post by 'sciyoshi': # Based on a blog post by 'sciyoshi':
# http://sciyoshi.com/blog/2008/aug/27/using-akismet-djangos-new-comments-framework/ # http://sciyoshi.com/blog/2008/aug/27/using-akismet-djangos-new-comments-framework/
# This will return 'True' is the given text is deemed to be spam, or # This will return 'True' is the given text is deemed to be spam, or
# False if it is not spam. If it cannot be checked for some reason, we # False if it is not spam. If it cannot be checked for some reason, we
# assume it isn't spam. # assume it isn't spam.
from django.contrib.sites.models import Site from django.contrib.sites.models import Site