Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """Génère des clés produit commerciales (admin).""" | |
| from __future__ import annotations | |
| import argparse | |
| import asyncio | |
| import os | |
| import sys | |
| from pathlib import Path | |
| from dotenv import load_dotenv | |
| from motor.motor_asyncio import AsyncIOMotorClient | |
| ROOT = Path(__file__).resolve().parents[1] | |
| sys.path.insert(0, str(ROOT / "emo" / "backend")) | |
| load_dotenv(ROOT / "emo" / "backend" / ".env", override=True) | |
| from product_keys import create_product_keys # noqa: E402 | |
| async def main(): | |
| p = argparse.ArgumentParser(description="Génère des clés produit Émo Online") | |
| p.add_argument("--tier", default="ultra", choices=["basic", "premium", "ultra"]) | |
| p.add_argument("--count", type=int, default=1) | |
| p.add_argument("--uses", type=int, default=1, help="Activations max par clé") | |
| p.add_argument("--note", default="") | |
| args = p.parse_args() | |
| mongo = os.environ.get("MONGO_URL", "").strip() | |
| if not mongo: | |
| print("MONGO_URL manquant", file=sys.stderr) | |
| sys.exit(1) | |
| db = AsyncIOMotorClient(mongo)[os.environ.get("DB_NAME", "emo")] | |
| keys = await create_product_keys( | |
| db, tier=args.tier, count=args.count, max_uses=args.uses, note=args.note, | |
| ) | |
| print(f"\n=== {len(keys)} clé(s) {args.tier.upper()} générée(s) ===\n") | |
| for k in keys: | |
| print(k) | |
| print("\nDonne une clé par client — accès illimité à vie.\n") | |
| if __name__ == "__main__": | |
| asyncio.run(main()) | |