#!/usr/bin/env python3 """ Seed default email templates. Run: python scripts/seed_email_templates.py """ import json import sys from pathlib import Path # Add project root to path sys.path.insert(0, str(Path(__file__).parent.parent)) from app.core.database import get_db from models.database.email import EmailCategory, EmailTemplate # ============================================================================= # EMAIL TEMPLATES # ============================================================================= TEMPLATES = [ # ------------------------------------------------------------------------- # SIGNUP WELCOME # ------------------------------------------------------------------------- { "code": "signup_welcome", "language": "en", "name": "Signup Welcome", "description": "Sent to new vendors after successful signup", "category": EmailCategory.AUTH.value, "variables": json.dumps([ "first_name", "company_name", "email", "vendor_code", "login_url", "trial_days", "tier_name" ]), "subject": "Welcome to Wizamart, {{ first_name }}!", "body_html": """

Welcome to Wizamart!

Hi {{ first_name }},

Thank you for signing up for Wizamart! Your account for {{ company_name }} is now active.

Your Account Details

Vendor Code: {{ vendor_code }}

Plan: {{ tier_name }}

Trial Period: {{ trial_days }} days free

You can start managing your orders, inventory, and invoices right away:

Go to Dashboard

Getting Started

  1. Complete your company profile
  2. Connect your Letzshop API credentials
  3. Import your products
  4. Start syncing orders!

If you have any questions, just reply to this email or visit our help center.

Best regards,
The Wizamart Team

© 2024 Wizamart. Built for Luxembourg e-commerce.

""", "body_text": """Welcome to Wizamart! Hi {{ first_name }}, Thank you for signing up for Wizamart! Your account for {{ company_name }} is now active. Your Account Details: - Vendor Code: {{ vendor_code }} - Plan: {{ tier_name }} - Trial Period: {{ trial_days }} days free You can start managing your orders, inventory, and invoices right away. Go to Dashboard: {{ login_url }} Getting Started: 1. Complete your company profile 2. Connect your Letzshop API credentials 3. Import your products 4. Start syncing orders! If you have any questions, just reply to this email. Best regards, The Wizamart Team """, }, { "code": "signup_welcome", "language": "fr", "name": "Bienvenue après inscription", "description": "Envoyé aux nouveaux vendeurs après inscription", "category": EmailCategory.AUTH.value, "variables": json.dumps([ "first_name", "company_name", "email", "vendor_code", "login_url", "trial_days", "tier_name" ]), "subject": "Bienvenue sur Wizamart, {{ first_name }} !", "body_html": """

Bienvenue sur Wizamart !

Bonjour {{ first_name }},

Merci de vous être inscrit sur Wizamart ! Votre compte pour {{ company_name }} est maintenant actif.

Détails de votre compte

Code vendeur : {{ vendor_code }}

Forfait : {{ tier_name }}

Période d'essai : {{ trial_days }} jours gratuits

Vous pouvez commencer à gérer vos commandes, stocks et factures dès maintenant :

Accéder au tableau de bord

Pour commencer

  1. Complétez votre profil d'entreprise
  2. Connectez vos identifiants API Letzshop
  3. Importez vos produits
  4. Commencez à synchroniser vos commandes !

Si vous avez des questions, répondez simplement à cet email.

Cordialement,
L'équipe Wizamart

© 2024 Wizamart. Conçu pour le e-commerce luxembourgeois.

""", "body_text": """Bienvenue sur Wizamart ! Bonjour {{ first_name }}, Merci de vous être inscrit sur Wizamart ! Votre compte pour {{ company_name }} est maintenant actif. Détails de votre compte : - Code vendeur : {{ vendor_code }} - Forfait : {{ tier_name }} - Période d'essai : {{ trial_days }} jours gratuits Accéder au tableau de bord : {{ login_url }} Pour commencer : 1. Complétez votre profil d'entreprise 2. Connectez vos identifiants API Letzshop 3. Importez vos produits 4. Commencez à synchroniser vos commandes ! Cordialement, L'équipe Wizamart """, }, { "code": "signup_welcome", "language": "de", "name": "Willkommen nach Anmeldung", "description": "An neue Verkäufer nach erfolgreicher Anmeldung gesendet", "category": EmailCategory.AUTH.value, "variables": json.dumps([ "first_name", "company_name", "email", "vendor_code", "login_url", "trial_days", "tier_name" ]), "subject": "Willkommen bei Wizamart, {{ first_name }}!", "body_html": """

Willkommen bei Wizamart!

Hallo {{ first_name }},

Vielen Dank für Ihre Anmeldung bei Wizamart! Ihr Konto für {{ company_name }} ist jetzt aktiv.

Ihre Kontodaten

Verkäufercode: {{ vendor_code }}

Tarif: {{ tier_name }}

Testzeitraum: {{ trial_days }} Tage kostenlos

Sie können sofort mit der Verwaltung Ihrer Bestellungen, Bestände und Rechnungen beginnen:

Zum Dashboard

Erste Schritte

  1. Vervollständigen Sie Ihr Firmenprofil
  2. Verbinden Sie Ihre Letzshop API-Zugangsdaten
  3. Importieren Sie Ihre Produkte
  4. Starten Sie die Bestellungssynchronisierung!

Bei Fragen antworten Sie einfach auf diese E-Mail.

Mit freundlichen Grüßen,
Das Wizamart-Team

© 2024 Wizamart. Entwickelt für den luxemburgischen E-Commerce.

""", "body_text": """Willkommen bei Wizamart! Hallo {{ first_name }}, Vielen Dank für Ihre Anmeldung bei Wizamart! Ihr Konto für {{ company_name }} ist jetzt aktiv. Ihre Kontodaten: - Verkäufercode: {{ vendor_code }} - Tarif: {{ tier_name }} - Testzeitraum: {{ trial_days }} Tage kostenlos Zum Dashboard: {{ login_url }} Erste Schritte: 1. Vervollständigen Sie Ihr Firmenprofil 2. Verbinden Sie Ihre Letzshop API-Zugangsdaten 3. Importieren Sie Ihre Produkte 4. Starten Sie die Bestellungssynchronisierung! Mit freundlichen Grüßen, Das Wizamart-Team """, }, { "code": "signup_welcome", "language": "lb", "name": "Wëllkomm no der Umeldung", "description": "Un nei Verkeefer no erfollegräicher Umeldung geschéckt", "category": EmailCategory.AUTH.value, "variables": json.dumps([ "first_name", "company_name", "email", "vendor_code", "login_url", "trial_days", "tier_name" ]), "subject": "Wëllkomm op Wizamart, {{ first_name }}!", "body_html": """

Wëllkomm op Wizamart!

Moien {{ first_name }},

Merci fir d'Umeldung op Wizamart! Äre Kont fir {{ company_name }} ass elo aktiv.

Är Kontdetailer

Verkeefer Code: {{ vendor_code }}

Plang: {{ tier_name }}

Testperiod: {{ trial_days }} Deeg gratis

Dir kënnt direkt ufänken Är Bestellungen, Lager a Rechnungen ze verwalten:

Zum Dashboard

Fir unzefänken

  1. Fëllt Äre Firmeprofil aus
  2. Verbindt Är Letzshop API Zougangsdaten
  3. Importéiert Är Produkter
  4. Fänkt un Bestellungen ze synchroniséieren!

Wann Dir Froen hutt, äntwert einfach op dës E-Mail.

Mat beschte Gréiss,
D'Wizamart Team

© 2024 Wizamart. Gemaach fir de lëtzebuergeschen E-Commerce.

""", "body_text": """Wëllkomm op Wizamart! Moien {{ first_name }}, Merci fir d'Umeldung op Wizamart! Äre Kont fir {{ company_name }} ass elo aktiv. Är Kontdetailer: - Verkeefer Code: {{ vendor_code }} - Plang: {{ tier_name }} - Testperiod: {{ trial_days }} Deeg gratis Zum Dashboard: {{ login_url }} Fir unzefänken: 1. Fëllt Äre Firmeprofil aus 2. Verbindt Är Letzshop API Zougangsdaten 3. Importéiert Är Produkter 4. Fänkt un Bestellungen ze synchroniséieren! Mat beschte Gréiss, D'Wizamart Team """, }, # ------------------------------------------------------------------------- # ORDER CONFIRMATION # ------------------------------------------------------------------------- { "code": "order_confirmation", "language": "en", "name": "Order Confirmation", "description": "Sent to customers after placing an order", "category": EmailCategory.ORDERS.value, "variables": json.dumps([ "customer_name", "order_number", "order_total", "order_items_count", "order_date", "shipping_address" ]), "subject": "Order Confirmation - {{ order_number }}", "body_html": """

Order Confirmed!

Hi {{ customer_name }},

Thank you for your order! We've received your order and it's being processed.

Order Details

Order Number: {{ order_number }}

Date: {{ order_date }}

Items: {{ order_items_count }}

Total: {{ order_total }}

Shipping Address

{{ shipping_address }}

You will receive another email when your order ships.

If you have any questions about your order, please contact us.

Thank you for shopping with us!
The Team

This is an automated email. Please do not reply directly.

""", "body_text": """Order Confirmed! Hi {{ customer_name }}, Thank you for your order! We've received your order and it's being processed. Order Details: - Order Number: {{ order_number }} - Date: {{ order_date }} - Items: {{ order_items_count }} - Total: {{ order_total }} Shipping Address: {{ shipping_address }} You will receive another email when your order ships. Thank you for shopping with us! """, }, { "code": "order_confirmation", "language": "fr", "name": "Confirmation de commande", "description": "Envoyé aux clients après avoir passé une commande", "category": EmailCategory.ORDERS.value, "variables": json.dumps([ "customer_name", "order_number", "order_total", "order_items_count", "order_date", "shipping_address" ]), "subject": "Confirmation de commande - {{ order_number }}", "body_html": """

Commande confirmée !

Bonjour {{ customer_name }},

Merci pour votre commande ! Nous l'avons bien reçue et elle est en cours de traitement.

Détails de la commande

Numéro de commande : {{ order_number }}

Date : {{ order_date }}

Articles : {{ order_items_count }}

Total : {{ order_total }}

Adresse de livraison

{{ shipping_address }}

Vous recevrez un autre email lors de l'expédition de votre commande.

Si vous avez des questions concernant votre commande, n'hésitez pas à nous contacter.

Merci pour votre achat !
L'équipe

""", "body_text": """Commande confirmée ! Bonjour {{ customer_name }}, Merci pour votre commande ! Nous l'avons bien reçue et elle est en cours de traitement. Détails de la commande : - Numéro de commande : {{ order_number }} - Date : {{ order_date }} - Articles : {{ order_items_count }} - Total : {{ order_total }} Adresse de livraison : {{ shipping_address }} Vous recevrez un autre email lors de l'expédition de votre commande. Merci pour votre achat ! """, }, { "code": "order_confirmation", "language": "de", "name": "Bestellbestätigung", "description": "An Kunden nach einer Bestellung gesendet", "category": EmailCategory.ORDERS.value, "variables": json.dumps([ "customer_name", "order_number", "order_total", "order_items_count", "order_date", "shipping_address" ]), "subject": "Bestellbestätigung - {{ order_number }}", "body_html": """

Bestellung bestätigt!

Hallo {{ customer_name }},

Vielen Dank für Ihre Bestellung! Wir haben Ihre Bestellung erhalten und sie wird bearbeitet.

Bestelldetails

Bestellnummer: {{ order_number }}

Datum: {{ order_date }}

Artikel: {{ order_items_count }}

Summe: {{ order_total }}

Lieferadresse

{{ shipping_address }}

Sie erhalten eine weitere E-Mail, sobald Ihre Bestellung versandt wird.

Bei Fragen zu Ihrer Bestellung kontaktieren Sie uns bitte.

Vielen Dank für Ihren Einkauf!
Das Team

""", "body_text": """Bestellung bestätigt! Hallo {{ customer_name }}, Vielen Dank für Ihre Bestellung! Wir haben Ihre Bestellung erhalten und sie wird bearbeitet. Bestelldetails: - Bestellnummer: {{ order_number }} - Datum: {{ order_date }} - Artikel: {{ order_items_count }} - Summe: {{ order_total }} Lieferadresse: {{ shipping_address }} Sie erhalten eine weitere E-Mail, sobald Ihre Bestellung versandt wird. Vielen Dank für Ihren Einkauf! """, }, { "code": "order_confirmation", "language": "lb", "name": "Bestellung Konfirmatioun", "description": "Un Clienten no enger Bestellung geschéckt", "category": EmailCategory.ORDERS.value, "variables": json.dumps([ "customer_name", "order_number", "order_total", "order_items_count", "order_date", "shipping_address" ]), "subject": "Bestellung Konfirmatioun - {{ order_number }}", "body_html": """

Bestellung confirméiert!

Moien {{ customer_name }},

Merci fir Är Bestellung! Mir hunn Är Bestellung kritt an si gëtt beaarbecht.

Bestelldetailer

Bestellnummer: {{ order_number }}

Datum: {{ order_date }}

Artikelen: {{ order_items_count }}

Total: {{ order_total }}

Liwweradress

{{ shipping_address }}

Dir kritt eng weider E-Mail wann Är Bestellung verschéckt gëtt.

Wann Dir Froen iwwer Är Bestellung hutt, kontaktéiert eis w.e.g.

Merci fir Ären Akaf!
D'Team

""", "body_text": """Bestellung confirméiert! Moien {{ customer_name }}, Merci fir Är Bestellung! Mir hunn Är Bestellung kritt an si gëtt beaarbecht. Bestelldetailer: - Bestellnummer: {{ order_number }} - Datum: {{ order_date }} - Artikelen: {{ order_items_count }} - Total: {{ order_total }} Liwweradress: {{ shipping_address }} Dir kritt eng weider E-Mail wann Är Bestellung verschéckt gëtt. Merci fir Ären Akaf! """, }, ] def seed_templates(): """Seed email templates into database.""" db = next(get_db()) try: created = 0 updated = 0 for template_data in TEMPLATES: # Check if template already exists existing = ( db.query(EmailTemplate) .filter( EmailTemplate.code == template_data["code"], EmailTemplate.language == template_data["language"], ) .first() ) if existing: # Update existing template for key, value in template_data.items(): setattr(existing, key, value) updated += 1 print(f"Updated: {template_data['code']} ({template_data['language']})") else: # Create new template template = EmailTemplate(**template_data) db.add(template) created += 1 print(f"Created: {template_data['code']} ({template_data['language']})") db.commit() print(f"\nDone! Created: {created}, Updated: {updated}") except Exception as e: db.rollback() print(f"Error: {e}") raise finally: db.close() if __name__ == "__main__": seed_templates()