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.
89 lines
3.0 KiB
89 lines
3.0 KiB
# -*- coding: utf-8 -*-
|
|
import xlrd
|
|
import urllib2
|
|
from django.core.management.base import BaseCommand
|
|
from django.conf import settings
|
|
from functions.form_check import translit_with_separator
|
|
from functions.files import get_alternative_filename
|
|
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'
|
|
|
|
|
|
class Command(BaseCommand):
|
|
def handle(self, *args, **options):
|
|
|
|
f = open(CHINA_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
|
|
|
|
if exp.logo or row[19] == '':# or row[16].startswith('http') or row[16].startswith('https') or not row[16].startswith('/') or row[16].startswith('../'):
|
|
continue
|
|
|
|
path = row[19]
|
|
file_name = path.split('/')[-1]
|
|
logo_path = exp.logo.field.upload_to
|
|
full_path = settings.MEDIA_ROOT + logo_path
|
|
|
|
try:
|
|
alt_name = get_alternative_filename(full_path, file_name)
|
|
except UnicodeEncodeError:
|
|
continue
|
|
|
|
download_to = full_path+alt_name
|
|
|
|
if path.startswith('http') or path.startswith('https'):
|
|
url = path
|
|
elif path.startswith('/'):
|
|
url = 'http://expomap.ru' + path
|
|
elif path.startswith('images'):
|
|
url = 'http://expomap.ru/' + path
|
|
else:
|
|
continue
|
|
#print('------------------------------------')
|
|
#print(path)
|
|
#print(url)
|
|
#print('------------------------------------')
|
|
|
|
try:
|
|
response = urllib2.urlopen(url, timeout=15)
|
|
except:
|
|
continue
|
|
if response.code != 200:
|
|
continue
|
|
|
|
with open(download_to,'wb') as f:
|
|
try:
|
|
f.write(response.read())
|
|
f.close()
|
|
except:
|
|
# can be timeout
|
|
continue
|
|
|
|
exp.logo = logo_path + alt_name
|
|
try:
|
|
exp.save()
|
|
print(exp)
|
|
except:
|
|
print('logo exception. logo: %s'%exp.logo)
|
|
continue
|
|
|