def test_update_email_optin_no_age_set(self): # Test that the API still works if no age is specified. # Create the course and account. course = CourseFactory.create() account_api.create_account(self.USERNAME, self.PASSWORD, self.EMAIL) user = User.objects.get(username=self.USERNAME) profile_api.update_email_opt_in(self.USERNAME, course.id.org, True) result_obj = UserOrgTag.objects.get(user=user, org=course.id.org, key='email-optin') self.assertEqual(result_obj.value, u"True")
def _set_opt_in_pref(self, user, org, is_opted_in): """Set the email opt-in preference. Arguments: user (User): The user model. org (unicode): The org in the course key. is_opted_in (bool): Whether the user is opted in or out of emails. Returns: None """ profile_api.update_email_opt_in(user.username, org, is_opted_in)
def test_update_email_optin(self, age, option, expected_result): # Create the course and account. course = CourseFactory.create() account_api.create_account(self.USERNAME, self.PASSWORD, self.EMAIL) # Set year of birth user = User.objects.get(username=self.USERNAME) profile = UserProfile.objects.get(user=user) year_of_birth = datetime.datetime.now().year - age # pylint: disable=maybe-no-member profile.year_of_birth = year_of_birth profile.save() profile_api.update_email_opt_in(self.USERNAME, course.id.org, option) result_obj = UserOrgTag.objects.get(user=user, org=course.id.org, key='email-optin') self.assertEqual(result_obj.value, expected_result)
def post(self, request): """ Post function for updating the email opt in preference. Allows the modification or creation of the email opt in preference at an organizational level. Args: request (Request): The request should contain the following POST parameters: * course_id: The slash separated course ID. Used to determine the organization for this preference setting. * email_opt_in: "True" or "False" to determine if the user is opting in for emails from this organization. If the string does not match "True" (case insensitive) it will assume False. """ course_id = request.DATA['course_id'] org = locator.CourseLocator.from_string(course_id).org # Only check for true. All other values are False. email_opt_in = request.DATA['email_opt_in'].lower() == 'true' profile_api.update_email_opt_in(request.user, org, email_opt_in) return HttpResponse(status=status.HTTP_200_OK)