summaryrefslogtreecommitdiff
path: root/find_dups.py
diff options
context:
space:
mode:
authormartin.von.loewis <devnull@localhost>2008-05-12 07:02:55 +0000
committermartin.von.loewis <devnull@localhost>2008-05-12 07:02:55 +0000
commit1ba3f501209a30df198573906cd943b5d7240d47 (patch)
tree412dec856d78c619bc7e5664b073095fa130373b /find_dups.py
parent5fd7ccdd700031d40a487ed260198f3f6d9be814 (diff)
downloaddecorator-1ba3f501209a30df198573906cd943b5d7240d47.tar.gz
Add code to delete unused users.
Diffstat (limited to 'find_dups.py')
-rw-r--r--find_dups.py66
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()