diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-08-01 12:20:57 +0000 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-08-01 13:36:17 +0000 |
commit | a373e9e6f8b26e700257de062f04f13ddfb96a5f (patch) | |
tree | 015ed78e543dc7f4adaffb4433a38fd58728176f /kittystore/scripts.py | |
parent | 070871070e62fce367c55ec52579f4680b3d3980 (diff) | |
download | kittystore-master.tar.gz kittystore-master.tar.xz kittystore-master.zip |
Diffstat (limited to 'kittystore/scripts.py')
-rw-r--r-- | kittystore/scripts.py | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/kittystore/scripts.py b/kittystore/scripts.py index 4ae2690..3930330 100644 --- a/kittystore/scripts.py +++ b/kittystore/scripts.py @@ -85,12 +85,24 @@ def updatedb(): ## More complex post-update actions: # Fill in the user_id from Mailman - from kittystore.storm.model import UserAddress, Email - if store.db.find(UserAddress).count() == 0: - for address in store.db.find(Email.sender_email - ).config(distinct=True): - store._store_mailman_user(address) + from kittystore.storm.model import Email + user_ids = store.db.find(Email.user_id).config(distinct=True) + if user_ids.count() <= 1 and user_ids.one() is None: + print "Updating user_id fields from Mailman, this can take some time..." + emails = store.db.find(Email) + emails_total = emails.count() + user_id_cache = {} # speed up the lookup process + for num, email in enumerate(emails): + if email.sender_email in user_id_cache: + email.user_id = user_id_cache[email.sender_email] + else: + email.user_id = store._store_mailman_user(email.sender_email) + user_id_cache[email.sender_email] = email.user_id + if (num+1) % 10 == 0: + sys.stdout.write("\r%s/%s" % (num+1, emails_total)) + sys.stdout.flush() store.commit() + print " ...done!" |