Skip to content

Commit 91c7439

Browse files
authored
fix: import export guess type (#466)
1 parent ce6e979 commit 91c7439

File tree

4 files changed

+35
-10
lines changed

4 files changed

+35
-10
lines changed

src/unfold/contrib/import_export/forms.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,37 @@ class ImportForm(BaseImportForm):
1515
def __init__(self, *args, **kwargs):
1616
super().__init__(*args, **kwargs)
1717

18-
self.fields["resource"].widget.attrs["class"] = " ".join(SELECT_CLASSES)
19-
self.fields["import_file"].widget = UnfoldAdminFileFieldWidget()
20-
self.fields["format"].widget.attrs["class"] = " ".join(SELECT_CLASSES)
18+
self.fields["resource"].widget.attrs["class"] = " ".join(
19+
[self.fields["resource"].widget.attrs.get("class", ""), *SELECT_CLASSES]
20+
)
21+
self.fields["import_file"].widget = UnfoldAdminFileFieldWidget(
22+
attrs=self.fields["import_file"].widget.attrs
23+
)
24+
self.fields["format"].widget.attrs["class"] = " ".join(
25+
[self.fields["format"].widget.attrs.get("class", ""), *SELECT_CLASSES]
26+
)
2127

2228

2329
class ExportForm(BaseExportForm):
2430
def __init__(self, *args, **kwargs):
2531
super().__init__(*args, **kwargs)
26-
self.fields["resource"].widget.attrs["class"] = " ".join(SELECT_CLASSES)
27-
self.fields["format"].widget.attrs["class"] = " ".join(SELECT_CLASSES)
32+
self.fields["resource"].widget.attrs["class"] = " ".join(
33+
[self.fields["resource"].widget.attrs.get("class", ""), *SELECT_CLASSES]
34+
)
35+
self.fields["format"].widget.attrs["class"] = " ".join(
36+
[self.fields["format"].widget.attrs.get("class", ""), *SELECT_CLASSES]
37+
)
2838

2939

3040
class SelectableFieldsExportForm(BaseSelectableFieldsExportForm):
3141
def __init__(self, formats, resources, **kwargs):
3242
super().__init__(formats, resources, **kwargs)
33-
self.fields["resource"].widget.attrs["class"] = " ".join(SELECT_CLASSES)
34-
self.fields["format"].widget.attrs["class"] = " ".join(SELECT_CLASSES)
43+
self.fields["resource"].widget.attrs["class"] = " ".join(
44+
[self.fields["resource"].widget.attrs.get("class", ""), *SELECT_CLASSES]
45+
)
46+
self.fields["format"].widget.attrs["class"] = " ".join(
47+
[self.fields["format"].widget.attrs.get("class", ""), *SELECT_CLASSES]
48+
)
3549

3650
for _key, field in self.fields.items():
3751
if isinstance(field, BooleanField):

src/unfold/contrib/import_export/templates/admin/import_export/export.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454

5555
<fieldset class="border border-gray-200 mb-4 rounded-md pt-3 px-3 shadow-sm dark:border-gray-800">
5656
{% for field in form.visible_fields %}
57-
<div {% if field.field.is_selectable_field %}class="selectable-field-export-row" resource-index="{{ field.field.resource_index }}"{% else %}class="form-row aligned"{% endif %}>
57+
<div {% if field.field.is_selectable_field %}class="selectable-field-export-row" resource-index="{{ field.field.resource_index }}"{% endif %}>
5858
{% if field.field.initial_field %}
5959
<p class="block font-medium mb-2 text-gray-900 text-sm dark:text-gray-200">
6060
{% trans "This exporter will export the following fields" %}

src/unfold/templates/unfold/widgets/clearable_file_input_small.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<input type="text" value="{% if widget.value %}{{ widget.value.url }}{% else %}{% trans 'Choose file to upload' %}{% endif %}" disabled class="bg-white flex-grow font-medium px-3 py-2 text-ellipsis dark:bg-gray-900 {% if widget.value %}text-gray-500 dark:text-gray-400{% else %}text-gray-300 dark:text-gray-400{% endif %}">
1818

1919
<div class="flex flex-none items-center leading-none self-stretch">
20-
<input id="{{ widget.name }}" type="{{ widget.type }}" name="{{ widget.name }}" class="opacity-0 pointer-events-none" {% include "django/forms/widgets/attrs.html" %} />
20+
<input id="{{ widget.name }}" type="{{ widget.type }}" name="{{ widget.name }}" class="{{ widget.file_input_class }}" {% include "django/forms/widgets/attrs.html" %} />
2121

2222
<label for="{{ widget.name }}" class="cursor-pointer text-gray-400 px-3 hover:text-gray-700 dark:text-gray-500 dark:hover:text-gray-200">
2323
<span class="material-symbols-outlined">file_upload</span>

src/unfold/widgets.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,18 @@ class FileFieldMixin:
288288
def get_context(self, name, value, attrs):
289289
widget = super().get_context(name, value, attrs)
290290
widget["widget"].update(
291-
{"class": " ".join([*CHECKBOX_CLASSES, *["form-check-input"]])}
291+
{
292+
"class": " ".join([*CHECKBOX_CLASSES, *["form-check-input"]]),
293+
"file_input_class": " ".join(
294+
[
295+
self.attrs.get("class", ""),
296+
*[
297+
"opacity-0",
298+
"pointer-events-none",
299+
],
300+
]
301+
),
302+
}
292303
)
293304
return widget
294305

0 commit comments

Comments
 (0)