# -*- coding: utf-8 -*- import os import MySQLdb from MySQLdb.cursors import DictCursor from django.core.management.base import BaseCommand from django.conf import settings from exposition.models import Exposition from conference.management.commands.conf_old import filter_city, filter_country, get_periodic, get_logo, get_places from django.core.files import File from functions.translate import fill_with_signal from country.models import Country from city.models import City file_path = settings.MEDIA_ROOT + 'exposition/bad_expos.txt' import datetime from theme.models import Theme from conference.models import Conference ''' 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() conf_old = """ SELECT DISTINCT (products_to_categories.products_id), url as old_url FROM `products_to_categories` LEFT JOIN `products` ON products_to_categories.products_id=products.products_id LEFT JOIN `products_description` ON products_to_categories.products_id=products_description.products_id WHERE `products_status` =1 AND `conference` =0 """ find_themes = "SELECT categories_id FROM `products_to_categories` WHERE `products_id` =%d" cursor.execute(conf_old) conferences = cursor.fetchall() #for item in conferences: cursor.execute(find_themes%conferences[0]['products_id']) day = datetime.date.today() day = day.replace(month=1, day=1) for item in conferences: old_url = item['old_url'] if not old_url: continue try: expo = Exposition.objects.get(old_url=old_url) except: continue if expo.data_begin > day: continue cursor.execute(find_themes%item['products_id']) themes_id = [i['categories_id'] for i in cursor.fetchall()] theme_qs = Theme.objects.filter(id__in=themes_id) expo.theme.add(*theme_qs) print(expo) # if item['categories_id'] == 0: # continue # Theme.objects.get(id=item['categories_id']) #print(result) ''' from haystack.query import SearchQuerySet from django.db import IntegrityError from django.utils import translation 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() sql = """ SELECT products.products_id as id, products_date_added as created, products_last_modified as modified, discount, expohit, ufi, products_name as name, products_description as description, products_short_description as main_title, products_viewed as viewed, products_period as period, products_org as organiser,products_products as products, products_official as web_page, products_img1 as logo, products_startdate as data_begin, products_enddate as data_end, url as old_url, places_id FROM `products` LEFT JOIN `products_description` ON products.products_id=products_description.products_id WHERE `products_status` =1 AND `conference` =0 AND places_id >0 ORDER BY products.products_id DESC """ translation.activate('ru') expos = list(Exposition.objects.language().filter(old_url='')) find_expo = "SELECT products_name, url from products_description WHERE products_name = '%s'" for expo in expos: cursor.execute(find_expo%expo.name) result = cursor.fetchall() if result: expo.old_url = result[0]['url'] expo.save() print(expo) #cursor.execute(sql) #result = cursor.fetchall() #names = [item['name'] for item in result] #media = settings.MEDIA_ROOT.replace('media/', '') #counter = 0 #bad_cities = {} bad_expos = [] ''' for i, item in enumerate(result): qs = SearchQuerySet().models(Exposition).filter(name_ru=item['name']) if not item: continue if not qs.count()>0: continue expo =qs[0].object if not expo or expo.old_url: continue print(expo) expo.old_url = item['old_url'] try: expo.save() except IntegrityError: continue """ print('number: %d, errors: %d'%(i, len(bad_expos))) name = item['name'] if Exposition.objects.filter(translations__name=name).exists(): msg = u'%s|||%s|||%s'%(name, item['old_url'], 'already exist') bad_expos.append(msg) continue data_begin = item['data_begin'] data_end= item['data_end'] place_id = item['places_id'] # convert to country and city country, city = get_places(place_id) if not country or not city: msg = u'%s|||%s|||%s'%(name, item['old_url'], 'bad country or city') bad_expos.append(msg) continue old_url = item['old_url'] periodic = item['period'] periodic = get_periodic(periodic) web_page = item['web_page'] currency = 'USD' expohit = item['expohit'] ufi = item['ufi'] if ufi: ufi = 1 else: ufi = 0 created = item['created'] modified = item['modified'] data = {'name_ru': name, 'main_title_ru': item['main_title'], 'description_ru': item['description'], 'products_ru': item['products'], 'discount_description_ru': '', 'time_ru': '', 'price_day_ru':'', 'price_all_ru': '', 'price_day_bar_ru': '', 'price_all_bar_ru': '', 'stat_countries_ru': '', 'pre_condition_ru':'', 'stand_condition_ru': '', 'visit_note_ru': '', 'participation_note_ru': '', 'title_ru': '', 'descriptions_ru': '', 'keywords_ru': ''} exposition = Exposition(data_begin=data_begin, data_end=data_end, city=city, country=country, web_page=web_page, old_url=old_url, periodic=periodic, currency=currency, expohit=expohit, created=created, modified=modified, quality_label=ufi) try: fill_with_signal(Exposition, exposition, data) except Exception as e: msg = u'%s|||%s|||%s'%(name, item['old_url'], str(e)) bad_expos.append(msg) continue """ '''