Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
1473bd61
Commit
1473bd61
authored
Sep 28, 2016
by
Christina Roberts
Committed by
GitHub
Sep 28, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #13592 from edx/christina/merge-release
Christina/merge release
parents
0344eff2
e77b5eb3
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
18 additions
and
113 deletions
+18
-113
cms/envs/test.py
+0
-4
common/djangoapps/student/tasks.py
+0
-55
common/djangoapps/student/tests/test_tasks.py
+0
-47
common/djangoapps/student/views.py
+17
-2
lms/envs/common.py
+0
-4
requirements/edx/github.txt
+1
-1
No files found.
cms/envs/test.py
View file @
1473bd61
...
...
@@ -335,7 +335,3 @@ INSTALLED_APPS += ('openedx.core.djangoapps.api_admin',)
# Set the default Oauth2 Provider Model so that migrations can run in
# verbose mode
OAUTH2_PROVIDER_APPLICATION_MODEL
=
'oauth2_provider.Application'
# Used with Email sending
RETRY_ACTIVATION_EMAIL_MAX_ATTEMPTS
=
5
RETRY_ACTIVATION_EMAIL_TIMEOUT
=
0.5
common/djangoapps/student/tasks.py
deleted
100644 → 0
View file @
0344eff2
"""
This file contains celery tasks for sending email
"""
from
django.conf
import
settings
from
django.core
import
mail
from
celery.task
import
task
# pylint: disable=no-name-in-module, import-error
from
celery.utils.log
import
get_task_logger
# pylint: disable=no-name-in-module, import-error
from
celery.exceptions
import
MaxRetriesExceededError
from
boto.exception
import
NoAuthHandlerFound
log
=
get_task_logger
(
__name__
)
@task
(
bind
=
True
)
def
send_activation_email
(
self
,
user
,
subject
,
message
,
from_address
):
"""
Sending an activation email to the users.
"""
max_retries
=
settings
.
RETRY_ACTIVATION_EMAIL_MAX_ATTEMPTS
retries
=
self
.
request
.
retries
+
1
dest_addr
=
user
.
email
try
:
if
settings
.
FEATURES
.
get
(
'REROUTE_ACTIVATION_EMAIL'
):
dest_addr
=
settings
.
FEATURES
[
'REROUTE_ACTIVATION_EMAIL'
]
message
=
(
"Activation for
%
s (
%
s):
%
s
\n
"
%
(
user
,
user
.
email
,
user
.
profile
.
name
)
+
'-'
*
80
+
'
\n\n
'
+
message
)
mail
.
send_mail
(
subject
,
message
,
from_address
,
[
dest_addr
],
fail_silently
=
False
)
else
:
user
.
email_user
(
subject
,
message
,
from_address
)
# Log that the Activation Email has been sent to user without an exception
log
.
info
(
"Activataion Email has been sent to User {user_email}"
.
format
(
user_email
=
dest_addr
))
except
NoAuthHandlerFound
:
# pylint: disable=broad-except
log
.
info
(
'Retrying sending email to user {dest_addr}, attempt # {attempt} of {max_attempts}'
.
format
(
dest_addr
=
dest_addr
,
attempt
=
retries
,
max_attempts
=
max_retries
+
1
))
try
:
self
.
retry
(
countdown
=
settings
.
RETRY_ACTIVATION_EMAIL_TIMEOUT
,
max_retries
=
max_retries
)
except
MaxRetriesExceededError
:
log
.
error
(
'Unable to send activation email to user from "
%
s" to "
%
s"'
,
from_address
,
dest_addr
,
exc_info
=
True
)
except
:
# pylint: disable=bare-except
log
.
exception
(
'Unable to send activation email to user from "
%
s" to "
%
s"'
,
from_address
,
dest_addr
,
exc_info
=
True
)
common/djangoapps/student/tests/test_tasks.py
deleted
100644 → 0
View file @
0344eff2
"""
Tests for the Sending activation email celery tasks
"""
import
mock
from
django.test
import
TestCase
from
django.conf
import
settings
from
student.tasks
import
send_activation_email
from
boto.exception
import
NoAuthHandlerFound
class
SendActivationEmailTestCase
(
TestCase
):
"""
Test for send activation email to user
"""
@mock.patch
(
'time.sleep'
,
mock
.
Mock
(
return_value
=
None
))
@mock.patch
(
'student.tasks.log'
)
@mock.patch
(
'django.contrib.auth.models.User'
)
def
test_send_email
(
self
,
mock_user
,
mock_log
):
"""
Tests retries when the activation email doesn't send
"""
from_address
=
'task_testing@edX.com'
mock_user
.
email_user
.
side_effect
=
NoAuthHandlerFound
email_max_attempts
=
settings
.
RETRY_ACTIVATION_EMAIL_MAX_ATTEMPTS
+
1
send_activation_email
.
delay
(
mock_user
,
'Task_test'
,
'Task_test_message'
,
from_address
)
# Asserts sending email retry logging.
for
attempt
in
xrange
(
1
,
email_max_attempts
):
mock_log
.
info
.
assert_any_call
(
'Retrying sending email to user {dest_addr}, attempt # {attempt} of {max_attempts}'
.
format
(
dest_addr
=
mock_user
.
email
,
attempt
=
attempt
,
max_attempts
=
email_max_attempts
))
self
.
assertEquals
(
mock_log
.
info
.
call_count
,
6
)
# Asserts that the error was logged on crossing max retry attempts.
mock_log
.
error
.
assert_called_with
(
'Unable to send activation email to user from "
%
s" to "
%
s"'
,
from_address
,
mock_user
.
email
,
exc_info
=
True
)
self
.
assertEquals
(
mock_log
.
error
.
call_count
,
1
)
common/djangoapps/student/views.py
View file @
1473bd61
...
...
@@ -56,7 +56,6 @@ from student.models import (
DashboardConfiguration
,
LinkedInAddToProfileConfiguration
,
ManualEnrollmentAudit
,
ALLOWEDTOENROLL_TO_ENROLLED
,
LogoutViewConfiguration
)
from
student.forms
import
AccountCreationForm
,
PasswordResetFormNoActive
,
get_registration_extension_form
from
student.tasks
import
send_activation_email
from
lms.djangoapps.commerce.utils
import
EcommerceService
# pylint: disable=import-error
from
lms.djangoapps.verify_student.models
import
SoftwareSecurePhotoVerification
# pylint: disable=import-error
from
bulk_email.models
import
Optout
,
BulkEmailFlag
# pylint: disable=import-error
...
...
@@ -1776,10 +1775,12 @@ def create_account_with_params(request, params):
)
)
if
send_email
:
dest_addr
=
user
.
email
context
=
{
'name'
:
profile
.
name
,
'key'
:
registration
.
activation_key
,
}
# composes activation email
subject
=
render_to_string
(
'emails/activation_email_subject.txt'
,
context
)
# Email subject *must not* contain newlines
...
...
@@ -1790,7 +1791,21 @@ def create_account_with_params(request, params):
'email_from_address'
,
settings
.
DEFAULT_FROM_EMAIL
)
send_activation_email
.
delay
(
user
,
subject
,
message
,
from_address
)
try
:
if
settings
.
FEATURES
.
get
(
'REROUTE_ACTIVATION_EMAIL'
):
dest_addr
=
settings
.
FEATURES
[
'REROUTE_ACTIVATION_EMAIL'
]
message
=
(
"Activation for
%
s (
%
s):
%
s
\n
"
%
(
user
,
user
.
email
,
profile
.
name
)
+
'-'
*
80
+
'
\n\n
'
+
message
)
mail
.
send_mail
(
subject
,
message
,
from_address
,
[
dest_addr
],
fail_silently
=
False
)
else
:
user
.
email_user
(
subject
,
message
,
from_address
)
except
Exception
:
# pylint: disable=broad-except
log
.
error
(
u'Unable to send activation email to user from "
%
s" to "
%
s"'
,
from_address
,
dest_addr
,
exc_info
=
True
)
else
:
registration
.
activate
()
_enroll_user_in_pending_courses
(
user
)
# Enroll student in any pending courses
...
...
lms/envs/common.py
View file @
1473bd61
...
...
@@ -370,10 +370,6 @@ GENERATE_PROFILE_SCORES = False
# Used with XQueue
XQUEUE_WAITTIME_BETWEEN_REQUESTS
=
5
# seconds
# Used with Email sending
RETRY_ACTIVATION_EMAIL_MAX_ATTEMPTS
=
5
RETRY_ACTIVATION_EMAIL_TIMEOUT
=
0.5
############################# SET PATH INFORMATION #############################
PROJECT_ROOT
=
path
(
__file__
)
.
abspath
()
.
dirname
()
.
dirname
()
# /edx-platform/lms
...
...
requirements/edx/github.txt
View file @
1473bd61
...
...
@@ -97,4 +97,4 @@ git+https://github.com/edx/edx-proctoring.git@0.13.0#egg=edx-proctoring==0.13.0
# Third Party XBlocks
-e git+https://github.com/mitodl/edx-sga@172a90fd2738f8142c10478356b2d9ed3e55334a#egg=edx-sga
-e git+https://github.com/open-craft/xblock-poll@v1.2.1#egg=xblock-poll==1.2.1
git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@v2.0.
9#egg=xblock-drag-and-drop-v2==2.0.9
git+https://github.com/edx-solutions/xblock-drag-and-drop-v2@v2.0.
10#egg=xblock-drag-and-drop-v2==2.0.10
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment