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

# -*- 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)