* Add smart e-mail parsing - if subject contains a ticket ID, the new e-mail

is added as a followup to that ticket.
* Add basic code to support Google Charts in a future revision
* Improved use of Queue "Update" CC.
This commit is contained in:
Ross Poulton 2008-02-05 23:35:40 +00:00
parent 224ad8722f
commit 4a082e0bfb
4 changed files with 47 additions and 8 deletions

3
README
View File

@ -52,6 +52,9 @@ LICENSE.JQUERY and LICENSE.NICEDIT for their respective license terms.
3. An existing WORKING Django project with database etc. If you
cannot log into the Admin, you won't get this product working.
4. pygooglechart (needs minor mods to @staticmethod calls for python 2.3)
http://pygooglechart.slowchop.com/
#########################
3. Installation

View File

@ -102,12 +102,13 @@ class TicketForm(forms.Form):
if t.submitter_email:
send_multipart_mail('helpdesk/emails/submitter_newticket', context, '%s %s' % (t.ticket, t.title), t.submitter_email, q.from_address)
if t.assigned_to != user:
if t.assigned_to and t.assigned_to != user:
send_multipart_mail('helpdesk/emails/owner_assigned', context, '%s %s (Opened)' % (t.ticket, t.title), t.assigned_to.email, q.from_address)
if q.new_ticket_cc:
send_multipart_mail('helpdesk/emails/cc_newticket', context, '%s %s (Opened)' % (t.ticket, t.title), q.updated_ticket_cc, q.from_address)
elif q.updated_ticket_cc and q.updated_ticket_cc != q.new_ticket_cc:
if q.updated_ticket_cc and q.updated_ticket_cc != q.new_ticket_cc:
send_multipart_mail('helpdesk/emails/cc_newticket', context, '%s %s (Opened)' % (t.ticket, t.title), q.updated_ticket_cc, q.from_address)
return t
@ -170,7 +171,8 @@ class PublicTicketForm(forms.Form):
if q.new_ticket_cc:
send_multipart_mail('helpdesk/emails/cc_newticket', context, '%s %s (Opened)' % (t.ticket, t.title), q.updated_ticket_cc, q.from_address)
elif q.updated_ticket_cc and q.updated_ticket_cc != q.new_ticket_cc:
if q.updated_ticket_cc and q.updated_ticket_cc != q.new_ticket_cc:
send_multipart_mail('helpdesk/emails/cc_newticket', context, '%s %s (Opened)' % (t.ticket, t.title), q.updated_ticket_cc, q.from_address)
return t

8
lib.py
View File

@ -76,3 +76,11 @@ def send_multipart_mail(template_name, email_context, subject, recipients, sende
return msg.send(fail_silently)
def normalise_to_100(data):
max_value = max(data)
if max_value > 100:
new_data = []
for d in data:
new_data.append(int(d/float(max_value)*100))
data = new_data
return data

View File

@ -31,7 +31,7 @@ import imaplib
from datetime import datetime, timedelta
import email, mimetypes, re
from email.Utils import parseaddr
from helpdesk.models import Queue,Ticket
from helpdesk.models import Queue,Ticket, FollowUp
from helpdesk.lib import send_multipart_mail
def process_email():
@ -89,10 +89,10 @@ def ticket_from_message(message, queue):
sender_email = parseaddr(message.get('from', 'Unknown Sender'))[1]
regex = re.compile("^\[\d+\]")
regex = re.compile("^\[[A-Za-z0-9]+-\d+\]")
if regex.match(subject):
# This is a reply or forward.
ticket = re.match(r"^\[(?P<id>\d+)\]", subject).group('id')
ticket = re.match(r"^\[(?P<queue>[A-Za-z0-9]+)-(?P<id>\d+)\]", subject).group('id')
else:
ticket = None
counter = 0
@ -147,10 +147,36 @@ def ticket_from_message(message, queue):
'queue': queue,
}
update = ""
if sender_email:
send_multipart_mail('helpdesk/emails/submitter_newticket', context, '%s %s' % (t.ticket, t.title), sender_email, queue.from_address)
print " [%s-%s] %s" % (t.queue.slug, t.id, t.title)
if queue.new_ticket_cc:
send_multipart_mail('helpdesk/emails/cc_newticket', context, '%s %s (Opened)' % (t.ticket, t.title), queue.updated_ticket_cc, queue.from_address)
if queue.updated_ticket_cc and queue.updated_ticket_cc != queue.new_ticket_cc:
send_multipart_mail('helpdesk/emails/cc_newticket', context, '%s %s (Opened)' % (t.ticket, t.title), queue.updated_ticket_cc, queue.from_address)
else:
f = FollowUp(
ticket = t,
title = 'E-Mail Received from %s' % sender_email,
date = datetime.now(),
public = True,
comment = body,
)
f.save()
update = " (Updated)"
if t.assigned_to:
send_multipart_mail('helpdesk/emails/owner_updated', context, '%s %s (Updated)' % (t.ticket, t.title), t.assigned_to.email, queue.from_address)
if queue.updated_ticket_cc:
send_multipart_mail('helpdesk/emails/cc_updatedt', context, '%s %s (Updated)' % (t.ticket, t.title), queue.updated_ticket_cc, queue.from_address)
print " [%s-%s] %s%s" % (t.queue.slug, t.id, t.title, update)
#for file in files:
#data = file['content']