import time
import operator
from email import message_from_file
-from email.header import Header
-from email.utils import parsedate_tz, mktime_tz
-
-from patchparser import parse_patch
+try:
+ from email.header import Header
+ from email.utils import parsedate_tz, mktime_tz
+except ImportError:
+ # Python 2.4 compatibility
+ from email.Header import Header
+ from email.Utils import parsedate_tz, mktime_tz
+
+from patchwork.parser import parse_patch
from patchwork.models import Patch, Project, Person, Comment
list_id_headers = ['List-ID', 'X-Mailing-List']
if name is not None:
name = name.strip()
+ new_person = False
+
try:
person = Person.objects.get(email = email)
except Person.DoesNotExist:
person = Person(name = name, email = email)
+ new_person = True
- return person
+ return (person, new_person)
def mail_date(mail):
t = parsedate_tz(mail.get('Date', ''))
if commentbuf:
if patch:
- cpatch = patch
- else:
+ cpatch = patch
+ else:
cpatch = find_patch_for_comment(mail)
if not cpatch:
return (None, None)
msgid = mail.get('Message-Id').strip()
- author = find_author(mail)
+ (author, save_required) = find_author(mail)
(patch, comment) = find_content(project, mail)
if patch:
- author.save()
+ # we delay the saving until we know we have a patch.
+ if save_required:
+ author.save()
+ save_required = False
patch.submitter = author
patch.msgid = msgid
patch.project = project
try:
patch.save()
except Exception, ex:
- print ex.message
+ print str(ex)
if comment:
- author.save()
+ if save_required:
+ author.save()
# looks like the original constructor for Comment takes the pk
# when the Comment is created. reset it here.
if patch:
try:
comment.save()
except Exception, ex:
- print ex.message
+ print str(ex)
return 0