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.
 
 
 
 
 
 

177 lines
4.8 KiB

# -*- 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
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 = '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 = '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 = '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 = 'admin/import templates/log.html'
class LogDelete(DeleteView):
model = Log
success_url = '/admin/import/log/'
template_name = '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