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.
173 lines
5.2 KiB
173 lines
5.2 KiB
# -*- coding: utf-8 -*-
|
|
from django.core.context_processors import csrf
|
|
from django.shortcuts import render_to_response
|
|
from django.http import HttpResponseRedirect, HttpResponse
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.db.models.loading import get_model
|
|
#
|
|
import xlwt
|
|
import xlrd
|
|
#
|
|
from import_forms import ImportEventForm, ImportThemeForm, ImportTagForm, ImportOrganiserForm,\
|
|
ImportPlaceConferenceForm, ImportPlaceExpositionForm
|
|
from export_forms import ExportEventForm, ExportOrganiserForm, ExportThemeForm, ExportTagForm,\
|
|
ExportUserForm, ExportCompanyForm, ExportPlaceConferenceForm, ExportPlaceExpositionForm, ExportBlogForm,\
|
|
ExportCityForm
|
|
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
|
|
|
|
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 ExportOrganiser(ExportView):
|
|
form_class = ExportOrganiserForm
|
|
success_url = '/admin/export-organiser'
|
|
|
|
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/'
|
|
|
|
|
|
|
|
from import_xls.models import Log
|
|
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/')
|
|
|
|
#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 ImportTheme(ImportView):
|
|
form_class = ImportThemeForm
|
|
success_url = '/admin/import-theme'
|
|
|
|
class ImportTag(ImportView):
|
|
form_class = ImportTagForm
|
|
success_url = '/admin/import-tag'
|
|
|
|
class ImportOrganiser(ImportView):
|
|
form_class = ImportOrganiserForm
|
|
success_url = '/admin/import-organiser'
|
|
|
|
class ImportPlaceExposition(ImportView):
|
|
form_class = ImportPlaceExpositionForm
|
|
success_url = '/admin/import-place_exposition'
|
|
|
|
class ImportPlaceConference(ImportView):
|
|
form_class = ImportPlaceConferenceForm
|
|
success_url = '/admin/import-place_conference'
|
|
|
|
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 |