Use jinja templates
Modify 2 files
This commit is contained in:
parent
556c1dd7eb
commit
05d5093e23
8 changed files with 114 additions and 49 deletions
101
orders.py
101
orders.py
|
|
@ -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
9
templates/mastodon_base
Normal 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
16
templates/mastodon_order
Normal 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 %}
|
||||||
7
templates/mastodon_punishment
Normal file
7
templates/mastodon_punishment
Normal 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
2
templates/telegram_base
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
{% block main %}{% endblock %}
|
||||||
|
{% if ENV == 'dev' %}⚠️ DEV{% endif %}
|
||||||
4
templates/telegram_message
Normal file
4
templates/telegram_message
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{% extends "telegram_base" %}
|
||||||
|
{% block main %}
|
||||||
|
{{message}}
|
||||||
|
{% endblock %}
|
||||||
15
templates/telegram_order
Normal file
15
templates/telegram_order
Normal 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 %}
|
||||||
9
templates/telegram_punishment
Normal file
9
templates/telegram_punishment
Normal 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 %}
|
||||||
Loading…
Reference in a new issue