from django.shortcuts import render_to_response from django.contrib.formtools.wizard.views import SessionWizardView from django.core.files.storage import default_storage, FileSystemStorage import os from proj import settings from wizard import forms from exposition.models import Exposition, Statistic from functions.form_check import translit_with_separator # defining different template for every form TEMPLATES = {'0':'client/wizard/first_step.html', '1':'client/wizard/second_step.html'} class ExpoWizard(SessionWizardView): location=os.path.join(settings.MEDIA_ROOT, 'temp', 'files') file_storage = FileSystemStorage(location, settings.MEDIA_URL) def done(self, form_list, **kwargs): upload_file = form_list[0].cleaned_data['logo'] data = self.get_all_cleaned_data() expo = Exposition.objects.language('ru').create( name = data.get('name'), data_begin = data.get('date_start'), data_end = data.get('date_end'), main_title = data.get('main_title'), description = data.get('description'), products = data.get('products'), country = data.get('country', 1), city = data.get('city', 1), place = data.get('place', 1), periodic = data.get('periodic'), web_page = data.get('web_site'), logo = data.get('logo'), foundation_year = data.get('found_year'), area = data.get('square'), price_day = '%i %s'%(data.get('one_day'), self.request.POST['oneDayCurrency1']), price_all = '%i %s'%(data.get('all_days'), self.request.POST['allDaysCurrency1']), price_day_bar = '%i %s'%(data.get('pre_one_day'),self.request.POST['oneDayCurrency1']), price_all_bar = '%i %s'%(data.get('pre_all_days'),self.request.POST['allDaysCurrency1']), min_area = data.get('min_square'), registration_payment = data.get('registration_depos'), application_deadline = data.get('deadline_date'), min_closed_area = data.get('unequiped'), min_open_area = data.get('open_square'), min_closed_equipped_area = data.get('equiped'), url = translit_with_separator(data.get('name')), quality_label= 0, audience = 0 ) expo.tag = [data.get('tag')] expo.theme = [data.get('theme')] if data['membership1']: expo.quality_label = (expo.quality_label| Exposition.quality_label.exporating) if data['membership2']: expo.quality_label = (expo.quality_label| Exposition.quality_label.rsva) if data['membership3']: expo.quality_label = (expo.quality_label| Exposition.quality_label.ufi) if data['audience1']: expo.audience = (expo.audience | Exposition.audience.experts) if data['audience2']: expo.audience = expo.audience | getattr(Exposition.audience, 'experts and consumers') if data['audience3']: expo.audience = expo.audience | (getattr(Exposition.audience, 'general public')) expo.save() Statistic.objects.language().create( exposition = expo, year = data.get('statistic_year'), visitors = data.get('visitors'), members = data.get('partisipants'), countries = data.get('countries'), area = data.get('square') ) if upload_file: self.file_storage.delete(upload_file.name) return render_to_response('done.html', { 'form_data': [form.cleaned_data for form in form_list], }) def get_template_names(self): return [TEMPLATES[self.steps.current]]