From 19072ee534251f3cc739abf42c2f4f5dda0026b0 Mon Sep 17 00:00:00 2001 From: Zareian Date: Sat, 10 Oct 2026 01:42:44 +0330 Subject: [PATCH] =?UTF-8?q?Fourth=20companion=20renamed=20Tedi=20->=20Omeg?= =?UTF-8?q?a=20(=CF=89);=20slug=20stays=20tedi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 2 +- .../migrations/0007_tedi_renamed_omega.py | 21 +++++++++++++++++++ progress/tests.py | 5 ++++- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 progress/migrations/0007_tedi_renamed_omega.py diff --git a/CLAUDE.md b/CLAUDE.md index f3b8747..c393468 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -679,7 +679,7 @@ actionهای لغو/بازپرداخت که برای Supervisorِ فقط‌خو معتبر (دورِ ۲)، ۰ از ۸ برای سوالِ بی‌شکل؛ وارسیِ چشمیِ ۸۳ شکل: ۶۴ درست، ۳ ضعیف، ۱۶ غلط. اصلاح‌های بعد از آن (خط از معادله، کسرِ مقایسه‌ای، محرکِ ساعت، …) روی مدل سنجیده نشده‌اند. - **فرانت آزمونِ جزیره را بازی می‌کند** (`/nodes/{id}/quiz`); خانه خودِ مسیر است با «شروع». -- **تدی** (شکلکِ `mobile-preview/mascot-pack`، شش حالت) با `progress.0005`، **۵۰۰ امتیاز** +- **امگا** (ω؛ تا ۲۰۲۶-۱۰-۱۰ «تدی»، slug هنوز `tedi`؛ شکلکِ `mobile-preview/mascot-pack`، شش حالت) با `progress.0005`/`0007`، **۵۰۰ امتیاز** (همان فاصله‌ی ۲۰۰تاییِ دلتا تا پی؛ خواستِ صاحبِ پروژه). - **محتوا:** ۸۲ سوالِ تازه، پس هیچ جزیره‌ای زیرِ ۴ سوال نیست (۲٬۵۴۵ سوال). `fill_lesson_texts` (بی‌هزینه) `Unit.blurb` را برای ۵۸ فصل و مثال/قدم‌ها را برای ۵۹۰ درس از مسئله‌های تأییدشده‌ی diff --git a/progress/migrations/0007_tedi_renamed_omega.py b/progress/migrations/0007_tedi_renamed_omega.py new file mode 100644 index 0000000..9795eff --- /dev/null +++ b/progress/migrations/0007_tedi_renamed_omega.py @@ -0,0 +1,21 @@ +""" +همراهِ چهارم از «تدی» به «امگا» (ω) تغییرِ نام داد (خواستِ مالک، ۲۰۲۶-۱۰-۱۰): همه‌ی همراه‌ها +نامِ یک حرفِ یونانیِ ریاضی دارند، و شکلِ گرد با دو گوشِ گردش شبیهِ ω است. + +فقط نام عوض می‌شود و فقط اگر هنوز همان «تدی» باشد (ویرایشِ ادمین بازنویسی نمی‌شود). slug همان +`tedi` می‌ماند: شناسه‌ی داخلی است و فرانت با آن شکلک را پیدا می‌کند؛ کاربر آن را نمی‌بیند. +""" +from django.db import migrations + + +def rename(apps, schema_editor): + apps.get_model('progress', 'Character').objects.filter(slug='tedi', name='تدی').update(name='امگا') + + +def undo(apps, schema_editor): + apps.get_model('progress', 'Character').objects.filter(slug='tedi', name='امگا').update(name='تدی') + + +class Migration(migrations.Migration): + dependencies = [('progress', '0006_drop_family_app')] + operations = [migrations.RunPython(rename, undo)] diff --git a/progress/tests.py b/progress/tests.py index c30cae5..52d95fa 100644 --- a/progress/tests.py +++ b/progress/tests.py @@ -258,7 +258,7 @@ class RebuildLeaderboardCommandTests(TestCase): class FourCompanionsCatalogTests(TestCase): - """migrationهای 0004 و 0005: سه‌یار و تدی همان چهار slugی‌اند که فرانت می‌شناسد.""" + """migrationهای 0004، 0005 و 0007: سه‌یار و امگا (slugِ tedi) همان چهار slugی‌اند که فرانت می‌شناسد.""" def test_catalog_has_the_four_companions_in_order(self): rows = list( @@ -267,6 +267,9 @@ class FourCompanionsCatalogTests(TestCase): ) self.assertEqual(rows, [('sigma', 0), ('delta', 100), ('pi', 300), ('tedi', 500)]) + def test_the_fourth_companion_is_called_omega(self): + self.assertEqual(Character.objects.get(slug='tedi').name, 'امگا') + class LeaderboardPeriodValidationTests(TestCase): def setUp(self):