Files
smoothschedule/.gemini/tmp/update_email_template.py
poduck 05ebd0f2bb feat: Email templates, bulk delete, communication credits, plan features
- Add email template presets for Browse Templates tab (12 templates)
- Add bulk selection and deletion for My Templates tab
- Add communication credits system with Twilio integration
- Add payment views for credit purchases and auto-reload
- Add SMS reminder and masked calling plan permissions
- Fix appointment status mapping (frontend/backend mismatch)
- Clear masquerade stack on login/logout for session hygiene
- Update platform settings with credit configuration
- Add new migrations for Twilio and Stripe payment fields

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 01:42:38 -05:00

126 lines
6.7 KiB
Python

from schedule.models import EmailTemplate
import json
html_content = """
<body style="margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background-color: #f5f5f5;">
<table width="100%" cellpadding="0" cellspacing="0" style="background-color: #f5f5f5; padding: 40px 20px;">
<tbody><tr>
<td align="center">
<table width="600" cellpadding="0" cellspacing="0" style="background-color: #ffffff; border-radius: 6px; box-shadow: 0 4px 6px rgba(0,0,0,0.05), 0 1px 3px rgba(0,0,0,0.08);">
<!-- Header -->
<tbody><tr>
<td style="background-color: #4f46e5; padding: 30px; text-align: center; border-radius: 6px 6px 0 0;">
<h1 style="margin: 0; color: #ffffff; font-size: 28px; font-weight: 600;">Appointment Confirmed</h1>
</td>
</tr>
<!-- Body -->
<tr>
<td style="padding: 40px 30px;">
<p style="margin: 0 0 20px 0; color: #374151; font-size: 16px; line-height: 1.6;">
Hello <strong>{{CUSTOMER_NAME}}</strong>,
</p>
<p style="margin: 0 0 30px 0; color: #374151; font-size: 16px; line-height: 1.6;">
Your appointment has been confirmed. We look forward to seeing you!
</p>
<!-- Appointment Details Card -->
<table width="100%" cellpadding="0" cellspacing="0" style="background-color: #f5f5f5; border-radius: 6px; border: 1px solid #e5e7eb; margin-bottom: 30px;">
<tbody><tr>
<td style="padding: 20px;">
<table width="100%" cellpadding="8" cellspacing="0">
<tbody><tr>
<td style="color: #6b7280; font-size: 14px; font-weight: 600;">Service:</td>
<td style="color: #111827; font-size: 14px; text-align: right;">{{SERVICE_NAME}}</td>
</tr>
<tr>
<td style="color: #6b7280; font-size: 14px; font-weight: 600;">Date &amp; Time:</td>
<td style="color: #111827; font-size: 14px; text-align: right;">{{EVENT_START_DATETIME}}</td>
</tr>
<tr>
<td style="color: #6b7280; font-size: 14px; font-weight: 600;">Duration:</td>
<td style="color: #111827; font-size: 14px; text-align: right;">{{SERVICE_DURATION}} minutes</td>
</tr>
<tr>
<td style="color: #6b7280; font-size: 14px; font-weight: 600;">With:</td>
<td style="color: #111827; font-size: 14px; text-align: right;">{{STAFF_NAME}}</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<!-- Call to Action Button (example - not in original but good to show professional button style) -->
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="margin-bottom: 30px;">
<tr>
<td align="center" style="padding-top: 10px;">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" bgcolor="#4f46e5" style="border-radius: 5px; background-color: #4f46e5; padding: 12px 25px;">
<a href="{{VIEW_APPOINTMENT_LINK}}" target="_blank" style="font-size: 16px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: #ffffff; text-decoration: none; font-weight: 600; display: inline-block;">View My Appointment</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<p style="margin: 0 0 20px 0; color: #6b7280; font-size: 14px; line-height: 1.6;">
If you need to reschedule or cancel, please contact us at least 24 hours in advance.
</p>
</td>
</tr>
<!-- Footer -->
<tr>
<td style="background-color: #f9fafb; padding: 20px 30px; text-align: center; border-radius: 0 0 6px 6px; border-top: 1px solid #e5e7eb;">
<p style="margin: 0; color: #6b7280; font-size: 14px;">
<strong>{{BUSINESS_NAME}}</strong><br>
{{BUSINESS_EMAIL}} | {{BUSINESS_PHONE}}
</p>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</body>
"""
text_content = """
Hello {{CUSTOMER_NAME}},
Your appointment has been confirmed. We look forward to seeing you!
---
Appointment Details:
Service: {{SERVICE_NAME}}
Date & Time: {{EVENT_START_DATETIME}}
Duration: {{SERVICE_DURATION}} minutes
With: {{STAFF_NAME}}
---
If you need to reschedule or cancel, please contact us at least 24 hours in advance.
View your appointment: {{VIEW_APPOINTMENT_LINK}}
---
{{BUSINESS_NAME}}
{{BUSINESS_EMAIL}} | {{BUSINESS_PHONE}}
"""
template_name = "Appointment Confirmed" # Assuming this is the name of the template to update
try:
template = EmailTemplate.objects.get(name=template_name)
template.html_content = html_content
template.text_content = text_content
template.save()
print(f"Successfully updated template '{template_name}'.")
except EmailTemplate.DoesNotExist:
print(f"Error: Template '{template_name}' not found.")
except Exception as e:
print(f"An error occurred: {e}")