# -*- coding: utf-8 -*- from django.shortcuts import render_to_response from django.http import HttpResponseRedirect, HttpResponse from django.views.generic import FormView, ListView, DeleteView from django.conf import settings from django.contrib import messages from django.shortcuts import get_object_or_404 from import_xls.models import Log from import_forms import ImportEventForm, ImportThemeForm, ImportTagForm, \ ImportPlaceConferenceForm, ImportPlaceExpositionForm from export_forms import ExportEventForm, ExportThemeForm, ExportTagForm,\ ExportUserForm, ExportCompanyForm, ExportPlaceConferenceForm, ExportPlaceExpositionForm, ExportBlogForm,\ ExportCityForm from django.utils.translation import ugettext as _ def xls_to_response(xls, fname): response = HttpResponse(mimetype="application/ms-excel") response['Content-Disposition'] = 'attachment; filename=%s' % fname xls.save(response) return response class ImportView(FormView): """ abstract class """ template_name = 'c_admin/import templates/import.html' def form_valid(self, form): errors = form.save_file() messages.success(self.request, 'Success') context = self.get_context_data() context['import_errors'] = errors context['form'] = form return render_to_response(self.template_name, context) class ExportView(FormView): """ abstract class """ template_name = 'export.html' def form_valid(self, form): workbook = form.export() if workbook: f_name = form.get_fname() else: messages.error(self.request, _('No objects found')) return HttpResponseRedirect(self.success_url) return xls_to_response(workbook, f_name) class ExportTheme(ExportView): form_class = ExportThemeForm success_url = '/admin/export-theme' class ExportTag(ExportView): form_class = ExportTagForm success_url = '/admin/export-tag' class ExportUser(ExportView): form_class = ExportUserForm success_url = '/admin/export-user' class ExportCompany(ExportView): form_class = ExportCompanyForm success_url = '/admin/export-company' class ExportPlaceConference(ExportView): form_class = ExportPlaceConferenceForm success_url = '/admin/export-place_conference' class ExportPlaceExposition(ExportView): form_class = ExportPlaceExpositionForm success_url = '/admin/export-place_exposition' class ExportBlog(ExportView): form_class = ExportBlogForm success_url = '/admin/export-blog/' class ExportBlog(ExportView): form_class = ExportBlogForm success_url = '/admin/export-blog/' class ExportCity(ExportView): form_class = ExportCityForm success_url = '/admin/export-city/' class ImportEvent(FormView): form_class = ImportEventForm success_url = '/admin/import-event/' template_name = 'c_admin/import templates/import_event.html' def form_valid(self, form): errors = form.save_file_debug() return HttpResponseRedirect('/admin/import/log/') class ImportPlaceExposition(FormView): form_class = ImportPlaceExpositionForm success_url = '/admin/import-place_exposition/' template_name = 'c_admin/import templates/import.html' def form_valid(self, form): errors = form.save_file_debug() return HttpResponseRedirect(self.success_url) class ImportPlaceConference(ImportView): form_class = ImportPlaceConferenceForm success_url = '/admin/import-place_conference' def form_valid(self, form): errors = form.save_file_debug() return HttpResponseRedirect(self.success_url) class ImportTheme(ImportView): form_class = ImportThemeForm success_url = '/admin/import-theme' class ImportTag(ImportView): form_class = ImportTagForm success_url = '/admin/import-tag' class ExportEvent(ExportView): form_class = ExportEventForm template_name = 'export_event.html' success_url = '/admin/export-event' class LogList(ListView): model = Log paginate_by = settings.ADMIN_PAGINATION template_name = 'c_admin/import templates/log.html' class LogDelete(DeleteView): model = Log success_url = '/admin/import/log/' template_name = 'c_admin/import templates/log_delete.html' def log_file(request, log_id): log = get_object_or_404(Log, id=log_id) response = HttpResponse() response['content-type'] = 'application/x-executable' filename = 'import_%s_log.txt'%str(log.id) response['content-disposition'] = 'attachment;filename=%s'%filename response['X-Accel-Redirect'] = log.log.url return response def work_file(request, log_id): log = get_object_or_404(Log, id=log_id) response = HttpResponse() response['content-type'] = 'application/x-executable' filename = 'import_%s_file.xls' % str(log.id) response['content-disposition'] = 'attachment;filename=%s'%filename response['X-Accel-Redirect'] = log.work_file.url return response