diff --git a/HISTORY.rst b/HISTORY.rst index b3b2c5d..a63cdc8 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,6 +1,18 @@ ======= History ======= +UNRELEASED +------------------ +* Fix progress bar on changeview for ImportJob and ExportJob +* Improve celery-import-result page + + * Add displaying resources for import form + * Fix autofill `Format` by file extension + * Add `Totals` section + * Remove extra loop if errors in input file (https://github.com/saritasa-nest/django-import-export-extensions/issues/74) + +* Fixed display of progress bar when task is waiting to run (https://github.com/saritasa-nest/django-import-export-extensions/issues/68) +* Improve progress bar style (https://github.com/saritasa-nest/django-import-export-extensions/issues/72) 1.0.1 (2024-11-08) ------------------ diff --git a/import_export_extensions/admin/mixins/import_mixin.py b/import_export_extensions/admin/mixins/import_mixin.py index 3b31a3a..9bd25d2 100644 --- a/import_export_extensions/admin/mixins/import_mixin.py +++ b/import_export_extensions/admin/mixins/import_mixin.py @@ -16,6 +16,7 @@ from import_export import admin as import_export_admin from import_export import mixins as import_export_mixins +from import_export import resources as import_export_resources from ... import models from ..forms import ForceImportForm @@ -170,24 +171,16 @@ def celery_import_action( ) # GET: display Import Form - resources = [ - resource_class(**resource_kwargs) - for resource_class in resource_classes - ] - context.update(self.admin_site.each_context(request)) context["title"] = _("Import") context["form"] = form context["opts"] = self.model_info.meta context["media"] = self.media + form.media - context["fields_list"] = [ - ( - resource.get_display_name(), - [f.column_name for f in resource.get_user_visible_fields()], - ) - for resource in resources - ] + context["fields_list"] = self._get_fields_list_for_resources( + resource_classes=resource_classes, + resource_kwargs=resource_kwargs, + ) request.current_app = self.admin_site.name return TemplateResponse( @@ -282,9 +275,16 @@ def celery_import_job_results_view( context["confirm_form"] = Form() else: # display import form + resource_classes = self.get_import_resource_classes(request) + resource_kwargs = self.get_import_resource_kwargs(request) + context["import_form"] = ForceImportForm( formats=self.get_import_formats(), - resources=self.get_import_resource_classes(request), + resources=resource_classes, + ) + context["fields_list"] = self._get_fields_list_for_resources( + resource_classes=resource_classes, + resource_kwargs=resource_kwargs, ) context.update(self.admin_site.each_context(request)) @@ -376,6 +376,27 @@ def _redirect_to_results_page( return HttpResponseRedirect(redirect_to=url) + def _get_fields_list_for_resources( + self, + resource_classes: list[type[import_export_resources.ModelResource]], + resource_kwargs, + ) -> list[tuple[str, list[str]]]: + """Get fields list for resource classes.""" + resources = [ + resource_class(**resource_kwargs) + for resource_class in resource_classes + ] + return [ + ( + resource.get_display_name(), + [ + field.column_name + for field in resource.get_user_visible_fields() + ], + ) + for resource in resources + ] + def changelist_view( self, request: WSGIRequest, diff --git a/import_export_extensions/admin/widgets.py b/import_export_extensions/admin/widgets.py index b0e5a34..e0ef621 100644 --- a/import_export_extensions/admin/widgets.py +++ b/import_export_extensions/admin/widgets.py @@ -1,5 +1,6 @@ from django import forms +from django.template.loader import render_to_string class ProgressBarWidget(forms.Widget): @@ -9,6 +10,8 @@ class ProgressBarWidget(forms.Widget): """ + template_name = "admin/import_export_extensions/progress_bar.html" + def __init__(self, *args, **kwargs): """Get ``ImportJob`` or ``ExportJob`` instance from kwargs. @@ -28,16 +31,7 @@ def render(self, *args, **kwargs) -> str: to send GET requests. """ - progress_bar = f""" - - """ - - return progress_bar + return render_to_string(self.template_name, {"job_url": self.url}) class Media: """Class with custom assets for widget.""" diff --git a/import_export_extensions/static/import_export_extensions/css/widgets/progress_bar.css b/import_export_extensions/static/import_export_extensions/css/widgets/progress_bar.css index bcb3202..098ca38 100644 --- a/import_export_extensions/static/import_export_extensions/css/widgets/progress_bar.css +++ b/import_export_extensions/static/import_export_extensions/css/widgets/progress_bar.css @@ -4,7 +4,7 @@ progress { width: 100%; -webkit-appearance: none; border: none; - position:relative; + position: relative; } progress:before { content: attr(data-label); @@ -24,8 +24,13 @@ progress::-webkit-progress-bar { background-color: var(--breadcrumbs-fg); } progress::-webkit-progress-value { - background-color: var(--breadcrumbs-bg); + background-color: var(--primary); } progress::-moz-progress-bar { background-color: var(--breadcrumbs-bg); } + +html[data-theme="dark"] +progress::-webkit-progress-bar { + background-color: var(--darkened-bg); +} diff --git a/import_export_extensions/templates/admin/import_export_extensions/celery_export_results.html b/import_export_extensions/templates/admin/import_export_extensions/celery_export_results.html index 650f4e0..e054070 100644 --- a/import_export_extensions/templates/admin/import_export_extensions/celery_export_results.html +++ b/import_export_extensions/templates/admin/import_export_extensions/celery_export_results.html @@ -17,7 +17,7 @@ {% endblock %} {% block breadcrumbs_last %} - + {% trans "Export" %} › {% trans "Export results" %} @@ -40,7 +40,7 @@