From 4ef258394dbd79aebf63f3981700c6b305190bf5 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Tue, 15 Jul 2014 12:42:24 +0200 Subject: [PATCH] Add script to regularly update mail threads from the archives --- tools/commitfest/update_archive_threads.py | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 tools/commitfest/update_archive_threads.py diff --git a/tools/commitfest/update_archive_threads.py b/tools/commitfest/update_archive_threads.py new file mode 100755 index 0000000..a8d5876 --- /dev/null +++ b/tools/commitfest/update_archive_threads.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# +# Update all attached mail threads from the archives. +# +# XXX: at some point we probably need to limit this so we don't hit all of them, +# at least not all of them all the time... +# + +import os +import sys + +# Set up for accessing django +from django.core.management import setup_environ +sys.path.append(os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), '../../pgcommitfest')) +import settings +setup_environ(settings) + +from django.db import connection + +from commitfest.models import MailThread +from commitfest.ajax import _archivesAPI, parse_and_add_attachments + +if __name__ == "__main__": + for thread in MailThread.objects.filter(patches__commitfests__status__in=(1,2,3)).distinct(): + print "Attempt to update thread %s" % thread.messageid + r = sorted(_archivesAPI('/message-id.json/%s' % thread.messageid), key=lambda x: x['date']) + if thread.latestmsgid != r[-1]['msgid']: + # There is now a newer mail in the thread! + print "Thread %s updated" % thread.messageid + thread.latestmsgid = r[-1]['msgid'] + thread.latestmessage = r[-1]['date'] + thread.latestauthor = r[-1]['from'] + thread.latestsubject = r[-1]['subj'] + thread.save() + parse_and_add_attachments(r, thread) + # Potentially update the last mail date - if there wasn't already a mail on each patch + # from a *different* thread that had an earlier date. + for p in thread.patches.filter(lastmail__lt=thread.latestmessage): + p.lastmail = thread.latestmessage + p.save() + + connection.close() -- 2.39.5