~sircmpwn/fosspay

ad84d50ef6dd558d25752b75dca3777b80cefd9d — Drew DeVault 3 months ago 3fef588
yeet pystache
M emails/cancelled => emails/cancelled +2 -3
@@ 1,4 1,3 @@
Hi {{your_name}}!
Hi $your_name!

Unfortunately, {{user.email}} has chosen to cancel their monthly donation of
{{amount}}.
Unfortunately, $email has chosen to cancel their monthly donation of $amount.

M emails/declined => emails/declined +3 -3
@@ 1,12 1,12 @@
An attempt was just made to charge your card for your monthly donation to
{{your_name}} for {{amount}}. Unfortunately, your card was declined.
$your_name for $amount. Unfortunately, your card was declined.

The donation has been disabled. If you would like to, you may create a new
recurring donation here:

{{root}}
$root

Thanks!

--
{{your_name}}
$your_name

M emails/new_donation => emails/new_donation +3 -3
@@ 1,5 1,5 @@
Hi {{your_name}}!
Hi $your_name!

Good news: {{user.email}} just donated {{amount}}{{frequency}}!
Good news: $email just donated $amount$frequency!

{{comment}}
$comment

M emails/reset-password => emails/reset-password +3 -3
@@ 2,12 2,12 @@ Someone, probably you, wants to reset your donor password.

To proceed, click this link:

{{root}}/password-reset/{{user.password_reset}}
$root/password-reset/$password_reset

This link expires in 24 hours. If you don't want to change your password or you
weren't expecting this email, just ignore it.

If you have questions, send an email to {{your_email}}.
If you have questions, send an email to $your_email.

--
{{your_name}}
$your_name

M emails/thank-you => emails/thank-you +4 -9
@@ 2,18 2,13 @@ Thank you for donating!

Receipt:

{{#monthly}}
Monthly donation                {{amount}}
{{/monthly}}
{{^monthly}}
One-time donation               {{amount}}
{{/monthly}}
$summary	$amount

You can view and manage your donations online here:

{{root}}/panel
$root/panel

Thanks again! If you have questions, contact {{your_email}}.
Thanks again! If you have questions, contact $your_email.

--
{{your_name}}
$your_name

M fosspay/email.py => fosspay/email.py +40 -43
@@ 1,11 1,11 @@
import smtplib
import pystache
import os
import html.parser
from email.mime.text import MIMEText
from email.utils import localtime, format_datetime
from werkzeug.utils import secure_filename
from flask import url_for
from string import Template

from fosspay.database import db
from fosspay.objects import User, DonationType


@@ 20,15 20,14 @@ def send_thank_you(user, amount, monthly):
    smtp.starttls()
    smtp.login(_cfg("smtp-user"), _cfg("smtp-password"))
    with open("emails/thank-you") as f:
        message = MIMEText(html.parser.HTMLParser().unescape(\
            pystache.render(f.read(), {
                "user": user,
                "root": _cfg("protocol") + "://" + _cfg("domain"),
                "your_name": _cfg("your-name"),
                "amount": currency.amount("{:.2f}".format(amount / 100)),
                "monthly": monthly,
                "your_email": _cfg("your-email")
            })))
        tmpl = Template(f.read())
        message = MIMEText(tmpl.substitute(**{
            "root": _cfg("protocol") + "://" + _cfg("domain"),
            "your_name": _cfg("your-name"),
            "summary": ("Monthly donation" if monthly else "One-time donation"),
            "amount": currency.amount("{:.2f}".format(amount / 100)),
            "your_email": _cfg("your-email")
        }))
    message['Subject'] = "Thank you for your donation!"
    message['From'] = _cfg("smtp-from")
    message['To'] = user.email


@@ 44,13 43,13 @@ def send_password_reset(user):
    smtp.starttls()
    smtp.login(_cfg("smtp-user"), _cfg("smtp-password"))
    with open("emails/reset-password") as f:
        message = MIMEText(html.parser.HTMLParser().unescape(\
            pystache.render(f.read(), {
                "user": user,
                "root": _cfg("protocol") + "://" + _cfg("domain"),
                "your_name": _cfg("your-name"),
                "your_email": _cfg("your-email")
            })))
        tmpl = Template(f.read())
        message = MIMEText(tmpl.substitute(**{
            "password_reset": user.password_reset,
            "root": _cfg("protocol") + "://" + _cfg("domain"),
            "your_name": _cfg("your-name"),
            "your_email": _cfg("your-email")
        }))
    message['Subject'] = "Reset your donor password"
    message['From'] = _cfg("smtp-from")
    message['To'] = user.email


@@ 66,13 65,12 @@ def send_declined(user, amount):
    smtp.starttls()
    smtp.login(_cfg("smtp-user"), _cfg("smtp-password"))
    with open("emails/declined") as f:
        message = MIMEText(html.parser.HTMLParser().unescape(\
            pystache.render(f.read(), {
                "user": user,
                "root": _cfg("protocol") + "://" + _cfg("domain"),
                "your_name": _cfg("your-name"),
                "amount": currency.amount("{:.2f}".format(amount / 100))
            })))
        tmpl = Template(f.read())
        message = MIMEText(tmpl.substitute(**{
            "root": _cfg("protocol") + "://" + _cfg("domain"),
            "your_name": _cfg("your-name"),
            "amount": currency.amount("{:.2f}".format(amount / 100))
        }))
    message['Subject'] = "Your monthly donation was declined."
    message['From'] = _cfg("smtp-from")
    message['To'] = user.email


@@ 88,17 86,16 @@ def send_new_donation(user, donation):
    smtp.starttls()
    smtp.login(_cfg("smtp-user"), _cfg("smtp-password"))
    with open("emails/new_donation") as f:
        message = MIMEText(html.parser.HTMLParser().unescape(\
            pystache.render(f.read(), {
                "user": user,
                "root": _cfg("protocol") + "://" + _cfg("domain"),
                "your_name": _cfg("your-name"),
                "amount": currency.amount("{:.2f}".format(
                    donation.amount / 100)),
                "frequency": (" per month"
                    if donation.type == DonationType.monthly else ""),
                "comment": donation.comment or "",
            })))
        tmpl = Template(f.read())
        message = MIMEText(tmpl.substitute(**{
            "email": user.email,
            "your_name": _cfg("your-name"),
            "amount": currency.amount("{:.2f}".format(
                donation.amount / 100)),
            "frequency": (" per month"
                if donation.type == DonationType.monthly else ""),
            "comment": donation.comment or "",
        }))
    message['Subject'] = "New donation on fosspay!"
    message['From'] = _cfg("smtp-from")
    message['To'] = f"{_cfg('your-name')} <{_cfg('your-email')}>"


@@ 114,14 111,14 @@ def send_cancellation_notice(user, donation):
    smtp.starttls()
    smtp.login(_cfg("smtp-user"), _cfg("smtp-password"))
    with open("emails/cancelled") as f:
        message = MIMEText(html.parser.HTMLParser().unescape(\
            pystache.render(f.read(), {
                "user": user,
                "root": _cfg("protocol") + "://" + _cfg("domain"),
                "your_name": _cfg("your-name"),
                "amount": currency.amount("{:.2f}".format(
                    donation.amount / 100)),
            })))
        tmpl = Template(f.read())
        message = MIMEText(tmpl.substitute(**{
            "email": user.email,
            "root": _cfg("protocol") + "://" + _cfg("domain"),
            "your_name": _cfg("your-name"),
            "amount": currency.amount("{:.2f}".format(
                donation.amount / 100)),
        }))
    message['Subject'] = "A monthly donation on fosspay has been cancelled"
    message['From'] = _cfg("smtp-from")
    message['To'] = f"{_cfg('your-name')} <{_cfg('your-email')}>"

M requirements.txt => requirements.txt +0 -1
@@ 7,4 7,3 @@ psycopg2
bcrypt
gunicorn
sqlalchemy-utils
pystache