From 81c5a915f210b70451c970d223430804d501ddc3 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Thu, 21 Aug 2008 17:08:23 +0800 Subject: Get parsemail scripts going A couple of fixes, plus required permissions in the grant-all script. Signed-off-by: Jeremy Kerr --- apps/patchwork/bin/parsemail-batch.sh | 10 ++++++---- apps/patchwork/bin/parsemail.py | 15 +++++++++++---- 2 files changed, 17 insertions(+), 8 deletions(-) mode change 100644 => 100755 apps/patchwork/bin/parsemail-batch.sh (limited to 'apps/patchwork') diff --git a/apps/patchwork/bin/parsemail-batch.sh b/apps/patchwork/bin/parsemail-batch.sh old mode 100644 new mode 100755 index dbf81cc..d786022 --- a/apps/patchwork/bin/parsemail-batch.sh +++ b/apps/patchwork/bin/parsemail-batch.sh @@ -21,7 +21,7 @@ PATCHWORK_BASE="/srv/patchwork" -if $# -ne 2 +if [ $# -ne 1 ] then echo "usage: $0 " >&2 exit 1 @@ -29,9 +29,11 @@ fi mail_dir="$1" -if ! -d "$mail_dir" +echo "dir: $mail_dir" + +if [ ! -d "$mail_dir" ] then - echo "$mail_dir should be a directory"?&2 + echo "$mail_dir should be a directory"? >&2 exit 1 fi @@ -41,7 +43,7 @@ do echo $line PYTHONPATH="$PATCHWORK_BASE/apps":"$PATCHWORK_BASE/lib/python" \ DJANGO_SETTINGS_MODULE=settings \ - "$PATCHWORK_BASE/apps/patchworkbin/parsemail.py" < + "$PATCHWORK_BASE/apps/patchwork/bin/parsemail.py" < \ "$mail_dir/$line" done diff --git a/apps/patchwork/bin/parsemail.py b/apps/patchwork/bin/parsemail.py index d41bd92..d0993ac 100755 --- a/apps/patchwork/bin/parsemail.py +++ b/apps/patchwork/bin/parsemail.py @@ -85,12 +85,15 @@ def find_author(mail): 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', '')) @@ -230,12 +233,15 @@ def main(args): 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 @@ -245,7 +251,8 @@ def main(args): print ex.message 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: -- cgit v1.2.3