# -*- coding: utf-8 -*- import xlrd from django.core.management.base import BaseCommand from django.conf import settings from functions.form_check import translit_with_separator from exposition.models import Exposition from organiser.models import Organiser CHINA_FILE = settings.MEDIA_ROOT+'/import/expo_china_ru.xlsx' GERMANY_FILE = settings.MEDIA_ROOT+'/import/expo_germany_ru.xlsx' # 391 row not imported(same url) ITALY_FILE = settings.MEDIA_ROOT+'/import/expo_italy_ru.xlsx' # moscow 3 exps F = settings.MEDIA_ROOT+'/import/exp.xlsx' LA_FILE = settings.MEDIA_ROOT+'/import/expo_la.xlsx' NA_EU_ASIA_FILE = settings.MEDIA_ROOT+'/import/expo_na_eu_ sa.xls' NA_EU_ASIA_FILE2 = settings.MEDIA_ROOT+'/import/expo_na_eu_ sa_part2.xls' RUSSIA_FILE = settings.MEDIA_ROOT+'/import/expo_russia.xls' class Command(BaseCommand): def handle(self, *args, **options): f = open(RUSSIA_FILE, 'r') book = xlrd.open_workbook(file_contents=f.read()) sheet = book.sheet_by_index(0) row_list = [sheet.row_values(row_number) for row_number in range(sheet.nrows)] labels = [label for label in row_list[0]] for row_number, row in enumerate(row_list[1:]): exp_url = translit_with_separator(row[2]) try: exp = Exposition.objects.get(url=exp_url) except Exposition.DoesNotExist: continue cell1 = row[11].split(';') cell2 = row[12].split(';') orgs = [item.strip() for item in cell1+cell2 if item] exp.organiser.clear() for org in orgs: url = translit_with_separator(org) try: organiser = Organiser.objects.get(url=url) except Organiser.DoesNotExist: organiser = Organiser(url=url) organiser.translate('ru') organiser.name = org organiser.save() except Organiser.MultipleObjectsReturned: continue if not exp.organiser.filter(url=organiser.url).exists(): exp.organiser.add(organiser) print(exp)