Files
MoviePilot/database/versions/486e56a62dcb_2_1_5.py
T

55 lines
1.5 KiB
Python

"""2.1.5
Revision ID: 486e56a62dcb
Revises: 89d24811e894
Create Date: 2025-05-13 19:49:51.271319
"""
import re
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '486e56a62dcb'
down_revision = '89d24811e894'
branch_labels = None
depends_on = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
### 将消息模板中的 `season`(为单数字, 且重命名需要这个字段)替换为 `season_fmt`(Sxx格式字符串) ###
systemconfig = sa.table(
"systemconfig",
sa.column("key", sa.String()),
sa.column("value", sa.JSON()),
)
connection = op.get_bind()
key = "NotificationTemplates"
row = connection.execute(
sa.select(systemconfig.c.value).where(systemconfig.c.key == key)
).first()
templates = row[0] if row else None
if isinstance(templates, dict):
_re = r'(?<={{)(?![^}]*[%|])(\s*)season(\s*)(?=}})|(?<={%)if\s+(?![^%]*[%|])season\s*(?=%)'
changed = False
for k, v in templates.items():
# 替换season为season_fmt
result = re.sub(_re, r'\1season_fmt\2', v)
if result != v:
changed = True
templates[k] = result
# 将更新后的模板存回系统配置
if changed:
connection.execute(
systemconfig.update().where(systemconfig.c.key == key).values(
value=templates
)
)
# ### end Alembic commands ###
def downgrade() -> None:
pass