diff --git a/accounts/management/__init__.py b/accounts/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/accounts/management/commands/__init__.py b/accounts/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/accounts/management/commands/accounts_check_url.py b/accounts/management/commands/accounts_check_url.py new file mode 100644 index 00000000..352a6b06 --- /dev/null +++ b/accounts/management/commands/accounts_check_url.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- + +from django.core.management.base import BaseCommand +from accounts.models import User + + +class Command(BaseCommand): + def handle(self, *args, **options): + users = User.objects.all().values_list('pk', 'url').order_by('-date_joined') + self.url_to_pk_dict = dict([(user[1], user[0]) for user in users]) + self.new_urls = {} + for pk, url in users: + self.url_check(pk, url) + + def url_check(self, pk, url, new_url=None): + if not url: + return + + if self.url_to_pk_dict.get((new_url or url), pk) != pk: + new_url = (new_url or url) + 'u' + if self.new_urls.get(new_url, pk) != pk: + new_url = new_url + 'u' + self.url_check(pk, url, new_url) + elif new_url is not None: + self.new_urls[new_url] = pk + user = User.objects.get(pk=pk) + user.url = new_url + user.save() + print(url, self.url_to_pk_dict.get(url), pk, new_url)