def email_handler(self, request): email = request.data.get('email') invalid_email_error = get_email_validation_error(email) email_exists_error = get_email_existence_validation_error(email) # We prefer seeing for invalidity first. # Some invalid emails (like a blank one for superusers) may exist. return invalid_email_error or email_exists_error
def validate_secondary_email(account_recovery, new_email): """ Enforce valid email addresses. """ from openedx.core.djangoapps.user_api.accounts.api import get_email_validation_error, \ get_secondary_email_validation_error if get_email_validation_error(new_email): raise ValueError(_('Valid e-mail address required.')) if new_email == account_recovery.secondary_email: raise ValueError(_('Old email is the same as the new email.')) # Make sure that secondary email address is not same as user's primary email. if new_email == account_recovery.user.email: raise ValueError(_('Cannot be same as your sign in email address.')) # Make sure that secondary email address is not same as any of the primary emails currently in use or retired if email_exists_or_retired(new_email): raise ValueError( _("It looks like {email} belongs to an existing account. Try again with a different email address." ).format(email=new_email)) message = get_secondary_email_validation_error(new_email) if message: raise ValueError(message)
def email_handler(self, request): email = request.data.get('email') invalid_email_error = get_email_validation_error(email) email_exists_error = get_email_existence_validation_error(email) # We prefer seeing for invalidity first. # Some invalid emails (like a blank one for superusers) may exist. return invalid_email_error or email_exists_error
def validate_secondary_email(account_recovery, new_email): """ Enforce valid email addresses. """ from openedx.core.djangoapps.user_api.accounts.api import get_email_validation_error, \ get_email_existence_validation_error, get_secondary_email_validation_error if get_email_validation_error(new_email): raise ValueError(_('Valid e-mail address required.')) if new_email == account_recovery.secondary_email: raise ValueError(_('Old email is the same as the new email.')) # Make sure that secondary email address is not same as user's primary email. if new_email == account_recovery.user.email: raise ValueError(_('Cannot be same as your sign in email address.')) # Make sure that secondary email address is not same as any of the primary emails. message = get_email_existence_validation_error(new_email) if message: raise ValueError(message) message = get_secondary_email_validation_error(new_email) if message: raise ValueError(message)
def validate_secondary_email(account_recovery, new_email): """ Enforce valid email addresses. """ from openedx.core.djangoapps.user_api.accounts.api import get_email_validation_error, \ get_secondary_email_validation_error if get_email_validation_error(new_email): raise ValueError(_('Valid e-mail address required.')) if new_email == account_recovery.secondary_email: raise ValueError(_('Old email is the same as the new email.')) # Make sure that secondary email address is not same as user's primary email. if new_email == account_recovery.user.email: raise ValueError(_('Cannot be same as your sign in email address.')) # Make sure that secondary email address is not same as any of the primary emails currently in use or retired if email_exists_or_retired(new_email): raise ValueError( _("It looks like {email} belongs to an existing account. Try again with a different email address.").format( email=new_email ) ) message = get_secondary_email_validation_error(new_email) if message: raise ValueError(message)
def email_handler(self, request): """ Validates whether the email address is valid. """ email = request.data.get('email') invalid_email_error = get_email_validation_error(email, self.api_version) email_exists_error = get_email_existence_validation_error(email, self.api_version) # We prefer seeing for invalidity first. # Some invalid emails (like a blank one for superusers) may exist. return invalid_email_error or email_exists_error
def post(self, request): """ **Use Case** * Send favorite program through email to user for later learning. **Example Request for program** POST /api/v1/save/program/ **Example POST Request for program** { "email": "*****@*****.**", "program_uuid": "587f6abe-bfa4-4125-9fbe-4789bf3f97f1" } """ user = request.user data = request.data program_uuid = data.get('program_uuid') email = data.get('email') user_id = request.user.id pref_lang = request.COOKIES.get(settings.LANGUAGE_COOKIE_NAME, 'en') send_to_self = bool(not request.user.is_anonymous and request.user.email == email) if getattr(request, 'limited', False): return Response({'error_code': 'rate-limited'}, status=403) if get_email_validation_error(email): return Response({'error_code': 'incorrect-email'}, status=400) if not program_uuid: return Response({'error_code': 'program-uuid-missing'}, status=400) program = get_programs(uuid=program_uuid) SavedProgram.objects.update_or_create(email=email, program_uuid=program_uuid, defaults={ 'user_id': user.id, 'reminder_email_sent': False, }) if program: program_data = { 'program': program, 'send_to_self': send_to_self, 'user_id': user_id, 'pref-lang': pref_lang, 'type': 'program', 'reminder': False, 'braze_event': USER_SEND_SAVE_FOR_LATER_EMAIL, } if send_email(email, program_data): return Response({'result': 'success'}, status=200) else: return Response({'error_code': 'email-not-send'}, status=400) return Response({'error_code': 'program-not-found'}, status=404)
def post(self, request): """ **Use Case** * Send favorite course through email to user for later learning. **Example Request for course** POST /api/v1/save/course/ **Example POST Request for course** { "email": "*****@*****.**", "course_id": "course-v1:edX+DemoX+2021", "marketing_url": "https://test.com", "org_img_url": "https://test.com/logo.png", "weeks_to_complete": 7, "min_effort": 4, "max_effort": 5, } """ user = request.user data = request.data course_id = data.get('course_id') email = data.get('email') if getattr(request, 'limited', False): return Response({'error_code': 'rate-limited'}, status=403) if get_email_validation_error(email): return Response({'error_code': 'incorrect-email'}, status=400) try: course_key = CourseKey.from_string(course_id) course = CourseOverview.get_from_id(course_key) except InvalidKeyError: return Response({'error_code': 'invalid-course-key'}, status=400) except CourseOverview.DoesNotExist: return Response({'error_code': 'course-not-found'}, status=404) SavedCourse.objects.update_or_create( user_id=user.id, email=email, course_id=course_id, ) course_data = { 'course': course, 'type': 'course', } if send_email(request, email, course_data): return Response({'result': 'success'}, status=200) else: return Response({'error_code': 'email-not-send'}, status=400)
def post(self, request): """ **Use Case** * Send favorite program through email to user for later learning. **Example Request for program** POST /api/v1/save/program/ **Example POST Request for program** { "email": "*****@*****.**", "program_uuid": "587f6abe-bfa4-4125-9fbe-4789bf3f97f1" } """ user = request.user data = request.data program_uuid = data.get('program_uuid') email = data.get('email') if getattr(request, 'limited', False): return Response({'error_code': 'rate-limited'}, status=403) if get_email_validation_error(email): return Response({'error_code': 'incorrect-email'}, status=400) if not program_uuid: return Response({'error_code': 'program-uuid-missing'}, status=400) program = get_programs(uuid=program_uuid) SavedProgram.objects.update_or_create( user_id=user.id, email=email, program_uuid=program_uuid, ) if program: program_data = { 'program': program, 'type': 'program', } if send_email(request, email, program_data): return Response({'result': 'success'}, status=200) else: return Response({'error_code': 'email-not-send'}, status=400) return Response({'error_code': 'program-not-found'}, status=404)
def validate_secondary_email(user, new_email): """ Enforce valid email addresses. """ from openedx.core.djangoapps.user_api.accounts.api import get_email_validation_error, \ get_secondary_email_validation_error if get_email_validation_error(new_email): raise ValueError(_('Valid e-mail address required.')) # Make sure that if there is an active recovery email address, that is not the same as the new one. if hasattr(user, "account_recovery"): if user.account_recovery.is_active and new_email == user.account_recovery.secondary_email: raise ValueError(_('Old email is the same as the new email.')) # Make sure that secondary email address is not same as user's primary email. if new_email == user.email: raise ValueError(_('Cannot be same as your sign in email address.')) message = get_secondary_email_validation_error(new_email) if message: raise ValueError(message)
def post(self, request): """ **Use Case** * Send favorite course through email to user for later learning. **Example Request for course** POST /api/v1/save/course/ **Example POST Request for course** { "email": "*****@*****.**", "course_id": "course-v1:edX+DemoX+2021", "marketing_url": "https://test.com", "org_img_url": "https://test.com/logo.png", "weeks_to_complete": 7, "min_effort": 4, "max_effort": 5, } """ user = request.user data = request.data course_id = data.get('course_id') email = data.get('email') org_img_url = data.get('org_img_url') marketing_url = data.get('marketing_url') weeks_to_complete = data.get('weeks_to_complete', 0) min_effort = data.get('min_effort', 0) max_effort = data.get('max_effort', 0) user_id = request.user.id pref_lang = request.COOKIES.get(settings.LANGUAGE_COOKIE_NAME, 'en') send_to_self = bool(not request.user.is_anonymous and request.user.email == email) if getattr(request, 'limited', False): return Response({'error_code': 'rate-limited'}, status=403) if get_email_validation_error(email): return Response({'error_code': 'incorrect-email'}, status=400) try: course_key = CourseKey.from_string(course_id) course = CourseOverview.get_from_id(course_key) except InvalidKeyError: return Response({'error_code': 'invalid-course-key'}, status=400) except CourseOverview.DoesNotExist: return Response({'error_code': 'course-not-found'}, status=404) SavedCourse.objects.update_or_create( user_id=user.id, email=email, course_id=course_id, org_img_url=org_img_url, marketing_url=marketing_url, weeks_to_complete=weeks_to_complete, min_effort=min_effort, max_effort=max_effort, reminder_email_sent=False, ) course_data = { 'course': course, 'send_to_self': send_to_self, 'user_id': user_id, 'pref-lang': pref_lang, 'org_img_url': org_img_url, 'marketing_url': marketing_url, 'weeks_to_complete': weeks_to_complete, 'min_effort': min_effort, 'max_effort': max_effort, 'type': 'course', 'reminder': False, 'braze_event': USER_SEND_SAVE_FOR_LATER_EMAIL, } if send_email(email, course_data): return Response({'result': 'success'}, status=200) else: return Response({'error_code': 'email-not-send'}, status=400)