Ejemplo n.º 1
0
    def get_response(self, response, context, *args, **kwargs):
        has_view_perm = self.has_model_perm(self.model, 'view')
        if not has_view_perm:
            raise PermissionDenied

        export_format = self.request.GET.get('file_format')

        if not export_format:
            messages.warning(self.request,
                             _('You must select an export format.'))
        else:
            formats = self.get_export_formats()
            file_format = formats[int(export_format)]()
            queryset = self.get_export_queryset(self.request, context)
            export_data = self.get_export_data(file_format,
                                               queryset,
                                               request=self.request)
            content_type = file_format.get_content_type()
            # 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), )
            post_export.send(sender=None, model=self.model)
            return response
Ejemplo n.º 2
0
    def get_response(self, response, context, *args, **kwargs):
        has_view_perm = self.has_model_perm(self.model, 'view')
        if not has_view_perm:
            raise PermissionDenied

        export_format = self.request.GET.get('file_format')

        if not export_format:
            messages.warning(self.request, _('You must select an export format.'))
        else:
            formats = self.get_export_formats()
            file_format = formats[int(export_format)]()
            queryset = self.get_export_queryset(self.request, context)
            export_data = self.get_export_data(file_format, queryset, request=self.request)
            content_type = file_format.get_content_type()
            # 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),
            )
            post_export.send(sender=None, model=self.model)
            return response
Ejemplo n.º 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)
Ejemplo n.º 4
0
    def export_action(self, request, *args, **kwargs):
        if not self.has_export_permission(request):
            raise PermissionDenied

        formats = self.get_export_formats()
        form = ProjectExportForm(formats, request.POST or None)
        if form.is_valid():
            file_format = formats[int(form.cleaned_data['file_format'])]()
            user = form.cleaned_data['user']
            queryset = self.get_export_queryset(request).filter(user=user)
            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"' % (
                self.get_export_filename(request, queryset, file_format), )

            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
        request.current_app = self.admin_site.name
        return TemplateResponse(request, [self.export_template_name], context)
Ejemplo n.º 5
0
    def export_action(self, request, *args, **kwargs):
        if not self.has_export_permission(request):
            raise PermissionDenied

        formats = self.get_export_formats()
        form = BsExportForm(formats, request.POST or None)
        if form.is_valid():
            file_format = formats[
                int(form.cleaned_data['file_format'])
            ]()

            queryset = self.get_export_queryset(request)

            q_date = form.cleaned_data['date_where']
            # print('q_date: ', q_date)
            q_date_list = str(q_date).split('-')

            if len(q_date_list) == 3:
                _year = int(q_date_list[0])
                _month = int(q_date_list[1])
                _day = int(q_date_list[2])
                # print('ymd: ', _year, _month, _day)
                _gte_date = datetime.date(_year, _month, _day)
                _lte_date = _gte_date + datetime.timedelta(days=1)
            
                queryset = queryset.filter(date__gte=_gte_date, date__lte=_lte_date)

            
            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"' % (
                self.get_export_filename(request, queryset, file_format),
            )

            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
        request.current_app = self.admin_site.name
        return TemplateResponse(request, [self.export_template_name],
                                context)
Ejemplo n.º 6
0
    def get_response(self, response, context, *args, **kwargs):
        has_view_perm = self.has_model_perm(self.model, 'view')
        if not has_view_perm:
            raise PermissionDenied

        export_format = self.request.GET.get('file_format')
        scope = self.request.GET.get('scope')

        if not export_format:
            messages.warning(self.request,
                             _('You must select an export format.'))
            return HttpResponseRedirect(self.request.path)
        elif scope == 'selected' and not self.request.GET.get(
                '_selected_actions', '').strip():
            messages.warning(self.request,
                             _('You need to select items for export.'))
            return HttpResponseRedirect(self.request.path)
        else:
            formats = self.get_export_formats()
            file_format = formats[int(export_format)]()
            queryset = self.get_export_queryset(self.request, context)

            # The export takes place in the background, so you do not have to wait.
            if self.request.GET.get('result-action', '') == 'sendmail':
                return self.send_mail_response(self.request,
                                               file_format=file_format,
                                               queryset=queryset)

            # Follow normal flow if it is not to send by email
            export_data = self.get_export_data(file_format,
                                               queryset,
                                               request=self.request)
            content_type = file_format.get_content_type()

            # 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), )
            post_export.send(sender=None, model=self.model)
            return response