@@ -56,16 +56,16 @@ def get_action_class(action):
5656 return _action_registry .get (action , None )
5757
5858
59+ def get_hash (action_class ):
60+ return hashlib .sha1 (action_class .__name__ .encode ("utf-8" )).hexdigest ()
61+
62+
5963class ActionMixin :
6064 """Adds action form elements to Form plugin admin"""
6165
6266 def get_form (self , request , * args , ** kwargs ):
6367 """Creates new form class based adding the actions as mixins"""
64- return type (
65- "FormActionAdminForm" ,
66- (self .form , * _action_registry .values ()),
67- {}
68- )
68+ return type ("FormActionAdminForm" , (self .form , * _action_registry .values ()), {})
6969
7070 def get_fieldsets (self , request , obj = None ):
7171 fieldsets = super ().get_fieldsets (request , obj )
@@ -79,7 +79,7 @@ def get_fieldsets(self, request, obj=None):
7979 block = None ,
8080 position = - 1 ,
8181 blockname = action .verbose_name ,
82- blockattrs = dict (classes = (hash , ' action-hide' )),
82+ blockattrs = dict (classes = (f"c { hash } " , " action-hide" )),
8383 )
8484 return fieldsets
8585
@@ -126,7 +126,7 @@ def execute(self, form, request):
126126 keys = {}
127127 defaults = {
128128 "form_name" : get_option (form , "form_name" ),
129- "form_user" : None if request .user .is_anonymous else request .user
129+ "form_user" : None if request .user .is_anonymous else request .user ,
130130 }
131131 defaults .update (
132132 {
@@ -153,7 +153,9 @@ def execute(self, form, request):
153153def validate_recipients (value ):
154154 recipients = value .split ()
155155 for recipient in recipients :
156- EmailValidator (message = _ ("Please replace \" %s\" by a valid email address." ) % recipient )(recipient )
156+ EmailValidator (
157+ message = _ ('Please replace "%s" by a valid email address.' ) % recipient
158+ )(recipient )
157159
158160
159161@register
@@ -199,17 +201,25 @@ def execute(self, form, request):
199201 cleaned_data = form .cleaned_data ,
200202 form_name = getattr (form .Meta , "verbose_name" , "" ),
201203 user = request .user ,
202- user_agent = request .headers ["User-Agent" ] if "User-Agent" in request .headers else "" ,
204+ user_agent = request .headers ["User-Agent" ]
205+ if "User-Agent" in request .headers
206+ else "" ,
203207 referer = request .headers ["Referer" ] if "Referer" in request .headers else "" ,
204208 )
205209
206- html_message = render_to_string (f"djangocms_form_builder/mails/{ template_set } /mail_html.html" , context )
210+ html_message = render_to_string (
211+ f"djangocms_form_builder/mails/{ template_set } /mail_html.html" , context
212+ )
207213 try :
208- message = render_to_string (f"djangocms_form_builder/mails/{ template_set } /mail.txt" , context )
214+ message = render_to_string (
215+ f"djangocms_form_builder/mails/{ template_set } /mail.txt" , context
216+ )
209217 except TemplateDoesNotExist :
210218 message = strip_tags (html_message )
211219 try :
212- subject = render_to_string (f"djangocms_form_builder/mails/{ template_set } /subject.txt" , context )
220+ subject = render_to_string (
221+ f"djangocms_form_builder/mails/{ template_set } /subject.txt" , context
222+ )
213223 except TemplateDoesNotExist :
214224 subject = self .subject % dict (form_name = context ["form_name" ])
215225
@@ -254,7 +264,9 @@ def execute(self, form, request):
254264 message = self .get_parameter (form , "submitmessage_message" )
255265 # Overwrite the success context and render template
256266 form .get_success_context = lambda * args , ** kwargs : {"message" : message }
257- form .Meta .options ["render_success" ] = "djangocms_form_builder/actions/submit_message.html"
267+ form .Meta .options ["render_success" ] = (
268+ "djangocms_form_builder/actions/submit_message.html"
269+ )
258270 # Overwrite the default redirect to same page
259271 if form .Meta .options .get ("redirect" ) == SAME_PAGE_REDIRECT :
260272 form .Meta .options ["redirect" ] = None
@@ -280,5 +292,12 @@ class Meta:
280292 required = True ,
281293 )
282294
295+ def __init__ (self , * args , ** kwargs ):
296+ super ().__init__ (* args , ** kwargs )
297+ if args :
298+ self .fields ["redirect_link" ].required = get_hash (RedirectAction ) in args [0 ].get ("form_actions" , [])
299+
283300 def execute (self , form , request ):
284- form .Meta .options ["redirect" ] = get_link (self .get_parameter (form , "redirect_link" ))
301+ form .Meta .options ["redirect" ] = get_link (
302+ self .get_parameter (form , "redirect_link" )
303+ )
0 commit comments