On Wed, 2011-03-09 at 08:11 -0300, Guilherme Salgado wrote:
[...]
> > 
> > Also, if this was configurable (PATCHWORK_FALLBACK_TO_LISTEMAIL perhaps?), 
> > I'd 
> > be much happier :)

I've just changed it to only fallback to list email when the setting
above is True (the default value is False).  The patch for that is
attached.

-- 
Guilherme Salgado <https://launchpad.net/~salgado>
diff --git a/apps/patchwork/bin/parsemail.py b/apps/patchwork/bin/parsemail.py
index a29c32f..10b7e9f 100755
--- a/apps/patchwork/bin/parsemail.py
+++ b/apps/patchwork/bin/parsemail.py
@@ -24,6 +24,7 @@ import re
 import datetime
 import time
 import operator
+import settings
 from email import message_from_file
 try:
     from email.header import Header, decode_header
@@ -105,7 +106,7 @@ def find_project_by_list_address(mail):
 
 def find_project(mail):
     project = find_project_by_listid(mail)
-    if project is None:
+    if project is None and settings.PATCHWORK_FALLBACK_TO_LISTEMAIL:
         project = find_project_by_list_address(mail)
     return project
 
diff --git a/apps/patchwork/tests/patchparser.py b/apps/patchwork/tests/patchparser.py
index d2eabb9..d141412 100644
--- a/apps/patchwork/tests/patchparser.py
+++ b/apps/patchwork/tests/patchparser.py
@@ -20,6 +20,7 @@
 import unittest
 import os
 from email import message_from_string
+import settings
 from patchwork.models import Project, Person, Patch, Comment
 from patchwork.tests.utils import read_patch, read_mail, create_email, defaults
 
@@ -303,6 +304,9 @@ class MultipleProjectPatchCommentTest(MultipleProjectPatchTest):
 class EmailProjectGuessing(unittest.TestCase):
     """Projects are guessed based on List-Id headers or recipient addresses"""
     def setUp(self):
+        self.orig_fallback_to_listemail = \
+            settings.PATCHWORK_FALLBACK_TO_LISTEMAIL
+        settings.PATCHWORK_FALLBACK_TO_LISTEMAIL = False
         self.project = Project(linkname = 'test-project-1', name = 'Project 1',
                 listid = '1.example.com', listemail='[email protected]')
         self.project.save()
@@ -320,18 +324,27 @@ class EmailProjectGuessing(unittest.TestCase):
              '[email protected]'],
             emails)
 
+    def testDoNotFallbackToEmailAddressWhenNotConfiguredTo(self):
+        self.assertFalse(settings.PATCHWORK_FALLBACK_TO_LISTEMAIL)
+        email = MIMEText('')
+        email['To'] = '"First dev list" <[email protected]>'
+        project = find_project(email)
+        self.assertEquals(None, project)
+
     def testNoListId(self):
         email = MIMEText('')
         project = find_project(email)
         self.assertEquals(project, None)
 
     def testNoListIdWithListEmailAsRecipient(self):
+        settings.PATCHWORK_FALLBACK_TO_LISTEMAIL = True
         email = MIMEText('')
         email['To'] = '"First dev list" <[email protected]>'
         project = find_project(email)
         self.assertEquals(self.project, project)
 
     def testNoListIdWithListEmailAsCC(self):
+        settings.PATCHWORK_FALLBACK_TO_LISTEMAIL = True
         email = MIMEText('')
         email['CC'] = ('"First maintainer <[email protected]>, '
                        '"First dev list" <[email protected]>')
@@ -371,6 +384,8 @@ class EmailProjectGuessing(unittest.TestCase):
         self.assertEquals(project, self.project)
 
     def tearDown(self):
+        settings.PATCHWORK_FALLBACK_TO_LISTEMAIL = \
+            self.orig_fallback_to_listemail
         self.project.delete()
 
 
diff --git a/apps/settings.py b/apps/settings.py
index 84a262c..29e3351 100644
--- a/apps/settings.py
+++ b/apps/settings.py
@@ -101,6 +101,9 @@ INSTALLED_APPS = (
 
 DEFAULT_PATCHES_PER_PAGE = 100
 DEFAULT_FROM_EMAIL = 'Patchwork <[email protected]>'
+# If set to True, this will cause the parsemail script to lookup projects
+# by email address when one cannot be found by list ID.
+PATCHWORK_FALLBACK_TO_LISTEMAIL = False
 
 ACCOUNT_ACTIVATION_DAYS = 7
 

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
Patchwork mailing list
[email protected]
https://lists.ozlabs.org/listinfo/patchwork

Reply via email to