diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2008-08-21 17:08:23 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2008-08-21 17:08:23 +0800 |
commit | 81c5a915f210b70451c970d223430804d501ddc3 (patch) | |
tree | dc9475e078870fbb13c089783734b9e3382b7db2 | |
parent | f946fa4b7c910b3b556518433597dd54a5ef7adb (diff) | |
download | patchwork-81c5a915f210b70451c970d223430804d501ddc3.tar.bz2 patchwork-81c5a915f210b70451c970d223430804d501ddc3.tar.xz |
Get parsemail scripts going
A couple of fixes, plus required permissions in the grant-all script.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rwxr-xr-x[-rw-r--r--] | apps/patchwork/bin/parsemail-batch.sh | 10 | ||||
-rwxr-xr-x | apps/patchwork/bin/parsemail.py | 15 | ||||
-rw-r--r-- | lib/sql/grant-all.sql | 3 |
3 files changed, 19 insertions, 9 deletions
diff --git a/apps/patchwork/bin/parsemail-batch.sh b/apps/patchwork/bin/parsemail-batch.sh index dbf81cc..d786022 100644..100755 --- 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 <dir>" >&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: diff --git a/lib/sql/grant-all.sql b/lib/sql/grant-all.sql index 4b8a43b..d0dd45f 100644 --- a/lib/sql/grant-all.sql +++ b/lib/sql/grant-all.sql @@ -56,7 +56,8 @@ GRANT INSERT, SELECT ON patchwork_person TO "nobody"; GRANT SELECT ON - patchwork_project + patchwork_project, + patchwork_state TO "nobody"; GRANT UPDATE, SELECT ON patchwork_patch_id_seq, |