zulip/zerver
The Dance a028a6b9fd custom_emails: Prevent duplicate emails from send_custom_email command.
This adds infrastructure to prevent duplicate custom emails from being
sent to users when the management command is run multiple times
with identical email template content.
The implementation uses RealmAuditLog tracking with a new
CUSTOM_EMAIL_SENT event type (810) that stores a hash of the email
template content.

Fixes: #19529.
2025-11-02 11:17:09 -08:00
..
actions push_notifications: Clear push notifications on message deletion. 2025-10-31 16:05:21 -07:00
data_import slack: Requote image_url in render_attachment. 2025-10-10 09:52:50 -07:00
lib custom_emails: Prevent duplicate emails from send_custom_email command. 2025-11-02 11:17:09 -08:00
management custom_emails: Prevent duplicate emails from send_custom_email command. 2025-11-02 11:17:09 -08:00
migrations push_notifications: Clear push notifications on message deletion. 2025-10-31 16:05:21 -07:00
models custom_emails: Prevent duplicate emails from send_custom_email command. 2025-11-02 11:17:09 -08:00
openapi openapi: Link server_thumbnail_formats to image formatting docs. 2025-10-20 10:10:24 -07:00
tests custom_emails: Prevent duplicate emails from send_custom_email command. 2025-11-02 11:17:09 -08:00
tornado event_queue: Add compatibility code for push_device_registered_user_ids. 2025-09-19 09:19:36 -07:00
transaction_tests test_user_groups: Add durable=True to the independent transaction. 2024-11-21 14:55:15 -08:00
views docs: Remove trailing slash from canonical URL for non-root docs. 2025-10-22 13:48:23 -04:00
webhooks webhooks_gitea: Add tests and fixture for correct actor on PR close. 2025-10-21 13:23:31 -07:00
worker thumbnail: Avoid BytesIO.getbuffer. 2025-08-13 14:11:05 -07:00
__init__.py
apps.py forms: Use monkey-patched SetPasswordForm generic. 2025-07-15 07:32:44 -07:00
context_processors.py realm_creation_form: Capture import_from if realm import enabled. 2025-04-30 00:06:43 -07:00
decorator.py zephyr: Remove Zephyr mirroring support. 2025-09-16 11:18:18 -07:00
filters.py filters: Do not report AVATAR_SALT, or other salts. 2025-03-13 09:36:07 -07:00
forms.py forms: Correct TOTP token minimum value to 0. 2025-10-22 11:30:03 -07:00
logging_handlers.py ruff: Fix UP007 Use X | Y for type annotations. 2024-07-13 22:28:22 -07:00
middleware.py zephyr: Remove Zephyr mirroring support. 2025-09-16 11:18:18 -07:00
signals.py signals: Extract function to convert datetime to readable string. 2025-10-01 11:25:00 -07:00