107 lines
3.7 KiB
Python
Executable File
107 lines
3.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Script pour générer des périphériques de test
|
|
"""
|
|
import sys
|
|
from pathlib import Path
|
|
from datetime import datetime, timedelta
|
|
import random
|
|
|
|
# Add app to path
|
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
|
|
from app.db.session import get_peripherals_db
|
|
from app.models.peripheral import Peripheral
|
|
|
|
|
|
# Données de test
|
|
TYPES = [
|
|
"USB", "Stockage", "Réseau", "Audio", "Vidéo", "Clavier", "Souris",
|
|
"Webcam", "Adaptateur", "Hub", "Carte réseau", "Bluetooth"
|
|
]
|
|
|
|
MARQUES = [
|
|
"Logitech", "SanDisk", "Kingston", "TP-Link", "D-Link", "Razer",
|
|
"Corsair", "Samsung", "Western Digital", "Seagate", "Crucial",
|
|
"Intel", "Realtek", "Broadcom", "Generic", "Microsoft"
|
|
]
|
|
|
|
ETATS = ["Neuf", "Bon", "Usagé", "Défectueux"]
|
|
|
|
BOUTIQUES = ["Amazon", "LDLC", "Rue du Commerce", "CDiscount", "Materiel.net", "Ebay"]
|
|
|
|
|
|
def generate_peripherals(count=40):
|
|
"""Génère des périphériques de test"""
|
|
db = next(get_peripherals_db())
|
|
|
|
try:
|
|
print(f"🔧 Génération de {count} périphériques de test...")
|
|
print("=" * 60)
|
|
|
|
for i in range(1, count + 1):
|
|
type_principal = random.choice(TYPES)
|
|
marque = random.choice(MARQUES)
|
|
|
|
# Générer nom basé sur type et marque
|
|
nom = f"{marque} {type_principal} {random.randint(100, 9999)}"
|
|
|
|
# Modèle
|
|
modeles = [
|
|
f"Model {chr(65 + random.randint(0, 25))}{random.randint(100, 999)}",
|
|
f"Pro {random.randint(1, 5)}",
|
|
f"Elite {random.choice(['X', 'S', 'Pro', 'Plus'])}",
|
|
f"{random.choice(['Ultra', 'Super', 'Mega'])} {random.randint(100, 999)}"
|
|
]
|
|
modele = random.choice(modeles)
|
|
|
|
# Créer périphérique
|
|
peripheral = Peripheral(
|
|
nom=nom,
|
|
type_principal=type_principal,
|
|
marque=marque,
|
|
modele=modele,
|
|
numero_serie=f"SN{random.randint(100000, 999999)}",
|
|
etat=random.choice(ETATS),
|
|
rating=random.randint(0, 5),
|
|
quantite_totale=random.randint(1, 5),
|
|
quantite_disponible=random.randint(0, 5),
|
|
prix=round(random.uniform(5.99, 199.99), 2) if random.random() > 0.2 else None,
|
|
devise="EUR",
|
|
boutique=random.choice(BOUTIQUES) if random.random() > 0.3 else None,
|
|
date_achat=(datetime.now() - timedelta(days=random.randint(0, 730))).date() if random.random() > 0.4 else None,
|
|
garantie_duree_mois=random.choice([12, 24, 36]) if random.random() > 0.5 else None,
|
|
synthese=f"Périphérique de test #{i}\n\nGénéré automatiquement pour tester la pagination." if random.random() > 0.7 else None,
|
|
notes=f"Notes de test pour le périphérique #{i}" if random.random() > 0.6 else None,
|
|
)
|
|
|
|
db.add(peripheral)
|
|
|
|
if i % 10 == 0:
|
|
db.commit()
|
|
print(f" ✅ {i}/{count} périphériques créés")
|
|
|
|
db.commit()
|
|
print("\n" + "=" * 60)
|
|
print(f"✅ {count} périphériques de test créés avec succès !")
|
|
|
|
# Statistiques
|
|
total = db.query(Peripheral).count()
|
|
print(f"📊 Total dans la base : {total} périphériques")
|
|
|
|
except Exception as e:
|
|
print(f"❌ Erreur : {e}")
|
|
db.rollback()
|
|
finally:
|
|
db.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser(description='Générer des périphériques de test')
|
|
parser.add_argument('--count', type=int, default=40, help='Nombre de périphériques à générer (défaut: 40)')
|
|
args = parser.parse_args()
|
|
|
|
generate_peripherals(args.count)
|