mirror of
https://github.com/hrfee/jellyfin-accounts.git
synced 2024-12-22 09:00:14 +00:00
Email generation as part of build process
Moved email source to separate directory, added the task "generate-emails" to create html files.
This commit is contained in:
parent
3e53bcab27
commit
e80b233af2
2
.gitignore
vendored
2
.gitignore
vendored
@ -19,3 +19,5 @@ requirements.txt
|
|||||||
video/
|
video/
|
||||||
scss/bs5/*.css*
|
scss/bs5/*.css*
|
||||||
scss/bs4/*.css*
|
scss/bs4/*.css*
|
||||||
|
mail/*.html
|
||||||
|
jellyfin_accounts/data/*.html
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,40 +0,0 @@
|
|||||||
<mjml>
|
|
||||||
<mj-head>
|
|
||||||
<mj-attributes>
|
|
||||||
<mj-class name="bg" background-color="#101010" />
|
|
||||||
<mj-class name="bg2" background-color="#242424" />
|
|
||||||
<mj-class name="text" color="rgba(255,255,255,0.8)" />
|
|
||||||
<mj-class name="bold" color="rgba(255,255,255,0.87)" />
|
|
||||||
<mj-class name="secondary" color="rgb(153,153,153)" />
|
|
||||||
<mj-class name="blue" background-color="rgb(0,164,220)" />
|
|
||||||
</mj-attributes>
|
|
||||||
<mj-font name="Quicksand" href="https://fonts.googleapis.com/css2?family=Quicksand" />
|
|
||||||
<mj-font name="Noto Sans" href="https://fonts.googleapis.com/css2?family=Noto+Sans" />
|
|
||||||
</mj-head>
|
|
||||||
<mj-body>
|
|
||||||
<mj-section mj-class="bg2">
|
|
||||||
<mj-column>
|
|
||||||
<mj-text mj-class="bold" font-size="25px" font-family="Quicksand, Noto Sans, Helvetica, Arial, sans-serif"> Jellyfin </mj-text>
|
|
||||||
</mj-column>
|
|
||||||
</mj-section>
|
|
||||||
<mj-section mj-class="bg">
|
|
||||||
<mj-column>
|
|
||||||
<mj-text mj-class="text" font-size="16px" font-family="Noto Sans, Helvetica, Arial, sans-serif">
|
|
||||||
<p>Hi {{ username }},</p>
|
|
||||||
<p> Someone has recently requested a password reset on Jellyfin.</p>
|
|
||||||
<p>If this was you, enter the below pin into the prompt.</p>
|
|
||||||
<p>The code will expire on {{ expiry_date }}, at {{ expiry_time }}, which is in {{ expires_in }}.</p>
|
|
||||||
<p>If this wasn't you, please ignore this email.</p>
|
|
||||||
</mj-text>
|
|
||||||
<mj-button mj-class="blue bold">{{ pin }}</mj-button>
|
|
||||||
</mj-column>
|
|
||||||
</mj-section>
|
|
||||||
<mj-section mj-class="bg2">
|
|
||||||
<mj-column>
|
|
||||||
<mj-text mj-class="secondary" font-style="italic" font-size="14px">
|
|
||||||
{{ message }}
|
|
||||||
</mj-text>
|
|
||||||
</mj-column>
|
|
||||||
</mj-section>
|
|
||||||
</body>
|
|
||||||
</mjml>
|
|
34
mail/generate.py
Executable file
34
mail/generate.py
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
import subprocess
|
||||||
|
import shutil
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
def runcmd(cmd):
|
||||||
|
proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
|
||||||
|
return proc.communicate()
|
||||||
|
|
||||||
|
local_path = Path(__file__).resolve().parent
|
||||||
|
node_bin = local_path.parent / 'node_modules' / '.bin'
|
||||||
|
|
||||||
|
for mjml in [f for f in local_path.iterdir() if f.is_file() and 'mjml' in f.suffix]:
|
||||||
|
print(f'Compiling {mjml.name}')
|
||||||
|
fname = mjml.with_suffix(".html")
|
||||||
|
runcmd(f'{str(node_bin / "mjml")} {str(mjml)} -o {str(fname)}')
|
||||||
|
if fname.is_file():
|
||||||
|
print('Done.')
|
||||||
|
|
||||||
|
html = [f for f in local_path.iterdir() if f.is_file() and 'html' in f.suffix]
|
||||||
|
|
||||||
|
output = local_path.parent / 'jellyfin_accounts' / 'data'
|
||||||
|
|
||||||
|
for f in html:
|
||||||
|
shutil.copy(str(f),
|
||||||
|
str(output / f.name))
|
||||||
|
print(f'Copied {f.name} to {str(output / f.name)}')
|
||||||
|
txtfile = f.with_suffix('.txt')
|
||||||
|
if txtfile.is_file():
|
||||||
|
shutil.copy(str(txtfile),
|
||||||
|
str(output / txtfile.name))
|
||||||
|
print(f'Copied {txtfile.name} to {str(output / txtfile.name)}')
|
||||||
|
else:
|
||||||
|
print(f'Warning: {txtfile.name} does not exist. Text versions of emails should be supplied.')
|
||||||
|
|
@ -8,8 +8,8 @@ license = "MIT"
|
|||||||
homepage = "https://github.com/hrfee/jellyfin-accounts"
|
homepage = "https://github.com/hrfee/jellyfin-accounts"
|
||||||
repository = "https://github.com/hrfee/jellyfin-accounts"
|
repository = "https://github.com/hrfee/jellyfin-accounts"
|
||||||
keywords = ["jellyfin", "jf-accounts"]
|
keywords = ["jellyfin", "jf-accounts"]
|
||||||
include = ["jellyfin_accounts/data/*", "jellyfin_accounts/data/static/*.css"]
|
include = ["jellyfin_accounts/data/*", "jellyfin_accounts/data/static/*.css", "jellyfin_accounts/data/*.html"]
|
||||||
exclude = ["images/*", "scss/*"]
|
exclude = ["images/*", "scss/*", "mail/*"]
|
||||||
classifiers = [
|
classifiers = [
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
"License :: OSI Approved :: MIT License",
|
"License :: OSI Approved :: MIT License",
|
||||||
@ -43,6 +43,8 @@ jf-accounts = 'jellyfin_accounts:main'
|
|||||||
pre_compile-css = "task get-npm-deps"
|
pre_compile-css = "task get-npm-deps"
|
||||||
compile-css = "python scss/compile.py"
|
compile-css = "python scss/compile.py"
|
||||||
get-npm-deps = "python scss/get_node_deps.py"
|
get-npm-deps = "python scss/get_node_deps.py"
|
||||||
|
pre_generate-emails = "task get-npm-deps"
|
||||||
|
generate-emails = "python mail/generate.py"
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["poetry>=0.12"]
|
requires = ["poetry>=0.12"]
|
||||||
|
Loading…
Reference in New Issue
Block a user