refactor: rename Wizamart to Orion across entire codebase

Replace all ~1,086 occurrences of Wizamart/wizamart/WIZAMART/WizaMart
with Orion/orion/ORION across 184 files. This includes database
identifiers, email addresses, domain references, R2 bucket names,
DNS prefixes, encryption salt, Celery app name, config defaults,
Docker configs, CI configs, documentation, seed data, and templates.

Renames homepage-wizamart.html template to homepage-orion.html.
Fixes duplicate file_pattern key in api.yaml architecture rule.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-14 16:46:56 +01:00
parent 34ee7bb7ad
commit e9253fbd84
184 changed files with 1227 additions and 1228 deletions

View File

@@ -11,7 +11,7 @@ Architecture:
- Stores MUST configure email settings to send transactional emails
- Platform emails (billing, subscription) still use platform settings
- Advanced providers (SendGrid, Mailgun, SES) are tier-gated (Business+)
- "Powered by Wizamart" footer is added for Essential/Professional tiers
- "Powered by Orion" footer is added for Essential/Professional tiers
"""
import enum

View File

@@ -291,7 +291,7 @@ def _get_sample_variables(template_code: str) -> dict[str, Any]:
"login_url": "https://example.com/login",
"trial_days": "14",
"tier_name": "Business",
"platform_name": "Wizamart",
"platform_name": "Orion",
},
"order_confirmation": {
"customer_name": "Jane Doe",
@@ -300,13 +300,13 @@ def _get_sample_variables(template_code: str) -> dict[str, Any]:
"order_items_count": "3",
"order_date": "2024-01-15",
"shipping_address": "123 Main St, Luxembourg City, L-1234",
"platform_name": "Wizamart",
"platform_name": "Orion",
},
"password_reset": {
"customer_name": "John Doe",
"reset_link": "https://example.com/reset?token=abc123",
"expiry_hours": "1",
"platform_name": "Wizamart",
"platform_name": "Orion",
},
"team_invite": {
"invitee_name": "Jane",
@@ -315,7 +315,7 @@ def _get_sample_variables(template_code: str) -> dict[str, Any]:
"role": "Admin",
"accept_url": "https://example.com/accept",
"expires_in_days": "7",
"platform_name": "Wizamart",
"platform_name": "Orion",
},
"subscription_welcome": {
"store_name": "Acme Corp",
@@ -324,7 +324,7 @@ def _get_sample_variables(template_code: str) -> dict[str, Any]:
"amount": "€49.99",
"next_billing_date": "2024-02-15",
"dashboard_url": "https://example.com/dashboard",
"platform_name": "Wizamart",
"platform_name": "Orion",
},
"payment_failed": {
"store_name": "Acme Corp",
@@ -332,15 +332,15 @@ def _get_sample_variables(template_code: str) -> dict[str, Any]:
"amount": "€49.99",
"retry_date": "2024-01-18",
"update_payment_url": "https://example.com/billing",
"support_email": "support@wizamart.com",
"platform_name": "Wizamart",
"support_email": "support@orion.lu",
"platform_name": "Orion",
},
"subscription_cancelled": {
"store_name": "Acme Corp",
"tier_name": "Business",
"end_date": "2024-02-15",
"reactivate_url": "https://example.com/billing",
"platform_name": "Wizamart",
"platform_name": "Orion",
},
"trial_ending": {
"store_name": "Acme Corp",
@@ -349,7 +349,7 @@ def _get_sample_variables(template_code: str) -> dict[str, Any]:
"trial_end_date": "2024-01-18",
"upgrade_url": "https://example.com/upgrade",
"features_list": "Unlimited products, API access, Priority support",
"platform_name": "Wizamart",
"platform_name": "Orion",
},
}
return samples.get(template_code, {"platform_name": "Wizamart"})
return samples.get(template_code, {"platform_name": "Orion"})

View File

@@ -184,9 +184,9 @@ def preview_template(
variables = {
**_get_sample_variables(code),
**preview_data.variables,
"platform_name": "Wizamart",
"platform_name": "Orion",
"store_name": store.name if store else "Your Store",
"support_email": store.contact_email if store else "support@wizamart.com",
"support_email": store.contact_email if store else "support@orion.lu",
}
return service.preview_store_template(
@@ -216,9 +216,9 @@ def send_test_email(
variables = {
**_get_sample_variables(code),
**test_data.variables,
"platform_name": "Wizamart",
"platform_name": "Orion",
"store_name": store.name if store else "Your Store",
"support_email": store.contact_email if store else "support@wizamart.com",
"support_email": store.contact_email if store else "support@orion.lu",
}
try:

View File

@@ -51,24 +51,24 @@ from app.modules.messaging.models import (
logger = logging.getLogger(__name__)
# Platform branding constants
PLATFORM_NAME = "Wizamart"
PLATFORM_SUPPORT_EMAIL = "support@wizamart.com"
PLATFORM_NAME = "Orion"
PLATFORM_SUPPORT_EMAIL = "support@orion.lu"
PLATFORM_DEFAULT_LANGUAGE = "en"
SUPPORTED_LANGUAGES = ["en", "fr", "de", "lb"]
# Tiers that get white-label (no "Powered by Wizamart" footer)
# Tiers that get white-label (no "Powered by Orion" footer)
WHITELABEL_TIERS = {"business", "enterprise"}
# Powered by Wizamart footer (added for Essential/Professional tiers)
# Powered by Orion footer (added for Essential/Professional tiers)
POWERED_BY_FOOTER_HTML = """
<div style="margin-top: 30px; padding-top: 20px; border-top: 1px solid #e5e7eb; text-align: center;">
<p style="color: #9ca3af; font-size: 12px; margin: 0;">
Powered by <a href="https://wizamart.com" style="color: #6b46c1; text-decoration: none;">Wizamart</a>
Powered by <a href="https://orion.lu" style="color: #6b46c1; text-decoration: none;">Orion</a>
</p>
</div>
"""
POWERED_BY_FOOTER_TEXT = "\n\n---\nPowered by Wizamart - https://wizamart.com"
POWERED_BY_FOOTER_TEXT = "\n\n---\nPowered by Orion - https://orion.lu"
@dataclass
@@ -1045,7 +1045,7 @@ class EmailService:
def _should_add_powered_by_footer(self, store_id: int | None) -> bool:
"""
Check if "Powered by Wizamart" footer should be added.
Check if "Powered by Orion" footer should be added.
Footer is added for Essential and Professional tiers.
Business and Enterprise tiers get white-label (no footer).
@@ -1066,7 +1066,7 @@ class EmailService:
store_id: int | None,
) -> tuple[str, str | None]:
"""
Inject "Powered by Wizamart" footer if needed based on tier.
Inject "Powered by Orion" footer if needed based on tier.
Returns:
Tuple of (modified_html, modified_text)
@@ -1168,7 +1168,7 @@ class EmailService:
store_logo_url=store.get_logo_url(),
is_whitelabel=True,
)
# Standard: Wizamart branding with store details
# Standard: Orion branding with store details
return BrandingContext(
platform_name=PLATFORM_NAME,
platform_logo_url=None, # Use default platform logo
@@ -1401,11 +1401,11 @@ class EmailService:
For store emails (when store_id is provided and is_platform_email=False):
- Uses store's SMTP/provider settings if configured
- Uses store's from_email, from_name, reply_to
- Adds "Powered by Wizamart" footer for Essential/Professional tiers
- Adds "Powered by Orion" footer for Essential/Professional tiers
For platform emails (is_platform_email=True or no store_id):
- Uses platform's email settings from config
- No "Powered by Wizamart" footer
- No "Powered by Orion" footer
Args:
is_platform_email: If True, always use platform settings (for billing, etc.)
@@ -1437,7 +1437,7 @@ class EmailService:
from_name = from_name or self._platform_config.get("from_name", settings.email_from_name)
reply_to = reply_to or self._platform_config.get("reply_to") or settings.email_reply_to or None
# Inject "Powered by Wizamart" footer for non-whitelabel tiers
# Inject "Powered by Orion" footer for non-whitelabel tiers
if store_id and not is_platform_email:
body_html, body_text = self._inject_powered_by_footer(
body_html, body_text, store_id

View File

@@ -284,12 +284,12 @@ class StoreEmailSettingsService:
def _send_smtp_test(self, settings: StoreEmailSettings, to_email: str) -> None:
"""Send test email via SMTP."""
msg = MIMEMultipart("alternative")
msg["Subject"] = "Wizamart Email Configuration Test"
msg["Subject"] = "Orion Email Configuration Test"
msg["From"] = f"{settings.from_name} <{settings.from_email}>"
msg["To"] = to_email
text_content = (
"This is a test email from Wizamart.\n\n"
"This is a test email from Orion.\n\n"
"Your email settings are configured correctly!\n\n"
f"Provider: SMTP\n"
f"Host: {settings.smtp_host}\n"
@@ -298,7 +298,7 @@ class StoreEmailSettingsService:
<html>
<body style="font-family: Arial, sans-serif; padding: 20px;">
<h2 style="color: #6b46c1;">Email Configuration Test</h2>
<p>This is a test email from <strong>Wizamart</strong>.</p>
<p>This is a test email from <strong>Orion</strong>.</p>
<p style="color: #22c55e; font-weight: bold;">
Your email settings are configured correctly!
</p>
@@ -341,12 +341,12 @@ class StoreEmailSettingsService:
message = Mail(
from_email=(settings.from_email, settings.from_name),
to_emails=to_email,
subject="Wizamart Email Configuration Test",
subject="Orion Email Configuration Test",
html_content="""
<html>
<body style="font-family: Arial, sans-serif; padding: 20px;">
<h2 style="color: #6b46c1;">Email Configuration Test</h2>
<p>This is a test email from <strong>Wizamart</strong>.</p>
<p>This is a test email from <strong>Orion</strong>.</p>
<p style="color: #22c55e; font-weight: bold;">
Your SendGrid settings are configured correctly!
</p>
@@ -374,12 +374,12 @@ class StoreEmailSettingsService:
data={
"from": f"{settings.from_name} <{settings.from_email}>",
"to": to_email,
"subject": "Wizamart Email Configuration Test",
"subject": "Orion Email Configuration Test",
"html": """
<html>
<body style="font-family: Arial, sans-serif; padding: 20px;">
<h2 style="color: #6b46c1;">Email Configuration Test</h2>
<p>This is a test email from <strong>Wizamart</strong>.</p>
<p>This is a test email from <strong>Orion</strong>.</p>
<p style="color: #22c55e; font-weight: bold;">
Your Mailgun settings are configured correctly!
</p>
@@ -417,14 +417,14 @@ class StoreEmailSettingsService:
Source=f"{settings.from_name} <{settings.from_email}>",
Destination={"ToAddresses": [to_email]},
Message={
"Subject": {"Data": "Wizamart Email Configuration Test"},
"Subject": {"Data": "Orion Email Configuration Test"},
"Body": {
"Html": {
"Data": """
<html>
<body style="font-family: Arial, sans-serif; padding: 20px;">
<h2 style="color: #6b46c1;">Email Configuration Test</h2>
<p>This is a test email from <strong>Wizamart</strong>.</p>
<p>This is a test email from <strong>Orion</strong>.</p>
<p style="color: #22c55e; font-weight: bold;">
Your Amazon SES settings are configured correctly!
</p>

View File

@@ -236,7 +236,7 @@ function emailTemplatesPage() {
expires_in_days: '7'
}
};
return samples[templateCode] || { platform_name: 'Wizamart' };
return samples[templateCode] || { platform_name: 'Orion' };
},
// Test Email

View File

@@ -35,8 +35,8 @@ class TestEmailProviders:
subject="Test Subject",
body_html="<h1>Hello</h1>",
body_text="Hello",
from_email="noreply@wizamart.com",
from_name="Wizamart",
from_email="noreply@orion.lu",
from_name="Orion",
)
assert success is True
@@ -53,9 +53,9 @@ class TestEmailProviders:
subject="Test Subject",
body_html="<h1>Hello</h1>",
body_text=None,
from_email="noreply@wizamart.com",
from_name="Wizamart",
reply_to="support@wizamart.com",
from_email="noreply@orion.lu",
from_name="Orion",
reply_to="support@orion.lu",
)
assert success is True