Adds a new Email link to the instructor dashboard for frontend interface to send
email to course members. Adds a feature flag ENABLE_INSTRUCTOR_EMAIL to toggle this.
Creates a new djangoapp bulk_email that handles this action by getting the recipient
list and batching the emails to different celery tasks to do the actual sending.
Requires lynx package to convert HTML email to plaintext. Handles SMTP errors by
retrying or falling through to the next email. Adds the option to opt out of course
specific emails in the user dashboard with an Email Settings link for each course.
Uses severable configurable settings with defaults. DEFAULT_BULK_FROM_EMAIL
specifies the from address for email. EMAILS_PER_TASK specifies the number of emails
each celery task takes on. EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER,
EMAIL_HOST_PASSWORD, and EMAIL_USE_TLS for the SMTP email backend settings.
Co-authored-by: Akshay Jagadeesh <akjags@gmail.com>
* Make currency a property of the Order (for validation purposes)
* Remove null=True from Char fields
* Use InheritanceManager for subclassing OrderItem
* Change VerifiedCertificate to better handle some new use cases
* Cleaned out old migrations
* Tests!
* Make currency a property of the Order (for validation purposes)
* Remove null=True from Char fields
* Use InheritanceManager for subclassing OrderItem
* Change VerifiedCertificate to better handle some new use cases
* Cleaned out old migrations
* Tests!
Two endpoints are intended to be used by AJAX calls from the web UI with an
authenticated user. When enabled, the value of the preference is an encryption
of the username, to be used as a token for one-click unsubscribe links. The
third endpoint is the target of unsubscribe links, which displays a page with
an appropriate message to the user.
The new API uses Django REST Framework. For now, it is designed specifically
to support the use cases required by the forum digest notifier (not yet built),
with a goal of making it more generally useful over time.