def test_sms_preview_adds_newlines(): template = SMSPreviewTemplate({'content': """ the quick brown fox """}) template.prefix = None template.sender = None assert '<br>' in str(template)
def get_sms_thread(service_id, user_number): for notification in sorted(( notification_api_client.get_notifications_for_service(service_id, to=user_number, template_type='sms')['notifications'] + service_api_client.get_inbound_sms(service_id, user_number=user_number)['data'] ), key=lambda notification: notification['created_at']): is_inbound = ('notify_number' in notification) redact_personalisation = not is_inbound and notification['template']['redact_personalisation'] if redact_personalisation: notification['personalisation'] = {} yield { 'inbound': is_inbound, 'content': SMSPreviewTemplate( { 'content': ( notification['content'] if is_inbound else notification['template']['content'] ) }, notification.get('personalisation'), downgrade_non_sms_characters=(not is_inbound), redact_missing_personalisation=redact_personalisation, ), 'created_at': notification['created_at'], 'status': notification.get('status'), 'id': notification['id'], }
def styleguide(): if not current_app.config['SHOW_STYLEGUIDE']: abort(404) class FormExamples(Form): username = StringField(u'Username') password = PasswordField(u'Password', [validators.required()]) code = StringField('Enter code') message = TextAreaField(u'Message') file_upload = FileField('Upload a CSV file to add your recipients’ details') sms = "Your vehicle tax for ((registration number)) is due on ((date)). Renew online at www.gov.uk/vehicle-tax" form = FormExamples() form.message.data = sms form.validate() template = SMSPreviewTemplate({'content': sms, 'template_type': 'sms'}) return render_template( 'views/styleguide.html', form=form, template=template )
def test_sms_messages_dont_downgrade_non_gsm_if_setting_is_false(mock_gsm_encode): template = str(SMSPreviewTemplate( {'content': '😎'}, prefix='👉', downgrade_non_gsm_characters=False, )) assert '👉: 😎' in str(template) assert mock_gsm_encode.called is False
def get_template( template, service, show_recipient=False, letter_preview_url=None, page_count=1, redact_missing_personalisation=False, email_reply_to=None, sms_sender=None, ): # Local Jinja support - add USE_LOCAL_JINJA_TEMPLATES=True to .env # Add a folder to the project root called 'jinja_templates' with copies from notification-utls repo of: # 'email_preview_template.jinja2' # 'sms_preview_template.jinja2' debug_template_path = path.dirname( path.abspath(__file__)) if os.environ.get( "USE_LOCAL_JINJA_TEMPLATES") == "True" else None if "email" == template["template_type"]: return EmailPreviewTemplate( template, from_name=service.name, from_address="{}@notifications.service.gov.uk".format( service.email_from), show_recipient=show_recipient, redact_missing_personalisation=redact_missing_personalisation, reply_to=email_reply_to, jinja_path=debug_template_path, **get_email_logo_options(service), ) if "sms" == template["template_type"]: return SMSPreviewTemplate( template, prefix=service.name, show_prefix=service.prefix_sms, sender=sms_sender, show_sender=bool(sms_sender), show_recipient=show_recipient, redact_missing_personalisation=redact_missing_personalisation, jinja_path=debug_template_path, ) if "letter" == template["template_type"]: if letter_preview_url: return LetterImageTemplate( template, image_url=letter_preview_url, page_count=int(page_count), contact_block=template["reply_to_text"], postage=template["postage"], ) else: return LetterPreviewTemplate( template, contact_block=template["reply_to_text"], admin_base_url=current_app.config["ADMIN_BASE_URL"], redact_missing_personalisation=redact_missing_personalisation, )
def test_sms_message_preview_shows_sender( show_sender, content_to_look_for, ): assert content_to_look_for in str(SMSPreviewTemplate( {'content': 'foo'}, sender='GOVUK', show_sender=show_sender, ))
def get_sample_template(template_type): if template_type == 'email': return EmailPreviewTemplate({'content': 'any', 'subject': '', 'template_type': 'email'}) if template_type == 'sms': return SMSPreviewTemplate({'content': 'any', 'template_type': 'sms'}) if template_type == 'letter': return LetterImageTemplate( {'content': 'any', 'subject': '', 'template_type': 'letter'}, postage='second', image_url='x', page_count=1 )
def get_template( template, service, show_recipient=False, letter_preview_url=None, page_count=1, redact_missing_personalisation=False, email_reply_to=None, sms_sender=None, ): if 'email' == template['template_type']: return EmailPreviewTemplate( template, from_name=service.name, from_address='{}@notifications.service.gov.uk'.format(service.email_from), show_recipient=show_recipient, redact_missing_personalisation=redact_missing_personalisation, reply_to=email_reply_to, ) if 'sms' == template['template_type']: return SMSPreviewTemplate( template, prefix=service.name, show_prefix=service.prefix_sms, sender=sms_sender, show_sender=bool(sms_sender), show_recipient=show_recipient, redact_missing_personalisation=redact_missing_personalisation, ) if 'letter' == template['template_type']: if letter_preview_url: return LetterImageTemplate( template, image_url=letter_preview_url, page_count=int(page_count), contact_block=template['reply_to_text'], postage=template['postage'], ) else: return LetterPreviewTemplate( template, contact_block=template['reply_to_text'], admin_base_url=current_app.config['ADMIN_BASE_URL'], redact_missing_personalisation=redact_missing_personalisation, ) if 'broadcast' == template['template_type']: return BroadcastPreviewTemplate( template, )
def get_sample_template(template_type): if template_type == 'email': return EmailPreviewTemplate({ 'content': 'any', 'subject': '', 'template_type': 'email' }) if template_type == 'sms': return SMSPreviewTemplate({'content': 'any', 'template_type': 'sms'}) if template_type == 'letter': return LetterImageTemplate({ 'content': 'any', 'subject': '', 'template_type': 'letter' })
def test_URLs_get_escaped_in_sms(url, expected_html): assert expected_html in str(SMSPreviewTemplate({'content': url, 'template_type': 'sms'}))
def test_sms_preview_adds_newlines(nl2br): content = "the\nquick\n\nbrown fox" str(SMSPreviewTemplate({'content': content})) nl2br.assert_called_once_with(content)
def test_sms_message_preview_hides_sender_by_default(): assert SMSPreviewTemplate({'content': 'foo'}).show_sender is False
str(WithSubjectTemplate(template_dict)), WithSubjectTemplate(template_dict).subject, ]: assert isinstance(output, Markup) @pytest.mark.parametrize('template_instance, expected_placeholders', [ ( SMSMessageTemplate( {"content": "((content))", "subject": "((subject))"}, ), ['content'], ), ( SMSPreviewTemplate( {"content": "((content))", "subject": "((subject))"}, ), ['content'], ), ( PlainTextEmailTemplate( {"content": "((content))", "subject": "((subject))"}, ), ['content', 'subject'], ), ( HTMLEmailTemplate( {"content": "((content))", "subject": "((subject))"}, ), ['content', 'subject'], ),