Use jinja templates

Modify 2 files
This commit is contained in:
John Groszko 2026-04-13 22:14:05 -05:00
parent 556c1dd7eb
commit 05d5093e23
8 changed files with 114 additions and 49 deletions

101
orders.py
View file

@ -10,57 +10,55 @@ from mastodon import Mastodon
from telegram.telegram import Telegram from telegram.telegram import Telegram
from settings import ENV from settings import ENV
from util import timezone from util import timezone
from jinja2 import Environment, PackageLoader, select_autoescape
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
template_env = Environment(
loader=PackageLoader("orders"),
autoescape=select_autoescape()
)
template_env.globals['ENV'] = ENV
def filter_short_time(value):
return value.strftime("%I:%M %p")
template_env.filters["short_time"] = filter_short_time
async def order_mastodon_post(session, orders_pool, orders_str, repeats, due_at, verify_at=None): async def order_mastodon_post(session, orders_pool, orders_str, repeats, due_at, verify_at=None):
user = orders_pool.user user = orders_pool.user
post = "Here are today's orders for @%s -\n\n" % user.mastodon_account() template = template_env.get_template('mastodon_order')
post += orders_str + "\n\n" post = template.render(
if repeats > 1: user=user,
post += f"These are the same orders from the last {repeats} days\n\n" orders_str=orders_str,
post += "Proof of compliance is due by " + due_at.strftime("%I:%M %p") + "\n" repeats=repeats,
if verify_at is not None: due_at=due_at,
post += "Verification due by " + verify_at.strftime("%I:%M %p") + "\n" verify_at=verify_at
post += "\n" )
if ENV == 'dev':
post += "⚠️ DEV"
elif user.mastodon_attn_list:
post += f"ATTN - {user.mastodon_attn_list}\n"
m = Mastodon(session) m = Mastodon(session)
return await m.statusPost(post, user) return await m.statusPost(post, user)
async def order_telegram_post(session, orders_pool, orders_str, repeats, due_at, m_url, verify_at=None): async def order_telegram_post(session, orders_pool, orders_str, repeats, due_at, m_url, verify_at=None):
post = "Here are your orders -\n\n" template = template_env.get_template("telegram_order")
post += orders_str + "\n\n"
if repeats > 1: post = template.render(
post += f"These are the same orders from the last {repeats} days\n\n" orders_str = orders_str,
post += "Proof of compliance is due by " + due_at.strftime("%I:%M %p") + "\n" repeats=repeats,
if verify_at is not None: due_at=due_at,
post += "Verification due by " + verify_at.strftime("%I:%M %p") + "\n" verify_at=verify_at,
post += "\n" m_url=m_url
post += m_url )
if ENV == 'dev':
post += "\n⚠️ DEV"
t = Telegram(session) t = Telegram(session)
await t.message_send(orders_pool.user.telegram_chat_id, post) await t.message_send(orders_pool.user.telegram_chat_id, post)
async def order_telegram_post_need_mastodon(session, orders_pool): async def order_telegram_message(session, orders_pool, message):
post = "Cannot issue an order without a mastodon username" template = template_env.get_template("telegram_message")
if ENV == 'dev':
post += "\n⚠️ DEV"
t = Telegram(session) post = template.render(
await t.message_send(orders_pool.user.telegram_chat_id, post) message=message
)
async def order_telegram_post_none(session, orders_pool):
post = "No orders for today"
if ENV == 'dev':
post += "\n⚠️ DEV"
t = Telegram(session) t = Telegram(session)
await t.message_send(orders_pool.user.telegram_chat_id, post) await t.message_send(orders_pool.user.telegram_chat_id, post)
@ -71,7 +69,10 @@ async def order_issue(orders_pool):
if user.mastodon_username is None: if user.mastodon_username is None:
logger.info(f"{orders_pool} - Cannot issue order without mastodon username") logger.info(f"{orders_pool} - Cannot issue order without mastodon username")
await order_telegram_post_need_mastodon(session, orders_pool) await order_telegram_message(
session, orders_pool,
"Cannot issue order without mastodon username"
)
timeline_event_put( timeline_event_put(
TIMELINE_ORDER_NOT_ISSUED, TIMELINE_ORDER_NOT_ISSUED,
"Cannot issue order without mastodon username", "Cannot issue order without mastodon username",
@ -84,7 +85,10 @@ async def order_issue(orders_pool):
if 'orders' not in orders_info: if 'orders' not in orders_info:
logger.info(f"{orders_pool} - {orders_info['reason']}") logger.info(f"{orders_pool} - {orders_info['reason']}")
await order_telegram_post_none(session, orders_pool) await order_telegram_message(
session, orders_pool,
"No orders this time"
)
timeline_event_put( timeline_event_put(
TIMELINE_ORDER_NOT_ISSUED, TIMELINE_ORDER_NOT_ISSUED,
orders_info['reason'], orders_info['reason'],
@ -156,13 +160,11 @@ async def order_issue(orders_pool):
async def punishment_mastodon_post(session, orders_pool, punishment_str, reply_id=None): async def punishment_mastodon_post(session, orders_pool, punishment_str, reply_id=None):
user = orders_pool.user user = orders_pool.user
post = "@%s has failed to post proof of compliance. Here is the punishment -\n\n" % user.mastodon_account() template = template_env.get_template('mastodon_punishment')
post += punishment_str + "\n\n" post = template.render(
user=user,
if ENV == 'dev': punishment_str=punishment_str
post += "⚠️ DEV" )
elif user.mastodon_attn_list:
post += f"ATTN - {user.mastodon_attn_list}\n"
m = Mastodon(session) m = Mastodon(session)
return await m.statusPost( return await m.statusPost(
@ -172,11 +174,12 @@ async def punishment_mastodon_post(session, orders_pool, punishment_str, reply_i
) )
async def punishment_telegram_post(session, orders_pool, punishment_str, m_url): async def punishment_telegram_post(session, orders_pool, punishment_str, m_url):
post = "You failed to show proof of compliance. Here is your punishment -\n\n" template = template_env.get_template('telegram_punishment')
post += punishment_str + "\n\n"
post += m_url post = template.render(
if ENV == 'dev': punishment_str=punishment_str,
post += "\n\n⚠️ DEV" m_url=m_url
)
t = Telegram(session) t = Telegram(session)
await t.message_send(orders_pool.user.telegram_chat_id, post) await t.message_send(orders_pool.user.telegram_chat_id, post)

9
templates/mastodon_base Normal file
View file

@ -0,0 +1,9 @@
{% block main %}{% endblock %}
{% block attn %}
{% if user.mastodon_attn_list %}
ATTN - {{user.mastodon_attn_list}}
{% endif %}
{% endblock %}
{% block env %}
{% if ENV == 'dev' %}⚠️ DEV{% endif %}
{% endblock %}

16
templates/mastodon_order Normal file
View file

@ -0,0 +1,16 @@
{% extends "mastodon_base" %}
{% block main %}
Here are today's orders for @{{user.mastodon_account()}}
{{orders_str}}
{% if repeats > 1 %}
These are the same orders from the last {{repeats}} days.
{% endif %}
Proof of compliance is due by {{due_at|short_time}}
{% if verify_at %}
Verification due by {{verify_at|short_time}}
{% endif %}
{% endblock %}

View file

@ -0,0 +1,7 @@
{% extends "mastodon_base" %}
{% block main %}
@{{user.mastodon_account()}} failed to show proof of compliance. Here is the punishment -
{{punishment_str}}
{% endblock %}

2
templates/telegram_base Normal file
View file

@ -0,0 +1,2 @@
{% block main %}{% endblock %}
{% if ENV == 'dev' %}⚠️ DEV{% endif %}

View file

@ -0,0 +1,4 @@
{% extends "telegram_base" %}
{% block main %}
{{message}}
{% endblock %}

15
templates/telegram_order Normal file
View file

@ -0,0 +1,15 @@
{% extends "telegram_base" %}
{% block main %}
Here are your orders -
{{orders_str}}
{% if repeats > 1 %}
These are the same orders from the last {{repeats}} days.
{% endif %}
Proof of compliance is due by {{due_at|short_time}}
{% if verify_at %}
Proof of verification is due by {{verify_at|short_time}}
{% endif %}
{{m_url}}
{% endblock %}

View file

@ -0,0 +1,9 @@
{% extends "telegram_base" %}
{% block main %}
You failed to show proof of compliance. Here is your punishment -
{{punishment_str}}
{{m_url}}
{% endblock %}