"""
اسکریپت راه‌اندازی کامل روی هاست - همه کارها با یک دستور
اجرا روی هاست (داخل virtualenv):
    python deploy_setup.py
"""
import os, sys, django, subprocess

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'artaghadir.settings')
django.setup()

def banner(t):
    print("\n" + "="*55)
    print("  " + t)
    print("="*55)

# ─── ۱. migrate ───────────────────────────────────────────
banner("۱. ساخت جداول دیتابیس (migrate)")
from django.core.management import call_command
try:
    call_command('migrate', '--no-input')
    print("✅ جداول ساخته شدند")
except Exception as e:
    print(f"⚠️ migrate: {e}")

# ─── ۲. loaddata (دیتای بکاپ) ─────────────────────────────
banner("۲. بارگذاری دیتای بکاپ (data_backup.json)")
if os.path.exists('data_backup.json'):
    try:
        # اول جداولی که ممکنه تداخل کنن رو خالی کن
        from apps.core.models import MenuItem, HomeSection
        MenuItem.objects.all().delete()
        HomeSection.objects.all().delete()
        call_command('loaddata', 'data_backup.json')
        print("✅ دیتای بکاپ بارگذاری شد")
    except Exception as e:
        print(f"⚠️ loaddata: {e}")
        print("   اگه خطای duplicate داد، یعنی دیتا از قبل هست - مشکلی نیست")
else:
    print("⚠️ فایل data_backup.json پیدا نشد - از populate استفاده می‌شود")

# ─── ۳. اگه منو نبود، بساز ─────────────────────────────────
banner("۳. بررسی منوها")
from apps.core.models import MenuItem
if MenuItem.objects.count() == 0:
    print("منوها خالیه - در حال ساخت...")
    try:
        exec(open('populate_menus.py').read())
    except Exception as e:
        print(f"⚠️ populate_menus: {e}")
else:
    print(f"✅ {MenuItem.objects.count()} منو موجود است")

# ─── ۴. پر کردن متن‌های تماس/فوتر ─────────────────────────
banner("۴. پر کردن متن‌های پیش‌فرض")
try:
    from apps.core.models import SiteSettings
    site = SiteSettings.get()
    if not site.contact_page_fa:
        site.contact_page_fa = 'برای همکاری، مشاوره یا کسب اطلاعات بیشتر از طریق راه‌های ارتباطی زیر با ما در تماس باشید.'
    if not site.contact_title_fa:
        site.contact_title_fa = 'در تماس باشید'
    if not site.about_short_fa:
        site.about_short_fa = 'بازوی فعال هلدینگ صنایع و معادن غدیر در زمینه اکتشاف، استخراج و فرآوری مواد معدنی در بیش از ۱۱ استان کشور.'
    site.save()
    print("✅ متن‌ها بررسی/پر شدند")
except Exception as e:
    print(f"⚠️ {e}")

# ─── ۵. collectstatic ─────────────────────────────────────
banner("۵. جمع‌آوری فایل‌های static")
try:
    call_command('collectstatic', '--no-input')
    print("✅ فایل‌های static جمع‌آوری شدند")
except Exception as e:
    print(f"⚠️ collectstatic: {e}")

# ─── پایان ────────────────────────────────────────────────
banner("✅ راه‌اندازی کامل شد!")
print(f"  منوها: {MenuItem.objects.count()} آیتم")
from apps.projects.models import Project
from apps.news.models import Article
print(f"  پروژه‌ها: {Project.objects.count()}")
print(f"  اخبار: {Article.objects.count()}")
print("\n  سایت آماده است! یک بار سرور/اپلیکیشن را restart کنید.")
print("="*55)