|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
|
|
|
RED='\033[0;31m' |
|
|
GREEN='\033[0;32m' |
|
|
YELLOW='\033[1;33m' |
|
|
BLUE='\033[0;34m' |
|
|
PURPLE='\033[0;35m' |
|
|
NC='\033[0m' |
|
|
|
|
|
|
|
|
log() { |
|
|
echo -e "${GREEN}[$(date +'%H:%M:%S')] $1${NC}" |
|
|
} |
|
|
|
|
|
error() { |
|
|
echo -e "${RED}[$(date +'%H:%M:%S')] ERROR: $1${NC}" |
|
|
exit 1 |
|
|
} |
|
|
|
|
|
warning() { |
|
|
echo -e "${YELLOW}[$(date +'%H:%M:%S')] WARNING: $1${NC}" |
|
|
} |
|
|
|
|
|
info() { |
|
|
echo -e "${BLUE}[$(date +'%H:%M:%S')] INFO: $1${NC}" |
|
|
} |
|
|
|
|
|
|
|
|
echo -e "${PURPLE}" |
|
|
echo "🔥 ========================================= 🔥" |
|
|
echo " FireWatch AI - Configuration Setup" |
|
|
echo " Créé par Marino ATOHOUN" |
|
|
echo "🔥 ========================================= 🔥" |
|
|
echo -e "${NC}" |
|
|
|
|
|
|
|
|
log "Vérification des prérequis..." |
|
|
|
|
|
|
|
|
if ! command -v python3.11 &> /dev/null; then |
|
|
if ! command -v python3 &> /dev/null; then |
|
|
error "Python 3.11+ requis. Veuillez l'installer d'abord." |
|
|
else |
|
|
PYTHON_VERSION=$(python3 --version | cut -d' ' -f2 | cut -d'.' -f1,2) |
|
|
if [[ $(echo "$PYTHON_VERSION < 3.11" | bc -l) -eq 1 ]]; then |
|
|
error "Python 3.11+ requis. Version actuelle: $PYTHON_VERSION" |
|
|
fi |
|
|
PYTHON_CMD="python3" |
|
|
fi |
|
|
else |
|
|
PYTHON_CMD="python3.11" |
|
|
fi |
|
|
|
|
|
log "✓ Python trouvé: $($PYTHON_CMD --version)" |
|
|
|
|
|
|
|
|
if ! command -v pip3 &> /dev/null; then |
|
|
error "pip3 requis. Veuillez l'installer d'abord." |
|
|
fi |
|
|
|
|
|
log "✓ pip trouvé: $(pip3 --version)" |
|
|
|
|
|
|
|
|
if ! command -v git &> /dev/null; then |
|
|
error "git requis. Veuillez l'installer d'abord." |
|
|
fi |
|
|
|
|
|
log "✓ git trouvé: $(git --version)" |
|
|
|
|
|
|
|
|
log "Configuration de l'environnement virtuel..." |
|
|
|
|
|
if [ ! -d "venv" ]; then |
|
|
info "Création de l'environnement virtuel..." |
|
|
$PYTHON_CMD -m venv venv |
|
|
else |
|
|
info "Environnement virtuel existant trouvé" |
|
|
fi |
|
|
|
|
|
|
|
|
log "Activation de l'environnement virtuel..." |
|
|
source venv/bin/activate |
|
|
|
|
|
|
|
|
log "Mise à jour de pip..." |
|
|
pip install --upgrade pip |
|
|
|
|
|
|
|
|
log "Installation des dépendances Python..." |
|
|
if [ -f "requirements.txt" ]; then |
|
|
pip install -r requirements.txt |
|
|
else |
|
|
error "Fichier requirements.txt non trouvé" |
|
|
fi |
|
|
|
|
|
|
|
|
log "Configuration des variables d'environnement..." |
|
|
if [ ! -f ".env" ]; then |
|
|
if [ -f ".env.example" ]; then |
|
|
cp .env.example .env |
|
|
info "Fichier .env créé à partir de .env.example" |
|
|
warning "Veuillez éditer .env avec vos configurations" |
|
|
else |
|
|
error "Fichier .env.example non trouvé" |
|
|
fi |
|
|
else |
|
|
info "Fichier .env existant trouvé" |
|
|
fi |
|
|
|
|
|
|
|
|
log "Génération d'une clé secrète Django..." |
|
|
SECRET_KEY=$(python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())") |
|
|
sed -i "s/SECRET_KEY=.*/SECRET_KEY=$SECRET_KEY/" .env |
|
|
info "Clé secrète générée et configurée" |
|
|
|
|
|
|
|
|
log "Création des répertoires nécessaires..." |
|
|
mkdir -p media/uploads/images media/uploads/videos media/results models logs static/css static/js static/images |
|
|
|
|
|
|
|
|
log "Configuration de la base de données..." |
|
|
python manage.py makemigrations |
|
|
python manage.py migrate |
|
|
|
|
|
|
|
|
log "Collecte des fichiers statiques..." |
|
|
python manage.py collectstatic --noinput |
|
|
|
|
|
|
|
|
log "Vérification des modèles YOLOv8..." |
|
|
if [ -f "models/incendies.pt" ]; then |
|
|
log "✓ Modèle d'incendie trouvé" |
|
|
else |
|
|
warning "✗ Modèle d'incendie non trouvé (models/incendies.pt)" |
|
|
info "L'application fonctionnera en mode simulation" |
|
|
fi |
|
|
|
|
|
if [ -f "models/intrusion.pt" ]; then |
|
|
log "✓ Modèle d'intrusion trouvé" |
|
|
else |
|
|
warning "✗ Modèle d'intrusion non trouvé (models/intrusion.pt)" |
|
|
info "L'application fonctionnera en mode simulation" |
|
|
fi |
|
|
|
|
|
|
|
|
echo "" |
|
|
read -p "Voulez-vous créer un superutilisateur maintenant ? (y/N): " create_superuser |
|
|
if [[ $create_superuser =~ ^[Yy]$ ]]; then |
|
|
log "Création du superutilisateur..." |
|
|
python manage.py createsuperuser |
|
|
fi |
|
|
|
|
|
|
|
|
log "Exécution des tests de base..." |
|
|
python manage.py check |
|
|
|
|
|
|
|
|
echo "" |
|
|
echo -e "${GREEN}🎉 Configuration terminée avec succès ! 🎉${NC}" |
|
|
echo "" |
|
|
echo -e "${BLUE}Prochaines étapes :${NC}" |
|
|
echo "1. Activez l'environnement virtuel : source venv/bin/activate" |
|
|
echo "2. Lancez le serveur : python manage.py runserver" |
|
|
echo "3. Ouvrez votre navigateur : http://127.0.0.1:8000" |
|
|
echo "4. Accédez à l'admin : http://127.0.0.1:8000/admin/" |
|
|
echo "" |
|
|
echo -e "${YELLOW}Pour utiliser vos modèles YOLOv8 :${NC}" |
|
|
echo "1. Placez incendies.pt et intrusion.pt dans le dossier models/" |
|
|
echo "2. Décommentez les lignes de chargement dans detection/views.py" |
|
|
echo "3. Redémarrez le serveur" |
|
|
echo "" |
|
|
echo -e "${PURPLE}FireWatch AI est prêt ! Créé par Marino ATOHOUN${NC}" |
|
|
|
|
|
|