From 80575cbced2d46b164c7421fb7cc35f0663272b9 Mon Sep 17 00:00:00 2001 From: rekt-hard <72449192+rekt-hard@users.noreply.github.com> Date: Wed, 21 Apr 2021 16:10:30 +0200 Subject: [PATCH] feature: override email welcome template * overrides flask-security welcome template --- MANIFEST.in | 5 ++- invenio_config_tugraz/config.py | 13 ++++-- invenio_config_tugraz/ext.py | 1 + .../templates/security/email/welcome.html | 26 +++++++++++ .../templates/security/email/welcome.txt | 14 ++++++ invenio_config_tugraz/views.py | 44 +++++++++++++++++++ setup.py | 3 ++ 7 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 invenio_config_tugraz/templates/security/email/welcome.html create mode 100644 invenio_config_tugraz/templates/security/email/welcome.txt create mode 100644 invenio_config_tugraz/views.py diff --git a/MANIFEST.in b/MANIFEST.in index 6bc1485..2eab7ae 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -34,15 +34,18 @@ recursive-include docs *.py recursive-include docs *.rst recursive-include docs *.txt recursive-include docs Makefile -recursive-include invenio_config_tugraz *.html recursive-include tests *.py + # added by check_manifest.py recursive-include invenio_config_tugraz *.crt recursive-include invenio_config_tugraz *.json recursive-include invenio_config_tugraz *.key recursive-include invenio_config_tugraz *.xml recursive-include invenio_config_tugraz *.gitkeep +recursive-include invenio_config_tugraz *.txt +recursive-include invenio_config_tugraz *.html + # added by check-manifest recursive-include invenio_config_tugraz *.csv diff --git a/invenio_config_tugraz/config.py b/invenio_config_tugraz/config.py index da192a0..06af9f3 100644 --- a/invenio_config_tugraz/config.py +++ b/invenio_config_tugraz/config.py @@ -172,6 +172,15 @@ SECURITY_CONFIRMABLE = False Instead user will get a welcome email. """ +# Flask-Security +# ============= +# See https://pythonhosted.org/Flask-Security/configuration.html +SECURITY_EMAIL_PLAINTEXT = True +"""Render email content as plaintext.""" + +SECURITY_EMAIL_HTML = False +"""Render email content as HTML.""" + ACCOUNTS = True """Tells if the templates should use the accounts module. @@ -208,9 +217,7 @@ RECAPTCHA_PRIVATE_KEY = None # See: # https://invenio-rdm-records.readthedocs.io/en/latest/configuration.html # -RDM_RECORDS_USER_FIXTURE_PASSWORDS = { - "info@tugraz.at": None -} +RDM_RECORDS_USER_FIXTURE_PASSWORDS = {"info@tugraz.at": None} """Overrides for the user fixtures' passwords. The password set for a user fixture in this dictionary overrides the password set in the ``users.yaml`` file. This can be used to set custom diff --git a/invenio_config_tugraz/ext.py b/invenio_config_tugraz/ext.py index beb0554..0451d7f 100644 --- a/invenio_config_tugraz/ext.py +++ b/invenio_config_tugraz/ext.py @@ -7,6 +7,7 @@ # details. """invenio module that adds tugraz configs.""" +from flask import Blueprint from . import config diff --git a/invenio_config_tugraz/templates/security/email/welcome.html b/invenio_config_tugraz/templates/security/email/welcome.html new file mode 100644 index 0000000..5c7eb5d --- /dev/null +++ b/invenio_config_tugraz/templates/security/email/welcome.html @@ -0,0 +1,26 @@ +

+ {% trans salut=current_userprofile.full_name or user.email %} + Dear {{ salut }}! + {% endtrans %} +

+ +

+ {{ _('To help you get started, here are some useful links:') }} +

+ +

+ {{ _('TU Graz Repository') }}
+ {{ _('Reference Guide') }}
+ {{ _('Terms and Conditions') }}
+

+ +{% if security.confirmable %} +

{{ _('You can confirm your email through the link below:') }}

+ +

{{ _('Confirm my account') }}

+{% endif %} + +

+ {{ _('Best regards') }}
+ {{ _('TU Graz Repository Team') }} +

diff --git a/invenio_config_tugraz/templates/security/email/welcome.txt b/invenio_config_tugraz/templates/security/email/welcome.txt new file mode 100644 index 0000000..0a02f92 --- /dev/null +++ b/invenio_config_tugraz/templates/security/email/welcome.txt @@ -0,0 +1,14 @@ +{{ _('Dear %(email)s!', email=user.email) }} +{{ _('To help you get started, here are some useful links:') }} + + {{ _('Repository')}}: https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_theme_tugraz.index') }} + {{ _('Repository Guide')}}: https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_theme_tugraz.guide') }} + {{ _('Terms And Conditions')}}: https://{{ config.SITE_HOSTNAME }}{{ url_for('invenio_theme_tugraz.terms') }} + +{% if security.confirmable %} +{{ _('You can confirm your email through the link below:') }} +{{ confirmation_link }}"> +{% endif %} + +{{ _('Best regards') }} +{{ _('TU Graz Repository Team') }} diff --git a/invenio_config_tugraz/views.py b/invenio_config_tugraz/views.py new file mode 100644 index 0000000..ab35cc4 --- /dev/null +++ b/invenio_config_tugraz/views.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2020-2021 Graz University of Technology. +# +# invenio-config-tugraz is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""invenio module for TUGRAZ config.""" + +from os import environ +from typing import Dict + +from elasticsearch_dsl.utils import AttrDict +from flask import Blueprint, current_app + + +def ui_blueprint(app): + """Blueprint for the routes and resources provided by invenio-config-tugraz.""" + blueprint = Blueprint( + "invenio_config_tugraz", + __name__, + template_folder="templates", + ) + + @blueprint.before_app_first_request + def rank_higher(): + """Rank this modules blueprint higher than blueprint of security module.""" + blueprints = current_app._blueprint_order + our_index = None + security_index = None + + for index, bp in enumerate(blueprints): + if bp.name == "security": + security_index = index + if bp.name == "invenio_config_tugraz": + our_index = index + + if (security_index is not None) and (our_index > security_index): + temp = blueprints[security_index] + blueprints[security_index] = blueprints[our_index] + blueprints[our_index] = temp + + return blueprint diff --git a/setup.py b/setup.py index a075d1a..596f1d2 100644 --- a/setup.py +++ b/setup.py @@ -84,6 +84,9 @@ setup( "invenio_base.apps": [ "invenio_config_tugraz = invenio_config_tugraz:InvenioConfigTugraz", ], + "invenio_base.blueprints": [ + "invenio_config_tugraz = invenio_config_tugraz.views:ui_blueprint", + ], "invenio_i18n.translations": [ "messages = invenio_config_tugraz", ],