1616from markupsafe import Markup
1717from notifications_utils .countries .data import Postage
1818from notifications_utils .eventlet import SoftEventletTimeout
19+ from notifications_utils .field import Field as UtilsField
1920from notifications_utils .formatters import strip_all_whitespace
2021from notifications_utils .insensitive_dict import InsensitiveDict , InsensitiveSet
2122from notifications_utils .recipient_validation .email_address import format_email_address , validate_email_address
@@ -1479,6 +1480,10 @@ def validate_address(self, field):
14791480
14801481
14811482class EmailTemplateForm (BaseTemplateForm , TemplateNameMixin ):
1483+ def __init__ (self , * args , email_file_filenames = None , ** kwargs ):
1484+ super ().__init__ ()
1485+ self .email_file_filenames = email_file_filenames or set ()
1486+
14821487 subject = GovukTextareaField ("Subject" , validators = [NotifyDataRequired (thing = "the subject of the email" )])
14831488 has_unsubscribe_link = GovukCheckboxField (
14841489 "Add an unsubscribe link" ,
@@ -1492,6 +1497,10 @@ class EmailTemplateForm(BaseTemplateForm, TemplateNameMixin):
14921497 },
14931498 )
14941499
1500+ def validate_subject (self , field ):
1501+ if InsensitiveSet (UtilsField (field .data ).placeholders ).intersection (self .email_file_filenames ):
1502+ raise ValidationError ("You can put a file in the subject" )
1503+
14951504
14961505class LetterTemplateForm (BaseTemplateForm , TemplateNameMixin ):
14971506 subject = GovukTextareaField ("Heading" , validators = [NotifyDataRequired (thing = "a main heading for your letter" )])
0 commit comments