forked from erp-dev/erp
feat: mission category
This commit is contained in:
65
notifier/migrations/0002_notifierroute_refactor.py
Normal file
65
notifier/migrations/0002_notifierroute_refactor.py
Normal file
@@ -0,0 +1,65 @@
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
from django.db.models import Q
|
||||
|
||||
|
||||
def forwards(apps, schema_editor):
|
||||
Notifier = apps.get_model("notifier", "Notifier")
|
||||
NotifierRoute = apps.get_model("notifier", "NotifierRoute")
|
||||
db_alias = schema_editor.connection.alias
|
||||
|
||||
for notifier in Notifier.objects.using(db_alias).all().only("id", "merchant_id", "event_key").iterator():
|
||||
NotifierRoute.objects.using(db_alias).get_or_create(
|
||||
notifier_id=notifier.id,
|
||||
event_key=notifier.event_key,
|
||||
mission_category_id=None,
|
||||
defaults={
|
||||
"merchant_id": notifier.merchant_id,
|
||||
"is_enabled": True,
|
||||
"description": "由旧版 notifier.event_key 自动迁移生成",
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("mission", "0004_missioncategory_refactor"),
|
||||
("notifier", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="NotifierRoute",
|
||||
fields=[
|
||||
("created_at", models.DateTimeField(auto_now_add=True, verbose_name="创建时间")),
|
||||
("updated_at", models.DateTimeField(auto_now=True, verbose_name="更新时间")),
|
||||
("id", models.BigAutoField(primary_key=True, serialize=False)),
|
||||
("event_key", models.CharField(choices=[("mission.created", "任务已创建"), ("mission.replied", "任务有新回应"), ("mission.completed", "任务已完成"), ("mission.reply_rejected", "任务回应已撤销"), ("mission.reopened", "任务已重新打开"), ("mission.cancelled", "任务已取消")], db_index=True, max_length=100, verbose_name="事件标识")),
|
||||
("is_enabled", models.BooleanField(db_index=True, default=True, verbose_name="是否启用")),
|
||||
("description", models.TextField(blank=True, null=True, verbose_name="备注描述")),
|
||||
("merchant", models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name="notifier_routes", to="basic_info.merchant", verbose_name="所属商户")),
|
||||
("mission_category", models.ForeignKey(blank=True, help_text="为空时表示该事件的通配路由", null=True, on_delete=django.db.models.deletion.PROTECT, related_name="notifier_routes", to="mission.missioncategory", verbose_name="任务分类路由")),
|
||||
("notifier", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="routes", to="notifier.notifier", verbose_name="通知器")),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "通知路由",
|
||||
"verbose_name_plural": "通知路由",
|
||||
"indexes": [models.Index(fields=["merchant", "event_key", "is_enabled"], name="notifier_no_merchan_58d463_idx"), models.Index(fields=["merchant", "mission_category", "is_enabled"], name="notifier_no_merchan_14b7f6_idx")],
|
||||
"constraints": [models.UniqueConstraint(fields=("notifier", "event_key", "mission_category"), name="unique_notifier_route_per_scope"), models.UniqueConstraint(condition=Q(mission_category__isnull=True), fields=("notifier", "event_key"), name="unique_notifier_route_global_scope")],
|
||||
},
|
||||
),
|
||||
migrations.RunPython(forwards, migrations.RunPython.noop),
|
||||
migrations.RemoveIndex(
|
||||
model_name="notifier",
|
||||
name="notifier_no_merchan_c59a7a_idx",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="notifier",
|
||||
name="event_key",
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="notifier",
|
||||
index=models.Index(fields=["merchant", "channel", "is_enabled"], name="notifier_no_merchan_532b51_idx"),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user