File size: 2,267 Bytes
9619c69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# ============================================================
# 📄 الملف: 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()