shahad altamimi
قراءة .env بمسار صريح + سكربت إضافة مقيّم
9619c69
Raw
History Blame Contribute Delete
2.27 kB
# ============================================================
# 📄 الملف: 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()