You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1007 B
29 lines
1007 B
# -*- 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)
|
|
|