Application Python professionnelle pour automatiser la génération de fichiers Excel SecureHoliday (Periods and Prices + Coefficients) sans modifier la structure. L'application permet de décrire vos logements, grilles tarifaires et périodes dans un fichier YAML lisible, puis de générer automatiquement les fichiers Excel nécessaires pour la réinjection de tarifs SecureHoliday.

# Cloner le repository
git clone <repository-url>
cd secureholiday
# Créer un environnement virtuel
python -m venv .venv
# Activer l'environnement virtuel
# Sur Windows:
.venv\Scripts\Activate.ps1
# Sur Linux/Mac:
source .venv/bin/activate
# Installer les dépendances
pip install -r requirements.txt
# Installer l'application en mode développement
pip install -e .pip install secureholidaysecureholiday/
├── src/
│ └── secureholiday/ # Code source principal
│ ├── __init__.py
│ ├── __main__.py
│ ├── app.py # Point d'entrée de l'application
│ ├── core/ # Constantes, chemins, gestion d'erreurs
│ ├── backend/ # Logique métier
│ │ ├── models/ # Modèles de données et exceptions
│ │ ├── services/ # Services (Excel, tarifs)
│ │ └── utils/ # Utilitaires (config, dates, segments)
│ ├── ui/ # Interface utilisateur
│ │ ├── components/ # Composants réutilisables
│ │ ├── dialogs/ # Dialogues
│ │ └── main_window.py # Fenêtre principale
│ └── ux/ # Styles et widgets personnalisés
│ ├── themes/ # Thèmes
│ └── widgets/ # Widgets personnalisés
├── tests/ # Tests unitaires et d'intégration
├── assets/ # Ressources statiques (icônes, templates)
├── data/ # Fichiers Excel (templates, tarifs)
├── config/ # Fichiers de configuration YAML
├── docs/ # Documentation
├── output/ # Fichiers Excel générés
├── logs/ # Logs d'erreurs
├── setup.py # Configuration de distribution
├── pyproject.toml # Configuration moderne Python
├── requirements.txt # Dépendances Python
└── README.md # Ce fichier
# Méthode 1: Via le module Python
python -m secureholiday
# Méthode 2: Via le script main.py (compatibilité)
python main.py
# Méthode 3: Via la commande installée
secureholidayFonctionnalités de l'interface :
- Colonne de gauche : Sélectionnez un produit, puis une grille (nightly/weekly)
- Partie droite : Ajoutez/modifiez les périodes (début, fin, prix, découpe, légende, etc.)
- Bouton Importer depuis Excel : Récupère automatiquement toutes les grilles et périodes déjà présentes dans votre fichier SecureHoliday
- Bouton Générer l'Excel : Le fichier est réécrit en respectant la feuille
Periods and Prices - Importer périodes/prix depuis Tarifs : Import automatique des tarifs depuis un fichier Excel de tarifs
- Journal des Erreurs : Bouton dédié pour afficher toutes les erreurs et exceptions en temps réel
python -m secureholiday.backend.services.excel_builder \
--template "data/Camping Au Paradis des Campeurs - 9221.xlsx" \
--config config/demo_rates.yaml \
--output output/tarifs-2026.xlsxLe fichier de configuration YAML (config/demo_rates.yaml) suit cette structure :
defaults:
duration_operator: GreaterThanOrEqual
booking_fees: keep
based_on_coeffs: keep
products:
- product_id: 97401
product_name: "Pitch Standard : Pitch + 1 car + electricity 6A 2/6 ppl."
grids:
- grid_id: 282896
grid_type: NIGHTLY BASED TARIFF
duration: 1
segments:
- start: 2025-07-05
end: 2025-07-11
price: 33
legend: Basse saison
- start: 2025-07-12
end: 2025-08-22
price: 47
legend: Haute saisondefaults: Valeurs appliquées à tous les produits/grilles si elles ne sont pas redéfiniesproducts: Liste des hébergementsproduct_idetproduct_namesont obligatoiresgrids: Chaque grille correspond à unGrid IdSecureHolidaygrid_type,duration,duration_operatordécrivent la grillesegments: Les périodes et tarifs à générerstart/end: Dates au formatYYYY-MM-DDprice: Tarif appliqué (nombre)chunk_size_days(optionnel) : Découpe automatiquement la période en blocs consécutifsarrival_days,departure_days,legend: Options supplémentaires
L'application suit une architecture modulaire avec séparation claire des responsabilités :
core/: Fonctionnalités centrales (chemins, erreurs, constantes)backend/: Logique métier (traitement Excel, tarifs, validation)ui/: Interface utilisateur Tkinterux/: Styles et widgets personnalisés
# Installer les dépendances de développement
pip install -r requirements-dev.txt # Si disponible
# Exécuter les tests
pytest tests/- Fork le repository
- Créer une branche pour votre fonctionnalité (
git checkout -b feature/ma-fonctionnalite) - Commit vos changements (
git commit -am 'Ajout de ma fonctionnalité') - Push vers la branche (
git push origin feature/ma-fonctionnalite) - Ouvrir une Pull Request
# Construire le package
python setup.py sdist bdist_wheel
# Installer localement
pip install dist/secureholiday-1.0.0.tar.gz# Installer twine
pip install twine
# Publier
twine upload dist/*MIT License - Voir le fichier LICENSE pour plus de détails.
SecureHoliday Team
Si vous rencontrez un bug, veuillez ouvrir une issue sur le repository GitHub avec :
- Description du problème
- Steps pour reproduire
- Version de Python utilisée
- Logs d'erreur (disponibles via le bouton "Journal des Erreurs" dans l'interface)
La documentation complète est disponible dans le dossier docs/.
Note : Cette application est conçue pour fonctionner avec les fichiers Excel SecureHoliday. Assurez-vous d'utiliser un template Excel valide comme point de départ.
