# Generated by Django 4.2.30 on 2026-07-19 12:21 import json from django.db import migrations, models def convert_titles_to_json(apps, schema_editor): CalendarOccasions = apps.get_model('dobodbi_calendar', 'CalendarOccasions') for occasion in CalendarOccasions.objects.all(): title_str = occasion.title if not title_str: occasion.title = '[]' occasion.save() continue # Check if it's already a valid JSON list/dict try: parsed = json.loads(title_str) if isinstance(parsed, (list, dict)): # Already valid JSON continue except Exception: pass # Convert plain text to JSON list new_title = [{"language_code": "fa", "title": title_str}] occasion.title = json.dumps(new_title, ensure_ascii=False) occasion.save() def convert_json_to_titles(apps, schema_editor): CalendarOccasions = apps.get_model('dobodbi_calendar', 'CalendarOccasions') for occasion in CalendarOccasions.objects.all(): title_str = occasion.title try: parsed = json.loads(title_str) if isinstance(parsed, list) and len(parsed) > 0: # Try English first, then fallback val = "" for item in parsed: if isinstance(item, dict): val = item.get("title") or item.get("text") or val if item.get("language_code") == "en": break occasion.title = val occasion.save() except Exception: pass class Migration(migrations.Migration): dependencies = [ ('dobodbi_calendar', '0001_initial'), ] operations = [ migrations.RunPython(convert_titles_to_json, convert_json_to_titles), migrations.AlterField( model_name='calendaroccasions', name='title', field=models.JSONField(blank=True, default=list, verbose_name='title'), ), ]