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.
52 lines
1.7 KiB
52 lines
1.7 KiB
from django.core.management.base import BaseCommand
|
|
from theme.models import Tag, Theme
|
|
|
|
import MySQLdb
|
|
from MySQLdb.cursors import DictCursor
|
|
|
|
class Command(BaseCommand):
|
|
def handle(self, *args, **options):
|
|
db = MySQLdb.connect(host="localhost",
|
|
user="expomap",
|
|
passwd="7FbLtAGjse",
|
|
db="old_db",
|
|
charset='utf8',
|
|
cursorclass=DictCursor)
|
|
|
|
cursor = db.cursor()
|
|
# id 3732 duplicate tag with bad name(2 spaces)
|
|
sql_tag = "SELECT id, title, url FROM tags WHERE id != 3732"
|
|
|
|
sql_theme = "SELECT categories_id as id, url FROM categories_description;"
|
|
|
|
cursor.execute(sql_theme)
|
|
res = cursor.fetchall()
|
|
"""
|
|
# themes
|
|
for item in res:
|
|
id = item['id']
|
|
old_url = item['url']
|
|
theme = Theme.objects.get(id=id)
|
|
theme.old_url = old_url
|
|
theme.save()
|
|
print(theme)
|
|
"""
|
|
|
|
# tags
|
|
cursor.execute(sql_tag)
|
|
res = cursor.fetchall()
|
|
updated_tags = []
|
|
for item in res:
|
|
id = item['id']
|
|
old_url = item['url']
|
|
title = item['title']
|
|
#print(id)
|
|
print(title.encode('utf8'))
|
|
try:
|
|
tag = Tag.objects.get(id=id, translations__name=title, translations__language_code='ru')
|
|
tag.old_url = old_url
|
|
updated_tags.append(id)
|
|
tag.save()
|
|
except Tag.DoesNotExist:
|
|
Tag.objects.exclude(id__in=updated_tags).filter(translations__name=title).update(old_url=old_url)
|
|
print(len(updated_tags))
|
|
|