[PATCH v2 07/11] parsemail: Use consistent 'find_' format

Stephen Finucane stephen.finucane at intel.com
Sat Apr 2 01:57:43 AEDT 2016


Most of the functions in the parsemail file work by taking a Mail
object, extracting the data they require, and formatting this data to
the expected format. This is not applied across the board, however.
Fix this oversight.

Signed-off-by: Stephen Finucane <stephen.finucane at intel.com>
---
 patchwork/bin/parsemail.py | 35 +++++++++++++++++++----------------
 1 file changed, 19 insertions(+), 16 deletions(-)

diff --git a/patchwork/bin/parsemail.py b/patchwork/bin/parsemail.py
index de9778f..3e2b9e8 100755
--- a/patchwork/bin/parsemail.py
+++ b/patchwork/bin/parsemail.py
@@ -160,14 +160,14 @@ def find_author(mail):
     return (person, new_person)
 
 
-def mail_date(mail):
+def find_date(mail):
     t = parsedate_tz(mail.get('Date', ''))
     if not t:
         return datetime.datetime.utcnow()
     return datetime.datetime.utcfromtimestamp(mktime_tz(t))
 
 
-def mail_headers(mail):
+def find_headers(mail):
     return reduce(operator.__concat__,
                   ['%s: %s\n' % (k, Header(v, header_name=k,
                                            continuation_ws='\t').encode())
@@ -185,7 +185,7 @@ def find_pull_request(content):
     return None
 
 
-def build_references_list(mail):
+def find_references(mail):
     """Construct a list of possible reply message ids."""
     refs = []
 
@@ -372,8 +372,9 @@ def clean_content(content):
     return content.strip()
 
 
-def get_state(state_name):
+def find_state(mail):
     """Return the state with the given name or the default."""
+    state_name = mail.get('X-Patchwork-State', '').strip()
     if state_name:
         try:
             return State.objects.get(name__iexact=state_name)
@@ -408,8 +409,9 @@ def auto_delegate(project, filenames):
     return patch_delegate
 
 
-def get_delegate(delegate_email):
+def find_delegate(mail):
     """Return the delegate with the given email or None."""
+    delegate_email = mail.get('X-Patchwork-Delegate', '').strip()
     if delegate_email:
         try:
             return User.objects.get(email__iexact=delegate_email)
@@ -452,11 +454,6 @@ def parse_mail(mail, list_id=None):
         LOGGER.error('Failed to find a project for email')
         return
 
-    msgid = mail.get('Message-Id').strip()
-    author, save_required = find_author(mail)
-    name, _ = clean_subject(mail.get('Subject'), [project.linkname])
-    refs = build_references_list(mail)
-
     # parse content
 
     diff, message = find_content(project, mail)
@@ -464,6 +461,12 @@ def parse_mail(mail, list_id=None):
     if not (diff or message):
         return  # nothing to work with
 
+    msgid = mail.get('Message-Id').strip()
+    author, save_required = find_author(mail)
+    name, _ = clean_subject(mail.get('Subject'), [project.linkname])
+    refs = find_references(mail)
+    date = find_date(mail)
+    headers = find_headers(mail)
     pull_url = find_pull_request(message)
 
     # build objects
@@ -473,7 +476,7 @@ def parse_mail(mail, list_id=None):
         if save_required:
             author.save()
 
-        delegate = get_delegate(mail.get('X-Patchwork-Delegate', '').strip())
+        delegate = find_delegate(mail)
         if not delegate and diff:
             filenames = patch_get_filenames(diff)
             delegate = auto_delegate(project, filenames)
@@ -482,14 +485,14 @@ def parse_mail(mail, list_id=None):
             msgid=msgid,
             project=project,
             name=name,
-            date=mail_date(mail),
-            headers=mail_headers(mail),
+            date=date,
+            headers=headers,
             submitter=author,
             content=message,
             diff=diff,
             pull_url=pull_url,
             delegate=delegate,
-            state=get_state(mail.get('X-Patchwork-State', '').strip()))
+            state=find_state(mail))
         patch.save()
         LOGGER.debug('Patch saved')
 
@@ -509,8 +512,8 @@ def parse_mail(mail, list_id=None):
     comment = Comment(
         submission=patch,
         msgid=msgid,
-        date=mail_date(mail),
-        headers=mail_headers(mail),
+        date=date,
+        headers=headers,
         submitter=author,
         content=message)
     comment.save()
-- 
2.0.0



More information about the Patchwork mailing list