diff options
author | martin.von.loewis <devnull@localhost> | 2008-05-12 07:02:55 +0000 |
---|---|---|
committer | martin.von.loewis <devnull@localhost> | 2008-05-12 07:02:55 +0000 |
commit | 1ba3f501209a30df198573906cd943b5d7240d47 (patch) | |
tree | 412dec856d78c619bc7e5664b073095fa130373b /find_dups.py | |
parent | 5fd7ccdd700031d40a487ed260198f3f6d9be814 (diff) | |
download | decorator-1ba3f501209a30df198573906cd943b5d7240d47.tar.gz |
Add code to delete unused users.
Diffstat (limited to 'find_dups.py')
-rw-r--r-- | find_dups.py | 66 |
1 files changed, 54 insertions, 12 deletions
diff --git a/find_dups.py b/find_dups.py index 4fc4d1d..223eb6e 100644 --- a/find_dups.py +++ b/find_dups.py @@ -32,15 +32,57 @@ def mail_dup(email, package1, package2): f.write("Kind regards,\nMartin v. Loewis\n") f.close() -lower = {} -for name,version in store.get_packages(): - lname = name.lower() - if lname in lower: - owner1 = owner_email(name) - owner2 = owner_email(lower[lname]) - owners = owner1.intersection(owner2) - if owners: - mail_dup(owners.pop(),name,lower[lname]) - else: - print "Distinct dup", name, lower[lname], owner1, owner2 - lower[lname] = name +def dup_packages(): + lower = {} + for name,version in store.get_packages(): + lname = name.lower() + if lname in lower: + owner1 = owner_email(name) + owner2 = owner_email(lower[lname]) + owners = owner1.intersection(owner2) + if owners: + mail_dup(owners.pop(),name,lower[lname]) + else: + print "Distinct dup", name, lower[lname], owner1, owner2 + lower[lname] = name + +def mail_unused_user(email, all, unused): + for user in unused: + if all-unused: + newuser = (all-unused).pop() + print "UPDATE journals SET submitted_by='%s' WHERE submitted_by='%s';" % (newuser,user) + print "DELETE FROM rego_otk WHERE name='%s';" % user + print "DELETE FROM users WHERE name='%s';" % user + email = "martin@v.loewis.de" + f = os.popen("/usr/lib/sendmail "+email, "w") + f.write("To: %s\n" % email) + f.write("From: martin@v.loewis.de\n") + f.write("Subject: Unused PyPI account deleted\n\n") + f.write("Dear PyPI user,\n") + f.write("You have currently registered the following user names,\n") + f.write("all for the email account %s: \n\n%s\n" % (email, ' '.join(all))) + f.write("As this kind of setup has been causing problems,\n") + f.write("we have deleted the following accounts which are not currently\n") + f.write("owner or maintainer of any package:\n\n%s\n\n" % ' '.join(unused)) + f.write("If you need assistance, please let me know.\n\n") + f.write("Kind regards,\nMartin v. Loewis\n") + f.close() + +def dup_users(): + by_email = {} + for user in store.get_users(): + email = user['email'] + by_email[email] = by_email.get(email, []) + [user['name']] + print "BEGIN;" + for email, users in by_email.items(): + if len(users) == 1: continue + users = set(users) + unused = set() + for user in users: + if not store.user_packages(user): + unused.add(user) + if len(users-unused)<=1: + mail_unused_user(email, users, unused) + print "COMMIT;" + +dup_users() |