50 lines
2.3 KiB
Python
50 lines
2.3 KiB
Python
"""یادآوری تأمین موجودی چک: تغییر جهت از «پس از سررسید» به «پیش از سررسید».
|
|
|
|
هدف این migration **فقط** همراستاکردن مقدار عددی ``offset_days`` قالب
|
|
``cheque_registration`` با معنای جدید است (تعداد روز **قبل** از سررسید).
|
|
|
|
آنچه این migration عمداً **نمیکند**:
|
|
|
|
* ``text`` (متن پیامک) را تغییر نمیدهد — متنی که مدیر در پنل تنظیم کرده دستنخورده
|
|
میماند. اگر متن فعلی از زمان گذشته حرف میزند («سررسید شده است»)، مدیر میتواند
|
|
خودش از صفحهٔ «قالبهای پیامک» ویرایشش کند.
|
|
* ``title``، ``is_enabled`` و ``auto_send`` را تغییر نمیدهد.
|
|
* هیچ نوع/قالب دیگری را لمس نمیکند.
|
|
|
|
مقدار ``offset_days`` روی پیشفرض معنای جدید (۱ روز قبل از سررسید) تنظیم میشود تا
|
|
نصبهای تازه و نصبهای موجود یکسان رفتار کنند؛ اما اگر مدیر قبلاً عددی غیر از مقدار
|
|
قدیمی (``1``) گذاشته باشد، به آن دست نمیزنیم تا انتخابش از بین نرود.
|
|
|
|
idempotent است؛ اجرای دوباره بیخطر است.
|
|
"""
|
|
from django.db import migrations
|
|
|
|
SMS_TYPE = "cheque_registration"
|
|
# مقدار پیشفرضِ منطق قدیم («۱ روز پس از سررسید») که با معنای جدید همعددی است؛
|
|
# فقط رکوردهایی که هنوز روی همین مقدار هستند همراستا میشوند.
|
|
OLD_DEFAULT = 1
|
|
NEW_DEFAULT = 1
|
|
|
|
|
|
def align_cheque_offset(apps, schema_editor):
|
|
"""``offset_days`` قالب چک را روی پیشفرض جدید بگذارد (بدون لمس متن)."""
|
|
SMSTemplate = apps.get_model("admin_panel", "SMSTemplate")
|
|
SMSTemplate.objects.filter(
|
|
sms_type=SMS_TYPE, offset_days=OLD_DEFAULT,
|
|
).update(offset_days=NEW_DEFAULT)
|
|
|
|
|
|
def noop(apps, schema_editor):
|
|
pass
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
("admin_panel", "0074_alter_action_status_choices"),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(align_cheque_offset, noop),
|
|
]
|