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 settings import ENV
from util import timezone
from jinja2 import Environment, PackageLoader, select_autoescape
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):
user = orders_pool.user
post = "Here are today's orders for @%s -\n\n" % user.mastodon_account()
post += orders_str + "\n\n"
if repeats > 1:
post += f"These are the same orders from the last {repeats} days\n\n"
post += "Proof of compliance is due by " + due_at.strftime("%I:%M %p") + "\n"
if verify_at is not None:
post += "Verification due by " + verify_at.strftime("%I:%M %p") + "\n"
post += "\n"
if ENV == 'dev':
post += "⚠️ DEV"
elif user.mastodon_attn_list:
post += f"ATTN - {user.mastodon_attn_list}\n"
template = template_env.get_template('mastodon_order')
post = template.render(
user=user,
orders_str=orders_str,
repeats=repeats,
due_at=due_at,
verify_at=verify_at
)
m = Mastodon(session)
return await m.statusPost(post, user)
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"
post += orders_str + "\n\n"
if repeats > 1:
post += f"These are the same orders from the last {repeats} days\n\n"
post += "Proof of compliance is due by " + due_at.strftime("%I:%M %p") + "\n"
if verify_at is not None:
post += "Verification due by " + verify_at.strftime("%I:%M %p") + "\n"
post += "\n"
post += m_url
if ENV == 'dev':
post += "\n⚠️ DEV"
template = template_env.get_template("telegram_order")
post = template.render(
orders_str = orders_str,
repeats=repeats,
due_at=due_at,
verify_at=verify_at,
m_url=m_url
)
t = Telegram(session)
await t.message_send(orders_pool.user.telegram_chat_id, post)
async def order_telegram_post_need_mastodon(session, orders_pool):
post = "Cannot issue an order without a mastodon username"
if ENV == 'dev':
post += "\n⚠️ DEV"
async def order_telegram_message(session, orders_pool, message):
template = template_env.get_template("telegram_message")
t = Telegram(session)
await t.message_send(orders_pool.user.telegram_chat_id, post)
async def order_telegram_post_none(session, orders_pool):
post = "No orders for today"
if ENV == 'dev':
post += "\n⚠️ DEV"
post = template.render(
message=message
)
t = Telegram(session)
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:
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_ORDER_NOT_ISSUED,
"Cannot issue order without mastodon username",
@ -84,7 +85,10 @@ async def order_issue(orders_pool):
if 'orders' not in orders_info:
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_ORDER_NOT_ISSUED,
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):
user = orders_pool.user
post = "@%s has failed to post proof of compliance. Here is the punishment -\n\n" % user.mastodon_account()
post += punishment_str + "\n\n"
if ENV == 'dev':
post += "⚠️ DEV"
elif user.mastodon_attn_list:
post += f"ATTN - {user.mastodon_attn_list}\n"
template = template_env.get_template('mastodon_punishment')
post = template.render(
user=user,
punishment_str=punishment_str
)
m = Mastodon(session)
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):
post = "You failed to show proof of compliance. Here is your punishment -\n\n"
post += punishment_str + "\n\n"
post += m_url
if ENV == 'dev':
post += "\n\n⚠️ DEV"
template = template_env.get_template('telegram_punishment')
post = template.render(
punishment_str=punishment_str,
m_url=m_url
)
t = Telegram(session)
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 %}