Skip to content

Commit

Permalink
fix: rename email to message params
Browse files Browse the repository at this point in the history
  • Loading branch information
GlugovGrGlib committed Aug 10, 2024
1 parent d88d880 commit a5efcfa
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 53 deletions.
4 changes: 2 additions & 2 deletions lms/djangoapps/ccx/api/v0/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -730,8 +730,8 @@ def make_ccx(self, max_students_allowed=200):
course_id=ccx_course_key,
student_email=self.coach.email,
auto_enroll=True,
email_students=False,
email_params=email_params,
message_students=False,
message_params=email_params,
)
return ccx

Expand Down
8 changes: 4 additions & 4 deletions lms/djangoapps/ccx/api/v0/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -505,8 +505,8 @@ def post(self, request):
course_id=ccx_course_key,
student_email=coach.email,
auto_enroll=True,
email_students=True,
email_params=email_params,
message_students=True,
message_params=email_params,
)
# assign staff role for the coach to the newly created ccx
assign_staff_role_to_ccx(ccx_course_key, coach, master_course_object.id)
Expand Down Expand Up @@ -768,8 +768,8 @@ def patch(self, request, ccx_course_id=None):
course_id=ccx_course_key,
student_email=coach.email,
auto_enroll=True,
email_students=True,
email_params=email_params,
message_students=True,
message_params=email_params,
)
# make the new coach staff on the CCX
assign_staff_role_to_ccx(ccx_course_key, coach, master_course_object.id)
Expand Down
20 changes: 10 additions & 10 deletions lms/djangoapps/ccx/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ def ccx_students_enrolling_center(action, identifiers, email_students, course_ke
log.info("%s", error)
errors.append(error)
break
enroll_email(course_key, email, auto_enroll=True, email_students=email_students, email_params=email_params)
enroll_email(course_key, email, auto_enroll=True, message_students=email_students, message_params=email_params)
elif action == 'Unenroll' or action == 'revoke': # lint-amnesty, pylint: disable=consider-using-in
for identifier in identifiers:
try:
Expand All @@ -278,7 +278,7 @@ def ccx_students_enrolling_center(action, identifiers, email_students, course_ke
log.info("%s", exp)
errors.append(f"{exp}")
continue
unenroll_email(course_key, email, email_students=email_students, email_params=email_params)
unenroll_email(course_key, email, message_students=email_students, message_params=email_params)
return errors


Expand Down Expand Up @@ -348,8 +348,8 @@ def add_master_course_staff_to_ccx(master_course, ccx_key, display_name, send_em
course_id=ccx_key,
student_email=staff.email,
auto_enroll=True,
email_students=send_email,
email_params=email_params,
message_students=send_email,
message_params=email_params,
)

# allow 'staff' access on ccx to staff of master course
Expand All @@ -373,8 +373,8 @@ def add_master_course_staff_to_ccx(master_course, ccx_key, display_name, send_em
course_id=ccx_key,
student_email=instructor.email,
auto_enroll=True,
email_students=send_email,
email_params=email_params,
message_students=send_email,
message_params=email_params,
)

# allow 'instructor' access on ccx to instructor of master course
Expand Down Expand Up @@ -417,8 +417,8 @@ def remove_master_course_staff_from_ccx(master_course, ccx_key, display_name, se
unenroll_email(
course_id=ccx_key,
student_email=staff.email,
email_students=send_email,
email_params=email_params,
message_students=send_email,
message_params=email_params,
)

for instructor in list_instructor:
Expand All @@ -430,6 +430,6 @@ def remove_master_course_staff_from_ccx(master_course, ccx_key, display_name, se
unenroll_email(
course_id=ccx_key,
student_email=instructor.email,
email_students=send_email,
email_params=email_params,
message_students=send_email,
message_params=email_params,
)
4 changes: 2 additions & 2 deletions lms/djangoapps/ccx/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,8 @@ def create_ccx(request, course, ccx=None):
course_id=ccx_id,
student_email=request.user.email,
auto_enroll=True,
email_students=True,
email_params=email_params,
message_students=True,
message_params=email_params,
)

assign_staff_role_to_ccx(ccx_id, request.user, course.id)
Expand Down
4 changes: 2 additions & 2 deletions lms/djangoapps/instructor/access.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ def _change_access(course, user, level, action, send_email=True):
course_id=course.id,
student_email=user.email,
auto_enroll=True,
email_students=send_email,
email_params=email_params,
message_students=send_email,
message_params=email_params,
)
role.add_users(user)
elif action == 'revoke':
Expand Down
66 changes: 35 additions & 31 deletions lms/djangoapps/instructor/enrollment.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,15 +124,15 @@ def get_user_email_language(user):
return UserPreference.get_value(user, LANGUAGE_KEY)


def enroll_email(course_id, student_email, auto_enroll=False, email_students=False, message_params=None, language=None):
def enroll_email(course_id, student_email, auto_enroll=False, message_students=False, message_params=None, language=None):
"""
Enroll a student by email.
`student_email` is student's emails e.g. "foo@bar.com"
`auto_enroll` determines what is put in CourseEnrollmentAllowed.auto_enroll
if auto_enroll is set, then when the email registers, they will be
enrolled in the course automatically.
`email_students` determines if student should be notified of action by email.
`message_students` determines if student should be notified of action by email or push message.
`message_params` parameters used while parsing message templates (a `dict`).
`language` is the language used to render the email.
Expand All @@ -149,6 +149,8 @@ def enroll_email(course_id, student_email, auto_enroll=False, email_students=Fal
'course_id': str(course_id),
},
})
else:
message_params = {}
if previous_state.user and previous_state.user.is_active:
# if the student is currently unenrolled, don't enroll them in their
# previous mode
Expand All @@ -166,7 +168,7 @@ def enroll_email(course_id, student_email, auto_enroll=False, email_students=Fal
course_mode = previous_state.mode

enrollment_obj = CourseEnrollment.enroll_by_email(student_email, course_id, course_mode)
if email_students:
if message_students:
message_params['message_type'] = 'enrolled_enroll'
message_params['email_address'] = student_email
message_params['user_id'] = previous_state.user.id
Expand All @@ -177,7 +179,7 @@ def enroll_email(course_id, student_email, auto_enroll=False, email_students=Fal
cea, _ = CourseEnrollmentAllowed.objects.get_or_create(course_id=course_id, email=student_email)
cea.auto_enroll = auto_enroll
cea.save()
if email_students:
if message_students:
message_params['message_type'] = 'allowed_enroll'
message_params['email_address'] = student_email
if previous_state.user:
Expand All @@ -189,74 +191,76 @@ def enroll_email(course_id, student_email, auto_enroll=False, email_students=Fal
return previous_state, after_state, enrollment_obj


def unenroll_email(course_id, student_email, email_students=False, email_params=None, language=None):
def unenroll_email(course_id, student_email, message_students=False, message_params=None, language=None):
"""
Unenroll a student by email.
`student_email` is student's emails e.g. "foo@bar.com"
`email_students` determines if student should be notified of action by email.
`email_params` parameters used while parsing email templates (a `dict`).
`message_students` determines if student should be notified of action by email or push message.
`message_params` parameters used while parsing email templates (a `dict`).
`language` is the language used to render the email.
returns two EmailEnrollmentState's
representing state before and after the action.
"""
previous_state = EmailEnrollmentState(course_id, student_email)
if email_params:
email_params.update({
if message_params:
message_params.update({
'app_label': 'instructor',
'push_notification_extra_context': {
'notification_type': 'unenroll',
},
})
else:
message_params = {}
if previous_state.enrollment:
CourseEnrollment.unenroll_by_email(student_email, course_id)
if email_students:
email_params['message_type'] = 'enrolled_unenroll'
email_params['email_address'] = student_email
if message_students:
message_params['message_type'] = 'enrolled_unenroll'
message_params['email_address'] = student_email
if previous_state.user:
email_params['user_id'] = previous_state.user.id
email_params['full_name'] = previous_state.full_name
send_mail_to_student(student_email, email_params, language=language)
message_params['user_id'] = previous_state.user.id
message_params['full_name'] = previous_state.full_name
send_mail_to_student(student_email, message_params, language=language)

if previous_state.allowed:
CourseEnrollmentAllowed.objects.get(course_id=course_id, email=student_email).delete()
if email_students:
email_params['message_type'] = 'allowed_unenroll'
email_params['email_address'] = student_email
if message_students:
message_params['message_type'] = 'allowed_unenroll'
message_params['email_address'] = student_email
if previous_state.user:
email_params['user_id'] = previous_state.user.id
message_params['user_id'] = previous_state.user.id
# Since no User object exists for this student there is no "full_name" available.
send_mail_to_student(student_email, email_params, language=language)
send_mail_to_student(student_email, message_params, language=language)

after_state = EmailEnrollmentState(course_id, student_email)

return previous_state, after_state


def send_beta_role_email(action, user, email_params):
def send_beta_role_email(action, user, message_params):
"""
Send an email to a user added or removed as a beta tester.
`action` is one of 'add' or 'remove'
`user` is the User affected
`email_params` parameters used while parsing email templates (a `dict`).
`message_params` parameters used while parsing email templates (a `dict`).
"""
if action in ('add', 'remove'):
email_params['message_type'] = '%s_beta_tester' % action
email_params['email_address'] = user.email
email_params['user_id'] = user.id
email_params['full_name'] = user.profile.name
email_params['app_label'] = 'instructor'
email_params['push_notification_extra_context'] = {
'notification_type': email_params['message_type'],
'course_id': str(getattr(email_params.get('course'), 'id', '')),
message_params['message_type'] = '%s_beta_tester' % action
message_params['email_address'] = user.email
message_params['user_id'] = user.id
message_params['full_name'] = user.profile.name
message_params['app_label'] = 'instructor'
message_params['push_notification_extra_context'] = {
'notification_type': message_params['message_type'],
'course_id': str(getattr(message_params.get('course'), 'id', '')),
}
else:
raise ValueError(f"Unexpected action received '{action}' - expected 'add' or 'remove'")
trying_to_add_inactive_user = not user.is_active and action == 'add'
if not trying_to_add_inactive_user:
send_mail_to_student(user.email, email_params, language=get_user_email_language(user))
send_mail_to_student(user.email, message_params, language=get_user_email_language(user))


@contextmanager
Expand Down
4 changes: 2 additions & 2 deletions lms/djangoapps/instructor/views/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -509,8 +509,8 @@ def register_and_enroll_students(request, course_id): # pylint: disable=too-man
enroll_email(course_id=course_id,
student_email=email,
auto_enroll=True,
email_students=notify_by_email,
email_params=email_params)
message_students=notify_by_email,
message_params=email_params)
else:
# update the course mode if already enrolled
existing_enrollment = CourseEnrollment.get_enrollment(user, course_id)
Expand Down

0 comments on commit a5efcfa

Please sign in to comment.