Commit Graph

53 Commits

Author SHA1 Message Date
njdup
32bbb0e71a Implements keyword sub feature for bulk emails
This commit pulls in changes from #4487 that implements keyword
substitution for bulk emails. With these changes, an instructor can
include keywords in their bulk emails which will be automatically substituted
with the corresponding value for the recepient of the email. Keywords are
of the form %%keyword%%, and the keywords implemented in this commit include:

%%USER_ID%% => anonymous_user_id
%%USER_FULLNAME%% => user profile name
%%COURSE_DISPLAY_NAME%% => display name of the course
%%COURSE_END_DATE%% => end date of the course

Client-side validations have also been implemented to ensure that only emails
with well-formed keywords can be sent.
The architecture is designed such that adding in new keywords in the future
would be relatively straight-forward.
2014-12-11 15:03:29 -08:00
Sarina Canelake
89b6adadf2 s/pylint: disable=E1102/pylint: disable=not-callable/ 2014-12-01 11:22:10 -05:00
Sarina Canelake
aa7cc2b79e s/pylint: disable=E0702/pylint: disable=raising-bad-type/ 2014-12-01 11:22:10 -05:00
Braden MacDonald
a8f622af7f Consistently ensure dog_stats_api tags are formatted correctly 2014-10-09 12:35:26 -07:00
Chris Dodge
1809a28b89 Add the ability for Microsites to be able to send appropriately branded emails rather than the default system installed version
fix tests. Update Admin views/forms.

enforce uniqueness constraint in the Admin ModelForm submissions

Update bok_choy cached DBs with new schema changes

PR feedback
2014-10-08 13:04:41 -04:00
Julia Hansbrough
6ccb11f03e Change Location, CourseLocator, etc to reference opaque-keys library 2014-05-30 20:32:38 +00:00
Adam Palay
5b769df452 No longer chunk queries when sending out bulk email (LMS-2718)
refactor _generate_items_for_subtask not to chunk queries

use django's iterator methor for querysets

remove bulk email query settings

use read_replica if available, since this is read-only

update changelog
2014-05-29 09:10:25 -04:00
Sarina Canelake
bf32f5a7b9 Opaque-keys: fix pep8 violations 2014-05-23 14:22:54 -04:00
Calen Pennington
eb11ba76a7 Better unicode handling in instructor tasks/bulk-email 2014-05-09 09:23:51 -04:00
Calen Pennington
cd746bf8e5 Make course ids and usage ids opaque to LMS and Studio [partial commit]
This commit adds the non-courseware lms/djangoapps and lms/lib.

These keys are now objects with a limited interface, and the particular
internal representation is managed by the data storage layer (the
modulestore).

For the LMS, there should be no outward-facing changes to the system.
The keys are, for now, a change to internal representation only. For
Studio, the new serialized form of the keys is used in urls, to allow
for further migration in the future.

Co-Author: Andy Armstrong <andya@edx.org>
Co-Author: Christina Roberts <christina@edx.org>
Co-Author: David Baumgold <db@edx.org>
Co-Author: Diana Huang <dkh@edx.org>
Co-Author: Don Mitchell <dmitchell@edx.org>
Co-Author: Julia Hansbrough <julia@edx.org>
Co-Author: Nimisha Asthagiri <nasthagiri@edx.org>
Co-Author: Sarina Canelake <sarina@edx.org>

[LMS-2370]
2014-05-08 12:09:23 -04:00
Don Mitchell
81a92e4bfc Consolidate course_id triple parsing 2014-02-24 11:45:59 -05:00
Jay Zoldak
9c4a9d8f64 Make code safe for unicode course ids 2014-01-31 16:35:56 -05:00
Jay Zoldak
bc30addfb9 Unicode changes to support QRF
fixing unit tests

fixing merge error

fixing xqueue submission issue with unicode url (trial 0.1)

fixing fotmats as commented upon

removing yaml file language selection

Unicode changes to support QRF

removed unnecessary pass in modulestore/init.py

fixing merge error

fixing fotmats as commented upon

removing yaml file language selection

fixing pep8 violations

- fixing pylint violations

pylint violation

fixing line spaces and formats

ignore pylint E1101

remove empty line

fixing pylint violations

 pep8 violations

bulk mail unicode/decode

fix migration error

fix pep8 just to push again

more unicode/decode
Final changes to comments and error messages.
2014-01-30 16:20:36 -05:00
Don Mitchell
858e354a6d Moved roles.py to common student 2014-01-14 17:04:43 -05:00
Calen Pennington
061a46beef Formalize various access roles as objects
This centralizes the logic for group membership, and means that we
don't need to make queries to find out whether the legacy groups names exist.
2013-11-13 13:42:37 -05:00
Brian Wilson
5b48ed840b Refactor subtask creation logic to be less email-specific. 2013-10-28 12:58:11 -04:00
Brian Wilson
0f8f82c845 Define and use SubtaskStatus class. 2013-10-28 12:57:41 -04:00
Brian Wilson
ed4b954a53 Remove the use of celery.group from bulk email subtasks. 2013-10-28 12:47:11 -04:00
Brian Wilson
16b85c0c2a Check for requeued subtasks when in RETRY state. 2013-10-22 18:17:00 -04:00
Brian Wilson
ba6477abef Handle all exceptions returned by django-ses. 2013-10-18 15:12:07 -04:00
Brian Wilson
a699674015 Check that a subtask has not already completed before running. 2013-10-17 13:32:44 -04:00
Sarina Canelake
86c4a03eba admin-console support for enabling email per course 2013-10-16 13:02:41 -04:00
Brian Wilson
b8239068cb Check that email subtasks are known to the InstructorTask before executing. 2013-10-16 13:02:41 -04:00
Brian Wilson
87a72b7e99 Rename some constants, and refactor bulk email task flow. 2013-10-16 13:02:40 -04:00
Brian Wilson
bc599a0662 Update tests with more complete coverage. 2013-10-16 13:02:40 -04:00
Brian Wilson
4505fb4e2c Update InstructorTask before performing a retry. 2013-10-16 13:02:40 -04:00
Brian Wilson
c5debc22e7 Add settings to cap infinite retries. 2013-10-16 13:02:36 -04:00
Brian Wilson
41fcd9627b Don't send emails to students who haven't activated. 2013-10-16 13:02:00 -04:00
Brian Wilson
eaec962de9 Internationalize task progress. 2013-10-16 13:01:59 -04:00
Brian Wilson
df0fba9db8 Add more task-level tests for retries and other errors. Respond to initial comments. 2013-10-16 13:01:59 -04:00
Brian Wilson
a4c35ac4ff Use separate retry count for calculating retry delay. 2013-10-16 13:01:59 -04:00
Brian Wilson
7b7afd472d Incorporate changes in max_retry logic, adding subtask_status as bulk_email arg. 2013-10-16 13:01:59 -04:00
Brian Wilson
08a08448ee Add some handling for SES exceptions. 2013-10-16 13:01:59 -04:00
Brian Wilson
c133fd9168 Use HIGH_PRIORITY_QUEUE for send_course_email. 2013-10-16 13:01:59 -04:00
Brian Wilson
0fd75181e3 Update handling of bulk-email retries to update InstructorTask before each retry. 2013-10-16 13:01:58 -04:00
Brian Wilson
5c29530db9 Factor out subtask-specific code into subtasks.py. 2013-10-16 13:01:58 -04:00
Brian Wilson
01611c33a6 Refactor instructor_task tests, and add handling for general errors in bulk_email subtasks. 2013-10-16 13:01:58 -04:00
Brian Wilson
2f4774f47c Pass status into course_email for tracking retry status. 2013-10-16 13:01:58 -04:00
Brian Wilson
ffbb228acb Add support for counting and reporting skips in background tasks. 2013-10-16 13:01:58 -04:00
Brian Wilson
8fddcdffcd Initial refactoring for bulk_email monitoring. 2013-10-16 13:01:57 -04:00
Carlos Andrés Rocha
ee0004e2f8 Remove dogstatsd-python in favor of dogapi
Also added datadog application to commom django apps and set it to use
a local statsd server by default.
2013-09-11 19:28:58 -04:00
Sarina Canelake
4b9df2e998 Add datadog tracking for bulk email 2013-09-06 16:18:40 -04:00
Sarina Canelake
bfebe684b3 Cleanup bulk email app 2013-09-03 16:11:34 -04:00
Will Daly
1400271b0b Instrumented course email for DataDog 2013-08-30 11:56:15 -04:00
Jason Bau
c160a189ad Bulk email - final tweaks and cleanup 2013-08-29 12:40:34 -04:00
Brian Wilson
8f93051d30 Add editable templates for bulk email
Adds the edX Marketing-approved template as html default.
2013-08-29 12:40:34 -04:00
Jason Bau
d341d6d26d Change optout to use user.id instead of email.
Includes Data + Schema migrations for optout email -> user.id change.
Note that migrations should be reversible.
2013-08-29 12:40:33 -04:00
Sarina Canelake
e6bde93837 Change bulk email model field names and add migrations 2013-08-29 12:40:33 -04:00
Sarina Canelake
b3bc4023b0 Refactor html->plaintext conversion (for bulk email) into separate library 2013-08-29 12:40:33 -04:00
Sarina Canelake
f98d6764b2 Disable bulk email for XML-backed courses 2013-08-29 12:40:32 -04:00