Commit 5a8d0f52 by Sylvia Pearce Committed by Waheed Ahmed

Update email messages for Publisher

parent 8b2944c6
...@@ -288,11 +288,12 @@ class UpdateCourseRunViewTests(TestCase): ...@@ -288,11 +288,12 @@ class UpdateCourseRunViewTests(TestCase):
# Verify that `lms_course_id` and `changed_by` are not None # Verify that `lms_course_id` and `changed_by` are not None
self.assert_course_key_and_changed_by(lms_course_id=lms_course_id, changed_by=self.user) self.assert_course_key_and_changed_by(lms_course_id=lms_course_id, changed_by=self.user)
course_key = CourseKey.from_string(lms_course_id)
# Assert email sent # Assert email sent
self.assert_email_sent( self.assert_email_sent(
reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.course_run.id}), reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.course_run.id}),
'Studio instance created', 'Studio URL created: {title} {run}'.format(title=self.course_run.course.title, run=course_key.run),
'EdX has created a Studio instance for ' 'has created a Studio URL'
) )
def assert_course_key_and_changed_by(self, lms_course_id=None, changed_by=None): def assert_course_key_and_changed_by(self, lms_course_id=None, changed_by=None):
...@@ -756,7 +757,7 @@ class ChangeCourseRunStateViewTests(TestCase): ...@@ -756,7 +757,7 @@ class ChangeCourseRunStateViewTests(TestCase):
self.assertEqual([course.course_team_admin.email], mail.outbox[0].to) self.assertEqual([course.course_team_admin.email], mail.outbox[0].to)
course_key = CourseKey.from_string(self.course_run.lms_course_id) course_key = CourseKey.from_string(self.course_run.lms_course_id)
expected_subject = 'Publication complete: {course_name} {run_number}'.format( expected_subject = 'Publication complete: About page for {course_name} {run_number}'.format(
course_name=course.title, course_name=course.title,
run_number=course_key.run run_number=course_key.run
) )
......
...@@ -14,16 +14,19 @@ from course_discovery.apps.publisher.utils import is_email_notification_enabled ...@@ -14,16 +14,19 @@ from course_discovery.apps.publisher.utils import is_email_notification_enabled
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def send_email_for_studio_instance_created(course_run, updated_text=_('created')): def send_email_for_studio_instance_created(course_run):
""" Send an email to course team on studio instance creation. """ Send an email to course team on studio instance creation.
Arguments: Arguments:
course_run (CourseRun): CourseRun object course_run (CourseRun): CourseRun object
updated_text (String): String object
""" """
try: try:
course_key = CourseKey.from_string(course_run.lms_course_id)
object_path = reverse('publisher:publisher_course_run_detail', kwargs={'pk': course_run.id}) object_path = reverse('publisher:publisher_course_run_detail', kwargs={'pk': course_run.id})
subject = _('Studio instance {updated_text}').format(updated_text=updated_text) # pylint: disable=no-member subject = _('Studio URL created: {title} {run_number}').format( # pylint: disable=no-member
title=course_run.course.title,
run_number=course_key.run
)
to_addresses = [course_run.course.course_team_admin.email] to_addresses = [course_run.course.course_team_admin.email]
from_address = settings.PUBLISHER_FROM_EMAIL from_address = settings.PUBLISHER_FROM_EMAIL
...@@ -32,7 +35,6 @@ def send_email_for_studio_instance_created(course_run, updated_text=_('created') ...@@ -32,7 +35,6 @@ def send_email_for_studio_instance_created(course_run, updated_text=_('created')
project_coordinator = course_run.course.project_coordinator project_coordinator = course_run.course.project_coordinator
context = { context = {
'updated_text': updated_text,
'course_run': course_run, 'course_run': course_run,
'course_run_page_url': 'https://{host}{path}'.format( 'course_run_page_url': 'https://{host}{path}'.format(
host=Site.objects.get_current().domain.strip('/'), path=object_path host=Site.objects.get_current().domain.strip('/'), path=object_path
...@@ -41,7 +43,8 @@ def send_email_for_studio_instance_created(course_run, updated_text=_('created') ...@@ -41,7 +43,8 @@ def send_email_for_studio_instance_created(course_run, updated_text=_('created')
'from_address': from_address, 'from_address': from_address,
'course_team_name': course_team_admin.get_full_name() or course_team_admin.username, 'course_team_name': course_team_admin.get_full_name() or course_team_admin.username,
'project_coordinator_name': project_coordinator.get_full_name() or project_coordinator.username, 'project_coordinator_name': project_coordinator.get_full_name() or project_coordinator.username,
'contact_us_email': project_coordinator.email 'contact_us_email': project_coordinator.email,
'studio_url': course_run.studio_url
} }
txt_template_path = 'publisher/email/studio_instance_created.txt' txt_template_path = 'publisher/email/studio_instance_created.txt'
...@@ -70,7 +73,7 @@ def send_email_for_course_creation(course, course_run): ...@@ -70,7 +73,7 @@ def send_email_for_course_creation(course, course_run):
txt_template = 'publisher/email/course_created.txt' txt_template = 'publisher/email/course_created.txt'
html_template = 'publisher/email/course_created.html' html_template = 'publisher/email/course_created.html'
subject = _('New Studio instance request for {title}').format(title=course.title) # pylint: disable=no-member subject = _('Studio URL requested: {title}').format(title=course.title) # pylint: disable=no-member
project_coordinator = course.project_coordinator project_coordinator = course.project_coordinator
course_team = course.course_team_admin course_team = course.course_team_admin
...@@ -242,7 +245,8 @@ def send_email_for_send_for_review_course_run(course_run, user): ...@@ -242,7 +245,8 @@ def send_email_for_send_for_review_course_run(course_run, user):
'sender_team': 'course team' if user_role.role == PublisherUserRole.CourseTeam else 'project coordinators', 'sender_team': 'course team' if user_role.role == PublisherUserRole.CourseTeam else 'project coordinators',
'page_url': 'https://{host}{path}'.format( 'page_url': 'https://{host}{path}'.format(
host=Site.objects.get_current().domain.strip('/'), path=page_path host=Site.objects.get_current().domain.strip('/'), path=page_path
) ),
'studio_url': course_run.studio_url
} }
send_course_workflow_email(course, user, subject, txt_template, html_template, context, recipient_user) send_course_workflow_email(course, user, subject, txt_template, html_template, context, recipient_user)
...@@ -469,7 +473,7 @@ def send_course_run_published_email(course_run): ...@@ -469,7 +473,7 @@ def send_course_run_published_email(course_run):
try: try:
if is_email_notification_enabled(course_team_user): if is_email_notification_enabled(course_team_user):
course_key = CourseKey.from_string(course_run.lms_course_id) course_key = CourseKey.from_string(course_run.lms_course_id)
subject = _('Publication complete: {course_name} {run_number}').format( # pylint: disable=no-member subject = _('Publication complete: About page for {course_name} {run_number}').format( # pylint: disable=no-member
course_name=course_run.course.title, course_name=course_run.course.title,
run_number=course_key.run run_number=course_key.run
) )
......
...@@ -26,7 +26,7 @@ class StudioInstanceCreatedEmailTests(TestCase): ...@@ -26,7 +26,7 @@ class StudioInstanceCreatedEmailTests(TestCase):
def setUp(self): def setUp(self):
super(StudioInstanceCreatedEmailTests, self).setUp() super(StudioInstanceCreatedEmailTests, self).setUp()
self.user = UserFactory() self.user = UserFactory()
self.course_run = factories.CourseRunFactory() self.course_run = factories.CourseRunFactory(lms_course_id='course-v1:edX+DemoX+Demo_Course')
# add user in course-user-role table # add user in course-user-role table
factories.CourseUserRoleFactory( factories.CourseUserRoleFactory(
...@@ -55,10 +55,14 @@ class StudioInstanceCreatedEmailTests(TestCase): ...@@ -55,10 +55,14 @@ class StudioInstanceCreatedEmailTests(TestCase):
""" Verify that emails sent successfully for studio instance created.""" """ Verify that emails sent successfully for studio instance created."""
emails.send_email_for_studio_instance_created(self.course_run) emails.send_email_for_studio_instance_created(self.course_run)
course_key = CourseKey.from_string(self.course_run.lms_course_id)
self.assert_email_sent( self.assert_email_sent(
reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.course_run.id}), reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.course_run.id}),
'Studio instance created', 'Studio URL created: {title} {run_number}'.format(
'EdX has created a Studio instance for' title=self.course_run.course.title,
run_number=course_key.run
),
'created a Studio URL for the'
) )
def assert_email_sent(self, object_path, subject, expected_body): def assert_email_sent(self, object_path, subject, expected_body):
...@@ -71,7 +75,7 @@ class StudioInstanceCreatedEmailTests(TestCase): ...@@ -71,7 +75,7 @@ class StudioInstanceCreatedEmailTests(TestCase):
self.assertIn(expected_body, body) self.assertIn(expected_body, body)
page_url = 'https://{host}{path}'.format(host=Site.objects.get_current().domain.strip('/'), path=object_path) page_url = 'https://{host}{path}'.format(host=Site.objects.get_current().domain.strip('/'), path=object_path)
self.assertIn(page_url, body) self.assertIn(page_url, body)
self.assertIn('You can now edit this course in Studio.', body) self.assertIn('Enter course run content in Studio.', body)
self.assertIn('Thanks', body) self.assertIn('Thanks', body)
self.assertIn('This email address is unable to receive replies. For questions or comments', body) self.assertIn('This email address is unable to receive replies. For questions or comments', body)
self.assertIn(self.course_team.full_name, body) self.assertIn(self.course_team.full_name, body)
...@@ -124,7 +128,7 @@ class CourseCreatedEmailTests(TestCase): ...@@ -124,7 +128,7 @@ class CourseCreatedEmailTests(TestCase):
""" Verify that studio instance request email sent successfully.""" """ Verify that studio instance request email sent successfully."""
emails.send_email_for_course_creation(self.course_run.course, self.course_run) emails.send_email_for_course_creation(self.course_run.course, self.course_run)
subject = 'New Studio instance request for {title}'.format(title=self.course_run.course.title) subject = 'Studio URL requested: {title}'.format(title=self.course_run.course.title)
self.assert_email_sent(subject) self.assert_email_sent(subject)
def assert_email_sent(self, subject): def assert_email_sent(self, subject):
...@@ -136,7 +140,7 @@ class CourseCreatedEmailTests(TestCase): ...@@ -136,7 +140,7 @@ class CourseCreatedEmailTests(TestCase):
body = mail.outbox[0].body.strip() body = mail.outbox[0].body.strip()
self.assertIn('{name} created the'.format(name=self.course_team.full_name), body) self.assertIn('{name} created the'.format(name=self.course_team.full_name), body)
self.assertIn('{dashboard_url}'.format(dashboard_url=reverse('publisher:publisher_dashboard')), body) self.assertIn('{dashboard_url}'.format(dashboard_url=reverse('publisher:publisher_dashboard')), body)
self.assertIn('Please create a Studio instance for this course', body) self.assertIn('Please create a Studio URL for this course.', body)
self.assertIn('Thanks', body) self.assertIn('Thanks', body)
def test_email_not_sent_with_notification_disabled(self): def test_email_not_sent_with_notification_disabled(self):
...@@ -370,7 +374,7 @@ class CourseRunMarkAsReviewedEmailTests(TestCase): ...@@ -370,7 +374,7 @@ class CourseRunMarkAsReviewedEmailTests(TestCase):
page_path = reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.course_run.id}) page_path = reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.course_run.id})
page_url = 'https://{host}{path}'.format(host=Site.objects.get_current().domain.strip('/'), path=page_path) page_url = 'https://{host}{path}'.format(host=Site.objects.get_current().domain.strip('/'), path=page_path)
self.assertIn(page_url, body) self.assertIn(page_url, body)
self.assertIn('You can now submit a request for a preview of the course run About page.', body) self.assertIn('The review for this course run is complete.', body)
class CourseRunPreviewEmailTests(TestCase): class CourseRunPreviewEmailTests(TestCase):
...@@ -421,7 +425,7 @@ class CourseRunPreviewEmailTests(TestCase): ...@@ -421,7 +425,7 @@ class CourseRunPreviewEmailTests(TestCase):
page_path = reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.run_state.course_run.id}) page_path = reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.run_state.course_run.id})
page_url = 'https://{host}{path}'.format(host=Site.objects.get_current().domain.strip('/'), path=page_path) page_url = 'https://{host}{path}'.format(host=Site.objects.get_current().domain.strip('/'), path=page_path)
self.assertIn(page_url, body) self.assertIn(page_url, body)
self.assertIn('The course run is now ready for publication.', body) self.assertIn('You can now publish this About page.', body)
def test_preview_accepted_email_with_error(self): def test_preview_accepted_email_with_error(self):
""" Verify that email failure log error message.""" """ Verify that email failure log error message."""
...@@ -523,7 +527,7 @@ class CourseRunPublishedEmailTests(TestCase): ...@@ -523,7 +527,7 @@ class CourseRunPublishedEmailTests(TestCase):
emails.send_course_run_published_email(self.course_run) emails.send_course_run_published_email(self.course_run)
course_key = CourseKey.from_string(self.course_run.lms_course_id) course_key = CourseKey.from_string(self.course_run.lms_course_id)
subject = 'Publication complete: {course_name} {run_number}'.format( subject = 'Publication complete: About page for {course_name} {run_number}'.format(
course_name=self.course_run.course.title, course_name=self.course_run.course.title,
run_number=course_key.run run_number=course_key.run
) )
...@@ -531,9 +535,7 @@ class CourseRunPublishedEmailTests(TestCase): ...@@ -531,9 +535,7 @@ class CourseRunPublishedEmailTests(TestCase):
self.assertEqual([self.course.course_team_admin.email], mail.outbox[0].to) self.assertEqual([self.course.course_team_admin.email], mail.outbox[0].to)
self.assertEqual(str(mail.outbox[0].subject), subject) self.assertEqual(str(mail.outbox[0].subject), subject)
body = mail.outbox[0].body.strip() body = mail.outbox[0].body.strip()
page_path = reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.course_run.id}) self.assertIn(self.course_run.preview_url, body)
page_url = 'https://{host}{path}'.format(host=Site.objects.get_current().domain.strip('/'), path=page_path)
self.assertIn(page_url, body)
self.assertIn(self.course_run.preview_url, body) self.assertIn(self.course_run.preview_url, body)
self.assertIn('has been published', body) self.assertIn('has been published', body)
......
...@@ -14,6 +14,7 @@ from django.forms import model_to_dict ...@@ -14,6 +14,7 @@ from django.forms import model_to_dict
from django.test import TestCase from django.test import TestCase
from guardian.shortcuts import assign_perm from guardian.shortcuts import assign_perm
from mock import patch from mock import patch
from opaque_keys.edx.keys import CourseKey
from pytz import timezone from pytz import timezone
from testfixtures import LogCapture from testfixtures import LogCapture
...@@ -409,7 +410,7 @@ class CreateCourseRunViewTests(TestCase): ...@@ -409,7 +410,7 @@ class CreateCourseRunViewTests(TestCase):
# Verify that and email is sent for studio instance request to project coordinator. # Verify that and email is sent for studio instance request to project coordinator.
self.assertEqual(len(mail.outbox), 1) self.assertEqual(len(mail.outbox), 1)
self.assertEqual([self.course.project_coordinator.email], mail.outbox[0].to) self.assertEqual([self.course.project_coordinator.email], mail.outbox[0].to)
expected_subject = 'New Studio instance request for {title}'.format(title=self.course.title) expected_subject = 'Studio URL requested: {title}'.format(title=self.course.title)
self.assertEqual(str(mail.outbox[0].subject), expected_subject) self.assertEqual(str(mail.outbox[0].subject), expected_subject)
def test_seat_without_price(self): def test_seat_without_price(self):
...@@ -2534,10 +2535,11 @@ class CourseRunEditViewTests(TestCase): ...@@ -2534,10 +2535,11 @@ class CourseRunEditViewTests(TestCase):
self.new_course_run = CourseRun.objects.get(id=self.new_course_run.id) self.new_course_run = CourseRun.objects.get(id=self.new_course_run.id)
self.assertEqual(self.new_course_run.lms_course_id, self.updated_dict['lms_course_id']) self.assertEqual(self.new_course_run.lms_course_id, self.updated_dict['lms_course_id'])
course_key = CourseKey.from_string(self.new_course_run.lms_course_id)
self.assert_email_sent( self.assert_email_sent(
reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.new_course_run.id}), reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.new_course_run.id}),
'Studio instance updated', 'Studio URL created: {title} {run}'.format(title=self.new_course.title, run=course_key.run),
'EdX has updated a Studio instance for ' 'has created a Studio URL'
) )
def test_effort_on_edit_page(self): def test_effort_on_edit_page(self):
...@@ -2885,5 +2887,5 @@ class CreateRunFromDashboardViewTests(TestCase): ...@@ -2885,5 +2887,5 @@ class CreateRunFromDashboardViewTests(TestCase):
# Verify that and email is sent for studio instance request to project coordinator. # Verify that and email is sent for studio instance request to project coordinator.
self.assertEqual(len(mail.outbox), 1) self.assertEqual(len(mail.outbox), 1)
self.assertEqual([self.course.project_coordinator.email], mail.outbox[0].to) self.assertEqual([self.course.project_coordinator.email], mail.outbox[0].to)
expected_subject = 'New Studio instance request for {title}'.format(title=self.course.title) expected_subject = 'Studio URL requested: {title}'.format(title=self.course.title)
self.assertEqual(str(mail.outbox[0].subject), expected_subject) self.assertEqual(str(mail.outbox[0].subject), expected_subject)
...@@ -685,7 +685,7 @@ class CourseRunEditView(mixins.LoginRequiredMixin, mixins.PublisherPermissionMix ...@@ -685,7 +685,7 @@ class CourseRunEditView(mixins.LoginRequiredMixin, mixins.PublisherPermissionMix
course_run.course_run_state.change_state(state=CourseStateChoices.Draft, user=user) course_run.course_run_state.change_state(state=CourseStateChoices.Draft, user=user)
if course_run.lms_course_id and lms_course_id != course_run.lms_course_id: if course_run.lms_course_id and lms_course_id != course_run.lms_course_id:
emails.send_email_for_studio_instance_created(course_run, updated_text=_('updated')) emails.send_email_for_studio_instance_created(course_run)
# pylint: disable=no-member # pylint: disable=no-member
messages.success(request, _('Course run updated successfully.')) messages.success(request, _('Course run updated successfully.'))
......
...@@ -112,7 +112,7 @@ def send_email_decline_preview(comment, course_run, preview_url): ...@@ -112,7 +112,7 @@ def send_email_decline_preview(comment, course_run, preview_url):
# Translators: subject_desc will be Preview Decline for course run, # Translators: subject_desc will be Preview Decline for course run,
# 'title' will be the value of course title. # 'title' will be the value of course title.
subject = _('Preview reviewed: {course_name}').format( # pylint: disable=no-member subject = _('Preview declined: {course_name}').format( # pylint: disable=no-member
course_name=course_name course_name=course_name
) )
......
...@@ -218,11 +218,10 @@ class CommentsEmailTests(TestCase): ...@@ -218,11 +218,10 @@ class CommentsEmailTests(TestCase):
course_key = CourseKey.from_string(self.course_run.lms_course_id) course_key = CourseKey.from_string(self.course_run.lms_course_id)
comment = self._create_decline_comment() comment = self._create_decline_comment()
subject = 'Preview reviewed: {title} {run}'.format(title=self.course.title, run=course_key.run) subject = 'Preview declined: {title} {run}'.format(title=self.course.title, run=course_key.run)
self.assertEqual([user.email], mail.outbox[0].to) self.assertEqual([user.email], mail.outbox[0].to)
self.assertEqual(str(mail.outbox[0].subject), subject) self.assertEqual(str(mail.outbox[0].subject), subject)
body = 'has reviewed the preview for'.format( body = 'has declined the preview of the About page for the course run of {title}'.format(
url=self.url,
title=self.course.title title=self.course.title
) )
self.assertIn(body, str(mail.outbox[0].body.strip())) self.assertIn(body, str(mail.outbox[0].body.strip()))
......
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-12 12:13+0500\n" "POT-Creation-Date: 2017-05-15 12:57+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-12 12:13+0500\n" "POT-Creation-Date: 2017-05-15 12:57+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
...@@ -9,13 +9,13 @@ ...@@ -9,13 +9,13 @@
{% endblocktrans %} {% endblocktrans %}
<p> <p>
{% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %} {% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %}
{{ sender_team }} from {{ org_name }} has submitted {{ link_start }}{{ page_url }}{{ link_middle }}{{ course_name }}{{ link_end }} for review. {{ link_start }}{{ page_url }}{{ link_middle }} View this course in Publisher{{ link_end }} to review the changes or suggest edits. {{ sender_team }} from {{ org_name }} has submitted {{ course_name }} for review. {{ link_start }}{{ page_url }}{{ link_middle }} View this course in Publisher{{ link_end }} to mark the course as reviewed or suggest edits.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
{% comment %}Translators: It's closing of mail.{% endcomment %} {% comment %}Translators: It's closing of mail.{% endcomment %}
{% trans "Thanks," %}<br> {% trans "Thanks," %}<br>
{% trans "The edX team" %} {{ sender_name }}
{% blocktrans trimmed %} {% blocktrans trimmed %}
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
Dear {{ recipient_name }}, Dear {{ recipient_name }},
{% endblocktrans %} {% endblocktrans %}
{% blocktrans trimmed %} {% blocktrans trimmed %}
{{ sender_team }} from {{ org_name }} has submitted {{ course_name }} for review. {{ page_url }} View this course in Publisher to review the changes or suggest edits. {{ sender_team }} from {{ org_name }} has submitted {{ course_name }} for review. {{ page_url }} View this course in Publisher to mark the course as reviewed or suggest edits.
{% endblocktrans %} {% endblocktrans %}
{% trans "Thanks," %} {% trans "Thanks," %}
......
...@@ -10,13 +10,15 @@ ...@@ -10,13 +10,15 @@
<p> <p>
<p> <p>
{% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %} {% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %}
{{ course_team_name }} created the {{ link_start }}{{ dashboard_url }}{{ link_middle }} {{ course_title }}{{ link_end }} course in Publisher on {{ date }} at {{ time }}. {{ course_team_name }} created the {{ link_start }}{{ page_url }}{{ link_middle }}{{ run_number }} course run{{ link_end }} of {{ course_title }} in Publisher on {{ date }} at {{ time }}.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<p>{% trans "Please create a Studio instance for this course." %}</p> <p>{% trans "Please create a Studio URL for this course." %}</p>
{# Translators: It's closing of mail. #} {# Translators: It's closing of mail. #}
<p>{% trans "Thanks," %}</p> <p>{% trans "Thanks," %}</p>
<p>{% trans "The edX team" %}</p> <p>{% trans "The edX team" %}</p>
<!-- End Message Body --> <!-- End Message Body -->
{% endblock body %} {% endblock body %}
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
{% trans "Dear" %} {{ project_coordinator_name }}, {% trans "Dear" %} {{ project_coordinator_name }},
{% blocktrans trimmed %} {% blocktrans trimmed %}
{{ course_team_name }} created the {{ course_title }} : {{ dashboard_url }} course in Publisher on {{ date }} at {{ time }}. {{ course_team_name }} created the {{ course_run }} : {{ dashboard_url }} course run of {{ course_title }} in Publisher on {{ date }} at {{ time }}.
{% endblocktrans %} {% endblocktrans %}
{% trans "Please create a Studio instance for this course." %} {% trans "Please create a Studio URL for this course." %}
{% trans "Thanks," %} {% trans "Thanks," %}
{% trans "The edX team" %} {% trans "The edX team" %}
...@@ -2,16 +2,23 @@ ...@@ -2,16 +2,23 @@
{% load i18n %} {% load i18n %}
{% block body %} {% block body %}
<!-- Message Body --> <!-- Message Body -->
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
Dear {{ recipient_name }}, Dear {{ recipient_name }},
{% endblocktrans %} {% endblocktrans %}
<p> <p>
{% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %} {% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %}
The {{ sender_team }} has reviewed the {{ link_start }}{{ page_url }}{{ link_middle }}{{ run_number }} course run{{ link_end }} of {{ link_start }}{{ course_page_url }}{{ link_middle }}{{ course_name }}{{ link_end }}. You can now submit a request for a preview of the course run About page. {{ sender_team }} has reviewed the {{ link_start }}{{ page_url }}{{ link_middle }}{{ run_number }} course run{{ link_end }} of {{ course_name }} and has not added comments or suggested edits. The review for this course run is complete.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<p>
{% trans "Please create a preview of the About page for this course run and enter the preview URL in Publisher." %}
</p>
<p>
<b>
{% trans "Additionally, please check the comments in Publisher for information about OFAC blocking." %}
</b>
</p>
{% comment %}Translators: It's closing of mail.{% endcomment %} {% comment %}Translators: It's closing of mail.{% endcomment %}
{% trans "Thanks," %}<br> {% trans "Thanks," %}<br>
......
...@@ -4,8 +4,10 @@ ...@@ -4,8 +4,10 @@
Dear {{ recipient_name }}, Dear {{ recipient_name }},
{% endblocktrans %} {% endblocktrans %}
{% blocktrans trimmed %} {% blocktrans trimmed %}
The {{ sender_team }} has reviewed the {{ run_number }} {{ page_url }} course run of {{ course_name }} {{ course_page_url }}. You can now submit a request for a preview of the course run About page. The {{ sender_team }} has reviewed the {{ run_number }} {{ page_url }} course run of {{ course_name }} and has not added comments or suggested edits. The review for this course run is complete.
{% endblocktrans %} {% endblocktrans %}
{% trans "Please create a preview of the About page for this course run and enter the preview URL in Publisher." %}
{% trans "Additionally, please check the comments in Publisher for information about OFAC blocking." %}
{% trans "Thanks," %} {% trans "Thanks," %}
{{ sender_name }} {{ sender_name }}
......
...@@ -8,12 +8,12 @@ ...@@ -8,12 +8,12 @@
{% endblocktrans %} {% endblocktrans %}
<p> <p>
{% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %} {% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %}
{{ course_team }} has reviewed the preview of the {{ link_start }}{{ page_url }}{{ link_middle }}{{ run_number }}{{ link_end }} course run of {{ link_start }}{{ course_page_url }}{{ link_middle }}{{ course_name }}{{ link_end }} from {{ org_name }}. The course run is now ready for publication. {{ course_team }} has reviewed the preview of the About page for the {{ link_start }}{{ page_url }}{{ link_middle }}{{ run_number }}{{ link_end }} course run of {{ course_name }} from {{ org_name }}. You can now publish this About page.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
{% comment %}Translators: It's closing of mail.{% endcomment %} {% comment %}Translators: It's closing of mail.{% endcomment %}
{% trans "Thank you," %}<br> {% trans "Thanks," %}<br>
{{ course_team }} {{ course_team }}
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
Dear {{ publisher_role_name }}, Dear {{ publisher_role_name }},
{% endblocktrans %} {% endblocktrans %}
{% blocktrans trimmed %} {% blocktrans trimmed %}
{{ course_team }} has reviewed the preview of the {{ run_number }} {{ page_url }} course run of {{ course_name }} {{ course_page_url }} from {{ org_name }}. The course run is now ready for publication. {{ course_team }} has reviewed the preview of the About page for the {{ run_number }} {{ page_url }} course run of {{ course_name }} from {{ org_name }}. You can now publish this About page.
{% endblocktrans %} {% endblocktrans %}
{% trans "Thanks," %} {% trans "Thanks," %}
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
{% endblocktrans %} {% endblocktrans %}
<p> <p>
{% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %} {% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %}
A preview is now available for the {{ link_start }}{{ page_url }}{{ link_middle }}{{ course_run_number }}{{ link_end }} course run of {{ link_start }}{{ course_page_url }}{{ link_middle }}{{ course_name }}{{ link_end }}. {{ link_start }}{{ preview_link }}{{ link_middle }} See the preview{{ link_end }} to review or suggest edits to this course run. A preview is now available for the {{ course_run_number }} course run of {{ course_name }}. {{ link_start }}{{ preview_link }}{{ link_middle }} View the course run in Publisher{{ link_end }} to access the preview for this About page and accept or decline the preview.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
{% endblocktrans %} {% endblocktrans %}
{% blocktrans trimmed %} {% blocktrans trimmed %}
A preview is now available for the {{ course_run_number }} course run of {{ course_name }} {{ course_page_url }}. See the preview {{ page_url }} to review or suggest edits to this course run. A preview is now available for the {{ course_run_number }} course run of {{ course_name }}. View the course run in Publisher {{ page_url }} to access the preview for this About page and accept or decline the preview.
{% endblocktrans %} {% endblocktrans %}
{% trans "Thanks," %} {% trans "Thanks," %}
......
...@@ -7,13 +7,13 @@ ...@@ -7,13 +7,13 @@
Dear {{ recipient_name }}, Dear {{ recipient_name }},
{% endblocktrans %} {% endblocktrans %}
<p> <p>
{% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %} {% blocktrans trimmed %}
The {{ link_start }}{{ page_url }}{{ link_middle }}{{ course_run_number }} course run{{ link_end }} of {{ link_start }}{{ course_page_url }}{{ link_middle }}{{ course_name }}{{ link_end }} has been published. No further action is necessary for this course run. The About page for the {{ course_run_number }} course run of {{ course_name }} has been published. No further action is necessary.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<p> <p>
{% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %} {% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %}
{{ link_start }}{{ preview_url }}{{ link_middle }}View this course run live.{{ link_end }} {{ link_start }}{{ preview_url }}{{ link_middle }}View this About page on edx.org.{{ link_end }}
{% endblocktrans %} {% endblocktrans %}
</p> </p>
{% comment %}Translators: It's closing of mail.{% endcomment %} {% comment %}Translators: It's closing of mail.{% endcomment %}
......
...@@ -4,11 +4,11 @@ ...@@ -4,11 +4,11 @@
Dear {{ recipient_name }}, Dear {{ recipient_name }},
{% endblocktrans %} {% endblocktrans %}
{% blocktrans trimmed %} {% blocktrans trimmed %}
The {{ course_run_number }} {{ page_url }} course run of {{ course_name }} {{ course_page_url }} has been published. No further action is necessary for this course run. The About page for the {{ course_run_number }} course run of {{ course_name }} has been published. No further action is necessary.
{% endblocktrans %} {% endblocktrans %}
{% blocktrans trimmed %} {% blocktrans trimmed %}
View this course run live. {{ preview_url }} View this About page on edx.org. {{ preview_url }}
{% endblocktrans %} {% endblocktrans %}
......
...@@ -9,10 +9,15 @@ ...@@ -9,10 +9,15 @@
{% endblocktrans %} {% endblocktrans %}
<p> <p>
{% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %} {% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %}
{{ sender_team }} for {{ link_start }}{{ course_page_url }}{{ link_middle }}{{ course_name }}{{ link_end }} from {{ org_name }} has submitted the {{ link_start }}{{ page_url }}{{ link_middle }}{{ run_number }} course run{{ link_end }} for review. {{ link_start }}{{ page_url }}{{ link_middle }} View this course run in Publisher{{ link_end }} to review the changes or suggest edits. {{ sender_team }} for course_name from {{ org_name }} has submitted the {{ run_number }} course run for review. {{ link_start }}{{ page_url }}{{ link_middle }} View this course run in Publisher{{ link_end }} to review the changes or suggest edits.
{% endblocktrans %}
</p>
<!-- The link in this new sentence should go to the course run in Studio.-->
<p>
{% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %}
This is a good time to {{ link_start }}{{ studio_url }}{{ link_middle }} review this course run in Studio{{ link_end }}.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
{% comment %}Translators: It's closing of mail.{% endcomment %} {% comment %}Translators: It's closing of mail.{% endcomment %}
{% trans "Thank you," %}<br> {% trans "Thank you," %}<br>
{{ sender_name }} {{ sender_name }}
......
...@@ -6,6 +6,9 @@ ...@@ -6,6 +6,9 @@
{% blocktrans trimmed %} {% blocktrans trimmed %}
{{ sender_team }} for {{ course_name }} from {{ org_name }} has submitted the {{ run_number }} course run for review. {{ page_url }} View this course run in Publisher to review the changes or suggest edits. {{ sender_team }} for {{ course_name }} from {{ org_name }} has submitted the {{ run_number }} course run for review. {{ page_url }} View this course run in Publisher to review the changes or suggest edits.
{% endblocktrans %} {% endblocktrans %}
{% blocktrans trimmed %}
This is a good time to {{ studio_url }} review this course run in Studio.
{% endblocktrans %}
{% trans "Thank you," %} {% trans "Thank you," %}
{{ sender_name }} {{ sender_name }}
......
...@@ -9,22 +9,21 @@ ...@@ -9,22 +9,21 @@
<p> <p>
{% blocktrans trimmed with link_start='<a href="' link_middle='">' link_end='</a>' %} {% blocktrans trimmed with link_start='<a href="' link_middle='">' link_end='</a>' %}
The {{ team_name }} has reviewed the preview for {{ link_start }}{{ page_url }}{{ link_middle }}{{ course_name }}{{ link_end }}. View the course run in Publisher for more information. {{ team_name }} has declined the preview of the About page for the {{ run_number }} course run of {{course_name}}. {{ link_start }}{{ page_url }}{{ link_middle }}View the course run in Publisher.{{ link_end }}
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<p> <p>
{% blocktrans trimmed %} {% blocktrans trimmed %}
{{ team_name }} added the following comment to this preview. {{ team_name }} added the following comment.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<p style="font-style: italic;"> <p style="font-style: italic;">
"{{ comment.comment }}" "{{ comment.comment }}"
</p> </p>
<p> {% comment %}Translators: It's closing of mail.{% endcomment %}
<a href="{{ page_url }}">{% trans "View comment in Publisher" %}</a> {% trans "Thanks," %}<br>
</p> {% trans "The edX team" %}
<p>{% trans "The edX team" %}</p>
<!-- End Message Body --> <!-- End Message Body -->
{% endblock body %} {% endblock body %}
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
{% endblocktrans %} {% endblocktrans %}
{% blocktrans trimmed %} {% blocktrans trimmed %}
The {{ team_name }} has reviewed the preview for {{ course_name }}. View the course run in Publisher for more information. {{ team_name }} has declined the preview of the About page for the {{ run_number }} course run of {{ course_name }}. View the course run in Publisher.
{% endblocktrans %} {% endblocktrans %}
{{ comment.comment }} {% trans "{{ team_name }} added the following comment." %}{{ page_url }}
{% trans "View comment in Publisher: " %}{{ page_url }} {{ comment.comment }}
{% trans "Thanks," %}
{% trans "The edX team" %} {% trans "The edX team" %}
...@@ -3,42 +3,51 @@ ...@@ -3,42 +3,51 @@
{% block body %} {% block body %}
<!-- Message Body --> <!-- Message Body -->
<!-- Is it still true that we need users to enter this info "both in Publisher and in Studio" (line 21)? -->
<p> <p>
{% comment %}Translators: course_team_name is course team member name.{% endcomment %} {% comment %}Translators: course_team_name is course team member name.{% endcomment %}
{% blocktrans trimmed %} {% blocktrans trimmed %}
Dear {{ course_team_name }}, Dear {{ course_team_name }},
{% endblocktrans %} {% endblocktrans %}
<p> <p>
{% blocktrans with link_start='<a href="' link_middle='">' link_end='</a>' trimmed %} {% blocktrans trimmed %}
EdX has {{ updated_text }} a Studio instance for {{ link_start }}{{ course_run_page_url }}{{ link_middle }} {{ course_name }}{{ link_end }}. {{ project_coordinator_name }} has created a Studio URL for the {{ course_run }} course run of {{ course_name }}. You can now take either of the following actions.
You can now edit this course and configure your course team in Studio.
{% endblocktrans %}
</p>
<p>
{% blocktrans with link_start='<a href="https://www.edx.org/">' link_end='</a>' start_tag='<b>' end_tag='</b>' trimmed %}
Before edX can announce your course on {{ link_start }}edx.org{{ link_end }}, you need to add the following items {{ start_tag }}both in Publisher and in Studio{{ end_tag }}.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<ul> <ul>
<li>{% trans "Course start date" %}</li> <li>
<li>{% trans "Course end date" %}</li> <a href="{{ studio_url }}">
<li>{% trans "Course image" %}</li> {% trans "Enter course run content in Studio." %}
<li>{% trans "Certificate assets (including signatory names, titles, and signature images)" %}</li> </a>
</li>
<li>
<a href="{{ course_run_page_url }}">
{% trans "Continue adding About page information for this course run in Publisher." %}
</a>
</li>
</ul> </ul>
<p> <p>
{% trans "In addition, keep the following items in mind as you build your course." %} <b>
{% trans "Important Notes" %}
</b>
</p> </p>
<ul> <ul>
<li> <li>
{% blocktrans with link_start='<a href="http://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/video/video_prereqs.html#video-getting-started">' link_end='</a>' trimmed %} {% trans "Before edX can publish the About page for this course run, you must also add the following items for this course run in Studio." %}
If this course is not a re-run, your video administrator must work with edX partner support to enable the {{ link_start }}video upload tool{{ link_end }} before you can add videos to your course.
{% endblocktrans %}
</li> </li>
<ul>
<li>{% trans "Course start date" %}</li>
<li>{% trans "Course end date" %}</li>
<li>{% trans "Course image" %}</li>
<li>{% trans "Certificate assets (including signatory names, titles, and signature images)" %}</li>
</ul>
<li> <li>
{% blocktrans with link_start='<a href="https://docs.google.com/spreadsheets/d/1phjmDNoARq4YjJoiFZc0ELumj3r04r36LEncCjN9PVk/">' link_end='</a>' trimmed %} {% blocktrans with link_start='<a href="https://docs.google.com/spreadsheets/d/1phjmDNoARq4YjJoiFZc0ELumj3r04r36LEncCjN9PVk/">' link_end='</a>' trimmed %}
We expect your completed {{ link_start }}MOOC Development Checklist{{ link_end }} before your course starts. This checklist includes valuable best practices that help you to stay on track as you design and build your course. We recommend that you use the list early! EdX expects your completed {{ link_start }}MOOC Development Checklist{{ link_end }} before the course run starts.
{% endblocktrans %}
</li>
<li>
{% blocktrans with link_start='<a href="http://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/set_up_course/setting_up_student_view.html#add-a-course-about-video-to-edx-org">' link_end='</a>' trimmed %}
If this is the first run of a course, you should upload the course About video before you submit the course for review in Publisher. For more information, see {{ link_start }}Add a Course About Video to edx.org{{ link_end }}.
{% endblocktrans %} {% endblocktrans %}
</li> </li>
</ul> </ul>
......
...@@ -4,10 +4,28 @@ ...@@ -4,10 +4,28 @@
Dear {{ course_team_name }}, Dear {{ course_team_name }},
{% endblocktrans %} {% endblocktrans %}
{% blocktrans trimmed %} {% blocktrans trimmed %}
EdX has {{ updated_text }} a Studio instance for {{ course_name }}: {{ course_run_page_url }}. {{ project_coordinator_name }} has created a Studio URL for the {{ course_run}} course run of {{ course_name }}. You can now take either of the following actions.
You can now edit this course in Studio.
{% endblocktrans %} {% endblocktrans %}
{% trans "Enter course run content in Studio." %} {{ studio_url }}
{% trans "Continue adding About page information for this course run in Publisher." %} {{ course_run_page_url }}
{% trans "Important Notes" %}
{% trans "Before edX can publish the About page for this course run, you must also add the following items for this course run in Studio." %}
{% trans "Course start date" %}
{% trans "Course end date" %}
{% trans "Course image" %}
{% trans "Certificate assets (including signatory names, titles, and signature images)" %}
{% trans "EdX expects your completed MOOC Development Checklist before the course run starts." %} https://docs.google.com/spreadsheets/d/1phjmDNoARq4YjJoiFZc0ELumj3r04r36LEncCjN9PVk/
{% trans "If this is the first run of a course, you should upload the course About video before you submit the course for review in Publisher. For more information, see Add a Course About Video to edx.org." %}
http://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/set_up_course/setting_up_student_view.html#add-a-course-about-video-to-edx-org
{% trans "Thanks," %} {% trans "Thanks," %}
{{ project_coordinator_name }} {{ project_coordinator_name }}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment