Example #1
0
    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)
Example #2
0
    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)    
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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))
Example #6
0
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)
Example #7
0
    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)
Example #8
0
 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))
Example #9
0
 def __init__(self, formats, *args, **kwargs):
     ExportForm.__init__(self, formats, *args, **kwargs)
Example #10
0
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
    })