# ============================================================ # 📄 الملف: scripts/add_evaluator.py # 🎯 الغرض: إضافة مقيّم (اسم + إيميل) مباشرة إلى قاعدة MongoDB. # # يستخدم نفس رابط الاتصال MONGODB_URI (من .env أو متغيّر البيئة)، # ونفس دوال app/database.py — فلا تكرار للمنطق. # # الاستخدام (من مجلد backend): # python scripts/add_evaluator.py "اسم المقيّم" "email@example.com" # # أو بدون وسائط (يسأل تفاعليًا): # python scripts/add_evaluator.py # # لاستهداف قاعدة الإنتاج (Atlas) بدل المحلية، مرّر الرابط مؤقتًا: # MONGODB_URI='mongodb+srv://...' python scripts/add_evaluator.py "اسم" "email" # ============================================================ import sys from pathlib import Path # إتاحة استيراد config و app من جذر backend BACKEND_DIR = Path(__file__).resolve().parent.parent sys.path.insert(0, str(BACKEND_DIR)) import config # noqa: F401 — يحمّل .env (MONGODB_URI) عند الاستيراد from app import database as db def main() -> None: # 1) قراءة الاسم والإيميل من سطر الأوامر أو تفاعليًا if len(sys.argv) >= 3: name, email = sys.argv[1].strip(), sys.argv[2].strip() else: name = input("اسم المقيّم: ").strip() email = input("الإيميل: ").strip() if not name or not email or "@" not in email: print("❌ لازم اسم صحيح وإيميل صحيح (يحتوي @).") sys.exit(1) # 2) التأكد من ضبط رابط القاعدة print(f"🗄️ التخزين: {db.backend_label()}") if not db.is_configured(): print("❌ MONGODB_URI غير مضبوط (لا في .env ولا في البيئة).") sys.exit(1) # 3) الإضافة/التحديث (المفتاح: الإيميل) try: db.upsert_evaluator(name, email) print(f"✅ تم حفظ المقيّم: {name} <{email}>") except Exception as e: print(f"❌ تعذّر الاتصال/الحفظ: {e}") sys.exit(1) if __name__ == "__main__": main()