11import json
22from typing import Any , List
3+
34from django import forms
45from django .contrib .postgres .forms import SplitArrayWidget
5- from django .core .files .uploadedfile import InMemoryUploadedFile
66from django .core .files .storage import default_storage
7+ from django .core .files .uploadedfile import InMemoryUploadedFile
8+
79
810class ImageUploaderArrayWidget (SplitArrayWidget ):
911 template_name = "postgres/widgets/image_array.html"
@@ -14,23 +16,18 @@ class ImageUploaderArrayWidget(SplitArrayWidget):
1416
1517 def get_drop_text (self ):
1618 return self .drop_text
17-
19+
1820 def get_empty_text (self ):
1921 return self .empty_text
2022
2123 def get_empty_icon (self ):
2224 return self .empty_icon
23-
25+
2426 def get_drop_icon (self ):
2527 return self .drop_icon
2628
2729 def __init__ (
28- self ,
29- drop_text = "" ,
30- empty_text = "" ,
31- empty_icon = "" ,
32- drop_icon = "" ,
33- ** kwargs
30+ self , drop_text = "" , empty_text = "" , empty_icon = "" , drop_icon = "" , ** kwargs
3431 ):
3532 self .drop_text = drop_text
3633 self .empty_text = empty_text
@@ -48,48 +45,49 @@ def _get_image(self, path):
4845 def get_files_from_value (self , value : Any ) -> List [str ]:
4946 return [self ._get_image (name ) for name in value ]
5047
51- def get_context (self , name , value , attrs = None ):
48+ def get_context (self , name , value , attrs = None ):
5249 value_raw = value or []
5350 value = list (filter (None , self .get_files_from_value ([* value_raw ])))
5451 self .size = len (value )
55-
52+
5653 context = super (ImageUploaderArrayWidget , self ).get_context (name , value , attrs )
5754 if not context :
5855 context = {}
5956
6057 for i in range (0 , len (value )):
61- context ['widget' ]['subwidgets' ][i ]['value' ] = value [i ]
62- context ['widget' ]['subwidgets' ][i ]['value_raw' ] = value_raw [i ]
63-
58+ context ["widget" ]["subwidgets" ][i ]["value" ] = value [i ]
59+ context ["widget" ]["subwidgets" ][i ]["value_raw" ] = value_raw [i ]
6460
6561 return {
6662 ** context ,
67- 'inline_admin_formset' : {
68- 'inline_formset_data' : json .dumps ({
69- 'name' : context ['widget' ]['name' ],
70- 'options' : {
71- 'prefix' : context ['widget' ]['name' ],
63+ "inline_admin_formset" : {
64+ "inline_formset_data" : json .dumps (
65+ {
66+ "name" : context ["widget" ]["name" ],
67+ "options" : {
68+ "prefix" : context ["widget" ]["name" ],
69+ },
7270 }
73- } ),
74- ' formset' : {
75- ' prefix' : context [' widget' ][ ' name' ],
71+ ),
72+ " formset" : {
73+ " prefix" : context [" widget" ][ " name" ],
7674 },
7775 },
7876 "custom" : {
7977 "drop_text" : self .get_drop_text (),
8078 "empty_text" : self .get_empty_text (),
8179 "empty_icon" : self .get_empty_icon (),
8280 "drop_icon" : self .get_drop_icon (),
83- }
81+ },
8482 }
85-
83+
8684 def value_from_datadict (self , data , files , name ):
87- total_forms = int (data .get (' images-TOTAL_FORMS' ))
85+ total_forms = int (data .get (" images-TOTAL_FORMS" ))
8886 result = []
8987 for i in range (0 , total_forms ):
90- image_file = files .get (f' images-{ i } -image' )
91- image_raw = data .get (f' images-{ i } -RAW' )
92- image_delete = data .get (f' images-{ i } -DELETE' )
88+ image_file = files .get (f" images-{ i } -image" )
89+ image_raw = data .get (f" images-{ i } -RAW" )
90+ image_delete = data .get (f" images-{ i } -DELETE" )
9391 if image_delete :
9492 continue
9593
@@ -103,17 +101,15 @@ def value_from_datadict(self, data, files, name):
103101 @property
104102 def needs_multipart_form (self ):
105103 return True
106-
104+
107105 @property
108106 def media (self ):
109107 return forms .Media (
110108 js = (
111- ' admin/js/image-uploader-modal.js' ,
112- ' admin/js/image-uploader-inline.js' ,
109+ " admin/js/image-uploader-modal.js" ,
110+ " admin/js/image-uploader-inline.js" ,
113111 ),
114112 css = {
115- 'screen' : (
116- 'admin/css/image-uploader-inline.css' ,
117- ),
113+ "screen" : ("admin/css/image-uploader-inline.css" ,),
118114 },
119- )
115+ )
0 commit comments