diff --git a/exposition/management/commands/expo_organiser.py b/exposition/management/commands/expo_organiser.py new file mode 100644 index 00000000..12e62f0b --- /dev/null +++ b/exposition/management/commands/expo_organiser.py @@ -0,0 +1,57 @@ +# -*- 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' + + +class Command(BaseCommand): + def handle(self, *args, **options): + + f = open(GERMANY_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() + + + if not exp.organiser.filter(url=organiser.url).exists(): + exp.organiser.add(organiser) + + print(exp) + diff --git a/exposition/management/commands/fix_logo.py b/exposition/management/commands/fix_logo.py new file mode 100644 index 00000000..554fd78c --- /dev/null +++ b/exposition/management/commands/fix_logo.py @@ -0,0 +1,74 @@ +# -*- 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(NA_EU_ASIA_FILE2, '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 row[16] =='' or row[16].startswith('http') or row[16].startswith('https') or row[16].startswith('/') or row[16].startswith('../'): + continue + + path = row[16] + + + file_name = path.split('/')[-1] + logo_path = exp.logo.field.upload_to + full_path = settings.MEDIA_ROOT + logo_path + + + alt_name = get_alternative_filename(full_path, file_name) + + download_to = full_path+alt_name + url = 'http://expomap.ru/' + path + try: + response = urllib2.urlopen(url, timeout=15) + except: + 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 diff --git a/import_xls/excel_settings.py b/import_xls/excel_settings.py index fb9510b5..eb415e05 100644 --- a/import_xls/excel_settings.py +++ b/import_xls/excel_settings.py @@ -372,7 +372,7 @@ event_sett = { u'Min_Pack кв.м.':{u'field': u'min_closed_equipped_area', u'func': to_int}, u'Max_Pack кв.м.':{u'field': u'max_closed_equipped_area', u'func': to_int}, u'Открытая площадь':{u'field': u'max_open_area', u'func': to_int}, - u'Мин. Площадь кв.м.':{u'field': u'min_open_area', u'func': to_int}, + u'Мин. Площадь кв.м.':{u'field': u'min_stand_size', u'func': to_int}, u'Регистрационный взнос':{u'field': u'registration_payment', u'func': to_int}, u'Примечание по участии':{u'field': u'participation_note', u'func': unicode}, u'Крайний срок подачи заявки':{u'field': u'application_deadline', u'func': to_date}, diff --git a/organiser/models.py b/organiser/models.py index 8d09405b..ea4f748f 100644 --- a/organiser/models.py +++ b/organiser/models.py @@ -75,6 +75,7 @@ class Organiser(TranslatableModel): #fields saves information about creating and changing model created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) + active = models.NullBooleanField(default=0) def __unicode__(self): return self.lazy_translation_getter('name', self.pk) diff --git a/place_exposition/admin.py b/place_exposition/admin.py index 3cc7ba63..52e97bec 100644 --- a/place_exposition/admin.py +++ b/place_exposition/admin.py @@ -296,12 +296,12 @@ def edit_hall(request, place_url, hall_id): form.save(place, hall_id) return HttpResponseRedirect('/admin/place_exposition/%s/'%place.url) else: + data = {'capacity': hall.capacity, 'number': hall.number} for code, name in settings.LANGUAGES: trans_obj = Hall._meta.translations_model.objects.get(language_code = code, master__id=hall.id) #access to translated fields data['name_%s'%code] = trans_obj.name form = HallForm(initial=data) - context = {'form': form, 'languages': settings.LANGUAGES} context.update(csrf(request)) diff --git a/place_exposition/forms.py b/place_exposition/forms.py index 41d9e473..7ce33ccd 100644 --- a/place_exposition/forms.py +++ b/place_exposition/forms.py @@ -310,8 +310,8 @@ class HallForm(forms.Form): hall.capacity = data['capacity'] hall.number = data['number'] hall.place_exposition = place_exposition - hall.save() fill_with_signal(Hall, hall, data) + hall.save() return hall diff --git a/proj/views.py b/proj/views.py index e9904df3..512e0690 100644 --- a/proj/views.py +++ b/proj/views.py @@ -34,7 +34,7 @@ class MainPageView(TemplateView): def get_context_data(self, **kwargs): context = super(MainPageView, self).get_context_data(**kwargs) - events = Exposition.objects.all().order_by('-main_page')[:5] + events = Exposition.objects.filter(main_page__gt=0) exposition_themes = Theme.objects.order_by('-main_page').filter(types=Theme.types.exposition)[:6] conference_themes = Theme.objects.order_by('-main_page').filter(types=Theme.types.conference)[:6] seminar_themes = Theme.objects.order_by('-main_page').filter(types=Theme.types.seminar)[:6] diff --git a/settings/admin.py b/settings/admin.py index f413e85b..60bdffb1 100644 --- a/settings/admin.py +++ b/settings/admin.py @@ -60,10 +60,10 @@ import datetime def main_page(request): now = datetime.datetime.now() - expositions = Exposition.objects.filter(main_page__gt=0, data_begin__gte=now) - conferences = Conference.objects.filter(main_page__gt=0, data_begin__gte=now) - seminars = Seminar.objects.filter(main_page__gt=0, data_begin__gte=now) - webinars = Webinar.objects.filter(main_page__gt=0, data_begin__gte=now) + expositions = Exposition.objects.filter(main_page__gt=0) + conferences = Conference.objects.filter(main_page__gt=0) + seminars = Seminar.objects.filter(main_page__gt=0) + webinars = Webinar.objects.filter(main_page__gt=0) events = {'expositions':expositions, 'conferences': conferences, 'seminars':seminars, 'webinars': webinars} diff --git a/settings/forms.py b/settings/forms.py index cdff1b1f..7d425b38 100644 --- a/settings/forms.py +++ b/settings/forms.py @@ -82,20 +82,20 @@ class MainPageEvent(forms.Form): super(MainPageEvent, self).__init__(*args, **kwargs) now = datetime.datetime.now self.fields['expositions' ] = forms.ModelMultipleChoiceField( - queryset=Exposition.objects.filter(data_begin__gte=now), + queryset=Exposition.objects.all(), required=False ) self.fields['conferences' ] = forms.ModelMultipleChoiceField( - queryset=Conference.objects.filter(data_begin__gte=now), + queryset=Conference.objects.all(), required=False ) self.fields['seminars' ] = forms.ModelMultipleChoiceField( - queryset=Seminar.objects.filter(data_begin__gte=now), + queryset=Seminar.objects.all(), required=False ) self.fields['webinars' ] = forms.ModelMultipleChoiceField( - queryset=Webinar.objects.filter(data_begin__gte=now), + queryset=Webinar.objects.all(), required=False ) def save(self): diff --git a/templates/client/includes/exposition/exposition_object.html b/templates/client/includes/exposition/exposition_object.html index 26486f16..6a58b005 100644 --- a/templates/client/includes/exposition/exposition_object.html +++ b/templates/client/includes/exposition/exposition_object.html @@ -170,11 +170,11 @@
{% trans 'Организатор' %}:
- {% for organiser in exposition.organiser.all %} - {{ organiser.name }}
- {{ organiser.web_page }}
- {{ organiser.email }} - {% endfor %} + {% with organisers=exposition.organiser.all %} + {% for organiser in organisers %} + {{ organiser.name }}
+ {% endfor %} + {% endwith %}
{% if exposition.web_page %}
{% trans 'Веб-сайт' %}:
diff --git a/templates/client/includes/exposition/price.html b/templates/client/includes/exposition/price.html index 32d9a165..102a3a33 100644 --- a/templates/client/includes/exposition/price.html +++ b/templates/client/includes/exposition/price.html @@ -88,13 +88,13 @@ {% if exposition.price_day %}
  • -
    {{ exposition.price_day }} {{ exposition.get_currency_html }}
    +
    {{ exposition.price_day }} {% if exposition.price_day|isdigit %}{{ exposition.get_currency_html }}{% endif %}
    {% trans 'на 1 день' %}
  • {% endif %} {% if exposition.price_all %}
  • -
    {{ exposition.price_all }} {{ exposition.get_currency_html }}
    +
    {{ exposition.price_all }} {% if exposition.price_all|isdigit %}{{ exposition.get_currency_html }}{% endif %}
    {% trans 'на все дни' %}
  • {% endif %} @@ -113,7 +113,7 @@