From patchwork Wed Mar 16 22:53:45 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guilherme Salgado X-Patchwork-Id: 87325 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id ABF1FB70D9 for ; Thu, 17 Mar 2011 11:22:13 +1100 (EST) Received: from adelie.canonical.com (adelie.canonical.com [91.189.90.139]) by ozlabs.org (Postfix) with ESMTP id 05B70B6FFD for ; Thu, 17 Mar 2011 09:53:49 +1100 (EST) Received: from youngberry.canonical.com ([91.189.89.112]) by adelie.canonical.com with esmtp (Exim 4.71 #1 (Debian)) id 1Pzzb9-0005EL-0c; Wed, 16 Mar 2011 22:53:47 +0000 Received: from m342336d0.tmodns.net ([208.54.35.52] helo=feioso) by youngberry.canonical.com with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1Pzzb8-0003FP-Oo; Wed, 16 Mar 2011 22:53:46 +0000 Received: by feioso (Postfix, from userid 1001) id 7941842A83; Wed, 16 Mar 2011 18:53:45 -0400 (EDT) Subject: Re: Guessing project based on email address From: Guilherme Salgado To: Jeremy Kerr In-Reply-To: <1299669114.9049.21.camel@feioso> References: <1297719787.10411.46.camel@feioso> <201102150842.56678.jk@ozlabs.org> <1297768217.10411.76.camel@feioso> <201103081358.58693.jk@ozlabs.org> <1299669114.9049.21.camel@feioso> Date: Wed, 16 Mar 2011 18:53:45 -0400 Message-ID: <1300316025.2866.89.camel@feioso> Mime-Version: 1.0 X-Mailer: Evolution 2.30.3 X-Mailman-Approved-At: Thu, 17 Mar 2011 11:22:11 +1100 Cc: patchwork@lists.ozlabs.org X-BeenThere: patchwork@lists.ozlabs.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Patchwork development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org 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. 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='1@example.com') self.project.save() @@ -320,18 +324,27 @@ class EmailProjectGuessing(unittest.TestCase): 'bar-foo@bar.foo.example.com'], emails) + def testDoNotFallbackToEmailAddressWhenNotConfiguredTo(self): + self.assertFalse(settings.PATCHWORK_FALLBACK_TO_LISTEMAIL) + email = MIMEText('') + email['To'] = '"First dev list" <1@example.com>' + 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" <1@example.com>' project = find_project(email) self.assertEquals(self.project, project) def testNoListIdWithListEmailAsCC(self): + settings.PATCHWORK_FALLBACK_TO_LISTEMAIL = True email = MIMEText('') email['CC'] = ('"First maintainer , ' '"First dev list" <1@example.com>') @@ -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 ' +# 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