Skip to content

Commit 276b3a6

Browse files
authored
feat: add max files property to inline and array field
1 parent e231306 commit 276b3a6

File tree

7 files changed

+20
-6
lines changed

7 files changed

+20
-6
lines changed

demo/array_field/models.py

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

55

66
class TestWithArrayField(models.Model):
7-
images = ImageListField(blank=True, null=True, upload_to="admin_test")
7+
images = ImageListField(blank=True, null=True, max_images=2, upload_to="admin_test")
88

99
class Meta:
1010
verbose_name = "(Array Field) Default"

demo/inline/admin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
class InlineEditor(ImageUploaderInline):
99
model = models.InlineItem
10+
max_num = 2
1011

1112

1213
@admin.register(models.Inline)

image_uploader_widget/postgres/fields.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ def __init__(
2121
max_length: int = 150,
2222
storage: Optional[Storage] = None,
2323
upload_to: str = "",
24+
max_images=1000,
2425
**kwargs,
2526
):
2627
self.max_length = max_length or 150
2728
self.storage = storage or default_storage
2829
self.upload_to = upload_to or ""
30+
self.max_images = max_images
2931
kwargs["base_field"] = ImageField(
3032
max_length=self.max_length, upload_to=upload_to
3133
)
@@ -91,5 +93,6 @@ def formfield(self, **kwargs):
9193
**{
9294
"form_class": ImageListFormField,
9395
**kwargs,
96+
"max_images": self.max_images,
9497
}
9598
)

image_uploader_widget/postgres/forms.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ class ImageListFormField(forms.Field):
1313
"item_invalid": _("Item %(name)s in the array did not validate:"),
1414
}
1515

16-
def __init__(self, **kwargs):
16+
def __init__(self, max_images=1000, **kwargs):
1717
kwargs.pop("base_field")
1818
self.max_length = kwargs.pop("max_length") or 150
1919

2020
self.required = False
2121
self.base_field = forms.ImageField(max_length=self.max_length)
22-
widget = ImageUploaderArrayWidget()
22+
widget = ImageUploaderArrayWidget(max_images=max_images)
2323
kwargs.setdefault("widget", widget)
2424
super().__init__(**kwargs)
2525

image_uploader_widget/postgres/widget.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,15 @@ def get_drop_icon(self):
2727
return self.drop_icon
2828

2929
def __init__(
30-
self, drop_text="", empty_text="", empty_icon="", drop_icon="", **kwargs
30+
self,
31+
max_images=1000,
32+
drop_text="",
33+
empty_text="",
34+
empty_icon="",
35+
drop_icon="",
36+
**kwargs,
3137
):
38+
self.max_images = max_images
3239
self.drop_text = drop_text
3340
self.empty_text = empty_text
3441
self.empty_icon = empty_icon
@@ -73,6 +80,7 @@ def get_context(self, name, value, attrs=None):
7380
"prefix": context["widget"]["name"],
7481
},
7582
},
83+
"max_images": self.max_images,
7684
"custom": {
7785
"drop_text": self.get_drop_text(),
7886
"empty_text": self.get_empty_text(),

image_uploader_widget/static/image_uploader_widget/js/image-uploader-inline.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,9 @@ function handleAddNewImage(root, tempFileInput, inputFile = null) {
158158
rowFileInput.files = dataTransferList.files;
159159
}
160160

161-
tempFileInput.value = null
161+
if (tempFileInput) {
162+
tempFileInput.value = null
163+
}
162164
updateAllIndexes(root);
163165
}
164166

image_uploader_widget/templates/image_uploader_widget/postgres/image_array.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<input type="hidden" name="{{ inline_admin_formset.formset.prefix }}-TOTAL_FORMS" value="0" id="id_{{ inline_admin_formset.formset.prefix }}-TOTAL_FORMS" />
1515
<input type="hidden" name="{{ inline_admin_formset.formset.prefix }}-INITIAL_FORMS" value="0" id="id_{{ inline_admin_formset.formset.prefix }}-INITIAL_FORMS" />
1616
<input type="hidden" name="{{ inline_admin_formset.formset.prefix }}-MIN_NUM_FORMS" value="0" id="id_{{ inline_admin_formset.formset.prefix }}-MIN_NUM_FORMS" />
17-
<input type="hidden" name="{{ inline_admin_formset.formset.prefix }}-MAX_NUM_FORMS" value="1000" id="id_{{ inline_admin_formset.formset.prefix }}-MAX_NUM_FORMS" />
17+
<input type="hidden" name="{{ inline_admin_formset.formset.prefix }}-MAX_NUM_FORMS" value="{{ max_images }}" id="id_{{ inline_admin_formset.formset.prefix }}-MAX_NUM_FORMS" />
1818

1919
<div class="previews">
2020
{% for item in widget.subwidgets %}

0 commit comments

Comments
 (0)