feat: add depense tagging
This commit is contained in:
76
src/plesna_gerance/scripts/seed_tags.py
Normal file
76
src/plesna_gerance/scripts/seed_tags.py
Normal file
@@ -0,0 +1,76 @@
|
||||
"""Script pour initialiser les tags prédéfinis dans la base de données."""
|
||||
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from ..database import init_db, get_session
|
||||
from ..database.models import Tag
|
||||
|
||||
|
||||
# Liste des tags prédéfinis
|
||||
PREDEFINED_TAGS = [
|
||||
"Ascenseur",
|
||||
"Assurance",
|
||||
"Contentieux",
|
||||
"Diagnostics",
|
||||
"Eau",
|
||||
"Elec",
|
||||
"Entretien",
|
||||
"Hono E/S",
|
||||
"Hono Gestion",
|
||||
"Loyer Charge",
|
||||
"Tel",
|
||||
"Travaux",
|
||||
]
|
||||
|
||||
|
||||
def seed_tags():
|
||||
"""Initialise les tags prédéfinis en base."""
|
||||
# Initialize database
|
||||
init_db()
|
||||
|
||||
# Get session
|
||||
session = next(get_session())
|
||||
|
||||
try:
|
||||
created_count = 0
|
||||
skipped_count = 0
|
||||
|
||||
for tag_name in PREDEFINED_TAGS:
|
||||
try:
|
||||
# Check if tag already exists
|
||||
existing = session.query(Tag).filter(Tag.nom == tag_name).first()
|
||||
|
||||
if existing:
|
||||
print(f" ⏭️ Tag '{tag_name}' existe déjà (id={existing.id})")
|
||||
skipped_count += 1
|
||||
else:
|
||||
tag = Tag(nom=tag_name)
|
||||
session.add(tag)
|
||||
session.flush()
|
||||
print(f" ✅ Tag '{tag_name}' créé (id={tag.id})")
|
||||
created_count += 1
|
||||
|
||||
except IntegrityError:
|
||||
session.rollback()
|
||||
print(f" ⚠️ Erreur lors de la création du tag '{tag_name}'")
|
||||
skipped_count += 1
|
||||
|
||||
session.commit()
|
||||
|
||||
print(f"\n📊 Résumé:")
|
||||
print(f" - {created_count} tags créés")
|
||||
print(f" - {skipped_count} tags existants")
|
||||
print(f" - Total: {len(PREDEFINED_TAGS)} tags")
|
||||
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print(f"❌ Erreur: {e}")
|
||||
raise
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("🏷️ Initialisation des tags prédéfinis...\n")
|
||||
seed_tags()
|
||||
print("\n✨ Terminé!")
|
||||
Reference in New Issue
Block a user