def export_action(self, request, *args, **kwargs): """ The function based view that does the export. Copied from import_export/resouces.py - the original could not work because of references to admin. """ formats = self.get_export_formats() form = ExportForm(formats, request.POST or None) if form.is_valid(): file_format = formats[ int(form.cleaned_data['file_format']) ]() resource_class = self.get_export_resource() queryset = self.get_request_queryset(request) data = resource_class().export(queryset) #Export filtered queryset filter_set = self.get_filter_set() filtered_queryset = filter_set(request.GET, queryset=self.queryset) data = resource.export(filtered_queryset.qs) response = HttpResponse( file_format.export_data(data), mimetype='application/octet-stream', ) response['Content-Disposition'] = 'attachment; filename=%s' % ( self.get_export_filename(file_format), ) return response context = {} context['form'] = form context['opts'] = self.get_model()._meta return TemplateResponse(request, [self.export_template_name], context)
def export_action(self, request, *args, **kwargs): formats = self.get_export_formats() form = ExportForm(formats, request.POST or None) if form.is_valid(): file_format = formats[ int(form.cleaned_data['file_format']) ]() resource_class = self.get_resource_class() queryset = self.get_export_queryset(request) data = resource_class().export(queryset) response = HttpResponse( file_format.export_data(data), mimetype='application/octet-stream', ) response['Content-Disposition'] = 'attachment; filename=%s' % ( self.get_export_filename(file_format), ) return response context = {} context['form'] = form context['opts'] = self.model._meta return TemplateResponse(request, [self.export_template_name], context, current_app=self.admin_site.name)
def export_action(self, request, *args, **kwargs): if not self.has_export_permission(request): raise PermissionDenied formats = self.get_export_formats() form = ExportForm(formats, request.POST or None) if form.is_valid(): file_format = formats[ int(form.cleaned_data['file_format']) ]() queryset = self.get_export_queryset(request) export_data = self.get_export_data(file_format, queryset, request=request) content_type = file_format.get_content_type() response = HttpResponse(export_data, content_type=content_type) response['Content-Disposition'] = 'attachment; filename="%s"' % ( "%s-%s.%s" % (self.model.__name__, datetime.now().strftime('%Y-%m-%d'), file_format.get_extension()) ) post_export.send(sender=None, model=self.model) return response context = self.get_export_context_data() context.update(self.admin_site.each_context(request)) context['title'] = "Export" context['form'] = form context['opts'] = self.model._meta context['total_count'] = self.model.objects.count() request.current_app = self.admin_site.name return TemplateResponse(request, [self.export_template_name], context)
def export_action(self, request, *args, **kwargs): if str(request.user) != 'admin': return HttpResponse('无权限') get_logger().debug('----------phonenumber----:') formats = self.get_export_formats() form = ExportForm(formats, request.POST or None) if form.is_valid(): file_format = formats[ int(form.cleaned_data['file_format']) ]() queryset = self.get_export_queryset(request) export_data = self.get_export_data(file_format, queryset) content_type = 'application/octet-stream' # Django 1.7 uses the content_type kwarg instead of mimetype try: response = HttpResponse(export_data, content_type=content_type) except TypeError: response = HttpResponse(export_data, mimetype=content_type) response['Content-Disposition'] = 'attachment; filename=%s' % ( self.get_export_filename(file_format), ) return response context = {} context['form'] = form context['opts'] = self.model._meta return TemplateResponse(request, [self.export_template_name], context, current_app=self.admin_site.name)
def block_top_toolbar(self, context, nodes): formats = self.get_export_formats() form = ExportForm(formats) context = get_context_dict(context or {}) # no error! context.update({ 'form': form, 'opts': self.opts, 'form_params': self.admin_view.get_form_params({'_action_': 'export'}), }) nodes.append(loader.render_to_string('xadmin/blocks/model_list.top_toolbar.importexport.export.html', context=context))
def exporter(request, resource, template): context = {} formats = [f for f in DEFAULT_FORMATS if f().can_export()] form = ExportForm(formats, request.POST or None) if form.is_valid(): file_format = formats[int(form.cleaned_data['file_format'])]() filename = "%s-%s.%s" % (resource._meta.model.__name__, datetime.now().strftime("%Y-%m-%d-%H-%M-%S"), file_format.get_extension()) data = resource.export() export_data = file_format.export_data(data) content_type = file_format.get_content_type() response = HttpResponse(export_data, content_type=content_type) response['Content-Disposition'] = 'attachment; filename=%s' % ( filename, ) return response context['form'] = form return TemplateResponse(request, [template], context)
def export_action(self, request, *args, **kwargs): self.request = request formats = self.get_export_formats() form = ExportForm(formats, request.POST or None) if form.is_valid(): file_format = formats[int(form.cleaned_data['file_format'])]() queryset = self.get_export_queryset(request) task_id = self.get_export_data(file_format, queryset) filename = self.get_export_filename(file_format) msg = 'Data export task spawned with id: {} and filename: {}'.format(task_id, filename) messages.info(request, msg) return redirect('admin:index') context = {} context.update(self.admin_site.each_context(request)) context['form'] = form context['opts'] = self.model._meta request.current_app = self.admin_site.name return TemplateResponse(request, [self.export_template_name], context)
def block_top_toolbar(self, context, nodes): formats = self.get_export_formats() form = ExportForm(formats) self._form_bootstrap_styles(form) context = get_context_dict(context or {}) # no error! context.setdefault( 'export_to_email', bool(self.import_export_args.get('export_to_email', True))) context.update({ 'form': form, 'opts': self.opts, 'form_params': self.admin_view.get_form_params({'_action_': 'export'}) }) template_name = self.import_export_args.get( 'template', 'xadmin/blocks/model_list.top_toolbar.importexport.export.html') nodes.append(loader.render_to_string(template_name, context=context))
def __init__(self, formats, *args, **kwargs): ExportForm.__init__(self, formats, *args, **kwargs)
def export_contacts(request): formats = DEFAULT_FORMATS_FOR_EXPORT archive_formats = ARCHIVE_FORMAT if request.method == 'POST': if 'export_contacts' in request.POST: form = ExportForm(formats, request.POST) export_photo_form = ExportForm(archive_formats) export_photo_form.fields['file_format'].label = "Archive format" if form.is_valid(): file_format = formats[int(form.cleaned_data['file_format'])]() file_extension = file_format.get_extension() content_type = file_format.CONTENT_TYPE queryset = Contact.objects.filter(owner=request.user) contact_list = ContactResource().export(queryset) export_data = file_format.export_data(contact_list) _time = datetime.now().strftime('%Y-%m-%d') _model = ContactResource.Meta.model.__name__ filename = '%s-%s.%s' % (_model, _time, file_extension) response = HttpResponse(export_data, content_type=content_type) # response.write(codecs.BOM_UTF8) response[ 'Content-Disposition'] = 'attachment; filename = %s' % filename return response elif 'export_photos' in request.POST: form = ExportForm(formats) export_photo_form = ExportForm(archive_formats, request.POST) export_photo_form.fields['file_format'].label = "Archive format" if export_photo_form.is_valid(): # Get archivator type from choice field choice_num = export_photo_form.cleaned_data.get('file_format') archivator = archive_formats[int(choice_num)] print(archivator) export_photo_form = ExportForm(archive_formats, request.POST) export_photo_form.fields[ 'file_format'].label = "Archive format" query_set = ContactPhoto.objects.filter( contact__owner=request.user) photo_list = ContactPhotoResource().export(queryset=query_set) line = str(photo_list.csv) line = '/n'.join(row for row in line.splitlines()[1:]) # relative to MEDIA_ROOT filepathes filenames_rel = [row for row in line.split('/n') if row] # list of absolute pathes filenames = [ os.path.join(MEDIA_ROOT, fpath) for fpath in filenames_rel ] # for file in filenames: # print(file, default_storage.exists(file)) in_memory, fname = archivator.add_to_archive(filenames) resp = HttpResponse( in_memory.getvalue(), content_type="application/x-zip-compressed") # ..and correct content-disposition resp['Content-Disposition'] = 'attachment; filename=%s' % fname resp['Content-length'] = in_memory.tell() return resp else: form = ExportForm(formats) export_photo_form = ExportForm(archive_formats) export_photo_form.fields['file_format'].label = "Archive format" return render(request, 'contacts/export_form.html', { 'form': form, 'photo_form': export_photo_form })