# -*- coding: utf-8 -*- import MySQLdb import os.path from MySQLdb.cursors import DictCursor from django.utils.translation import activate from django.core.management.base import BaseCommand from django.conf import settings from exposition.models import Exposition from theme.models import Theme class Command(BaseCommand): def handle(self, *args, **options): #expos = Exposition.objects.filter(theme__isnull=True, old_url__isnull=False) db = MySQLdb.connect(host="localhost", user="expomap", passwd="7FbLtAGjse", db="old_db", charset='utf8', cursorclass=DictCursor) cursor = db.cursor() activate('ru') expos = Exposition.enable.upcoming().filter(logo='') #expo = Exposition.objects.get(old_url='mir-detstva-i-shkoly-2015') #handle_expo(expo, cursor) for expo in expos: handle_expo(expo, cursor) ''' find_old_id = """ SELECT products.products_id from products LEFT JOIN `products_description` ON products.products_id=products_description.products_id WHERE url='%s' """ find_themes = "SELECT categories_id FROM `products_to_categories` WHERE `products_id` =%d" ''' """ for expo in expos: cursor.execute(find_old_id%expo.old_url) old_ids = [item['products_id'] for item in cursor.fetchall()] print expo.old_url for id in old_ids: cursor.execute(find_themes%id) themes_ids = [item['categories_id'] for item in cursor.fetchall()] print themes_ids #if not themes_ids: # continue theme_qs = Theme.objects.filter(id__in=themes_ids) #expo.theme.add(*theme_qs) break print('----------------------') """ def handle_expo(expo, cursor): if expo.logo: return find_old = """ SELECT products.products_id, url, products_img1 as logo from products LEFT JOIN `products_description` ON products.products_id=products_description.products_id WHERE url='%s' """ cursor.execute(find_old%expo.old_url) result = cursor.fetchall() if not result: return logo = result[0]['logo'] if logo: logo = logo.replace('..', '') print(logo) print(os.path.isfile(settings.MEDIA_ROOT[:-1]+logo)) if (os.path.isfile(settings.MEDIA_ROOT[:-1]+logo)): expo.logo = logo expo.save()