Spaces:
Running
Running
| # ============================================================ | |
| # 📄 الملف: 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() | |