""" Discord webhook utilities for sending submission notifications. """ import os import json import requests from django.conf import settings def send_discord_webhook(submission): """ Sends a discord webhook notification if DISCORD_WEBHOOK is configured. Joe wrote this! """ webhook_url = os.environ.get("DISCORD_WEBHOOK") if not webhook_url: return False try: files = submission.files.all() file_urls = [] # Get file URLs from .email_utils import get_file_urls_with_base_url file_url_data = get_file_urls_with_base_url(files) for item in file_url_data: file_urls.append( { "name": item["file"].original_filename, "url": item["url"], } ) # Build description with file links description_parts = [] if submission.description: description_parts.append(f"**Description:** {submission.description}") if file_urls: description_parts.append("\n**Uploaded Files:**") for file_info in file_urls: description_parts.append(f"- [{file_info['name']}]({file_info['url']})") description = ( "\n".join(description_parts) if description_parts else "No description or files provided." ) # Discord webhook payload payload = { "content": "Somebody submitted a quote!", "embeds": [ { "title": f"New Quote Request - Submission #{submission.id}", "color": 3447003, # Blue color "fields": [ { "name": "Email", "value": submission.email, "inline": True, }, { "name": "Submitted At", "value": submission.submitted_at.strftime( "%Y-%m-%d %H:%M:%S" ), "inline": True, }, ], "description": description, "footer": { "text": f"Submission ID: #{submission.id}", }, } ], } response = requests.post(webhook_url, json=payload, timeout=10) response.raise_for_status() return True except Exception as e: print(f"Error sending Discord webhook: {e}") return False