fix two checks that only broke in the case they exist for
بازبینیِ کارِ امروز، سه مورد پیدا کرد. /api/health وقتی مهاجرتِ اعمالنشده وجود داشت میشکست: کدِ فهرستکردنِ مهاجرتها به migration.key تکیه میکرد که اصلاً وجود ندارد (فیلدها app_label و name هستند). یعنی دقیقاً در همان حالتی که این بررسی برایش ساخته شده، بهجای نامِ مهاجرتها فقط AttributeError برمیگرداند. حالا تستی دارد که مهاجرتِ معلق را شبیهسازی میکند — چیزی که نبودش باعث شد اولین بار غلط بماند. وارد کردنِ سوال با replace عددِ غلط گزارش میکرد: delete() در جنگو مجموعِ همهی ردیفهای آبشاری را میدهد، پس «۵ سوال پاک شد» در واقع گزینهها و پاسخها را هم میشمرد. deploy.sh بررسیِ متغیرهای محیطیاش با تنظیماتِ جدید ناسازگار شده بود: متغیرهایی را اجباری میدانست که حالا پیشفرض دارند، و فقط شل را میخواند نه .env — یعنی روی سرورِ درست هم دیپلوی را رد میکرد. حالا بهجای تکرارِ منطقِ تنظیمات، از خودِ جنگو میپرسد چه چیزی مؤثر است و گزارش میدهد. کوچکتر: بررسیِ سلامت یک درخواست میزند نه دو تا، و شکستِ ریاستارت دیگر اسکریپت را بیصدا تمام نمیکند. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -39,10 +39,11 @@ def _check_migrations() -> dict:
|
||||
executor = MigrationExecutor(connection)
|
||||
targets = executor.loader.graph.leaf_nodes()
|
||||
pending = executor.migration_plan(targets)
|
||||
# migration_plan یک فهرست از (migration, backwards) میدهد؛ خودِ
|
||||
# Migration فیلدهای app_label و name دارد (نه key).
|
||||
return {
|
||||
'ok': not pending,
|
||||
'pending': [f'{app}.{name}' for (app, name), _ in
|
||||
((m.key, m) for m, _ in pending)],
|
||||
'pending': [f'{migration.app_label}.{migration.name}' for migration, _ in pending],
|
||||
}
|
||||
except Exception as exc: # noqa: BLE001
|
||||
return {'ok': False, 'error': type(exc).__name__}
|
||||
|
||||
Reference in New Issue
Block a user