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
c397840d
Unverified
Commit
c397840d
authored
Dec 01, 2017
by
Tyler Hallada
Committed by
GitHub
Dec 01, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #16598 from edx/thallada/ret-emulate-request-default-middleware
Default middleware_classes in emulate_http_request
parents
dd9dfb06
fd5c5acc
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
12 additions
and
25 deletions
+12
-25
lms/djangoapps/discussion/tasks.py
+1
-7
lms/djangoapps/discussion/tests/test_tasks.py
+1
-5
openedx/core/djangoapps/schedules/tasks.py
+2
-12
openedx/core/lib/celery/task_utils.py
+8
-1
No files found.
lms/djangoapps/discussion/tasks.py
View file @
c397840d
...
@@ -6,7 +6,6 @@ import logging
...
@@ -6,7 +6,6 @@ import logging
from
urlparse
import
urljoin
from
urlparse
import
urljoin
from
celery
import
task
from
celery
import
task
from
crum
import
CurrentRequestUserMiddleware
from
django.conf
import
settings
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
django.contrib.auth.models
import
User
from
django.contrib.sites.models
import
Site
from
django.contrib.sites.models
import
Site
...
@@ -22,7 +21,6 @@ import lms.lib.comment_client as cc
...
@@ -22,7 +21,6 @@ import lms.lib.comment_client as cc
from
openedx.core.djangoapps.content.course_overviews.models
import
CourseOverview
from
openedx.core.djangoapps.content.course_overviews.models
import
CourseOverview
from
openedx.core.djangoapps.schedules.template_context
import
get_base_template_context
from
openedx.core.djangoapps.schedules.template_context
import
get_base_template_context
from
openedx.core.djangoapps.theming.middleware
import
CurrentSiteThemeMiddleware
from
openedx.core.lib.celery.task_utils
import
emulate_http_request
from
openedx.core.lib.celery.task_utils
import
emulate_http_request
...
@@ -44,11 +42,7 @@ def send_ace_message(context):
...
@@ -44,11 +42,7 @@ def send_ace_message(context):
if
_should_send_message
(
context
):
if
_should_send_message
(
context
):
context
[
'site'
]
=
Site
.
objects
.
get
(
id
=
context
[
'site_id'
])
context
[
'site'
]
=
Site
.
objects
.
get
(
id
=
context
[
'site_id'
])
thread_author
=
User
.
objects
.
get
(
id
=
context
[
'thread_author_id'
])
thread_author
=
User
.
objects
.
get
(
id
=
context
[
'thread_author_id'
])
middleware_classes
=
[
with
emulate_http_request
(
site
=
context
[
'site'
],
user
=
thread_author
):
CurrentRequestUserMiddleware
,
CurrentSiteThemeMiddleware
,
]
with
emulate_http_request
(
site
=
context
[
'site'
],
user
=
thread_author
,
middleware_classes
=
middleware_classes
):
message_context
=
_build_message_context
(
context
)
message_context
=
_build_message_context
(
context
)
message
=
ResponseNotification
()
.
personalize
(
message
=
ResponseNotification
()
.
personalize
(
Recipient
(
thread_author
.
username
,
thread_author
.
email
),
Recipient
(
thread_author
.
username
,
thread_author
.
email
),
...
...
lms/djangoapps/discussion/tests/test_tasks.py
View file @
c397840d
...
@@ -222,12 +222,8 @@ class TaskTestCase(ModuleStoreTestCase):
...
@@ -222,12 +222,8 @@ class TaskTestCase(ModuleStoreTestCase):
def
_assert_rendered_email
(
self
,
message
):
def
_assert_rendered_email
(
self
,
message
):
# check that we can actually render the message
# check that we can actually render the message
middleware_classes
=
[
CurrentRequestUserMiddleware
,
CurrentSiteThemeMiddleware
,
]
with
emulate_http_request
(
with
emulate_http_request
(
site
=
message
.
context
[
'site'
],
user
=
self
.
thread_author
,
middleware_classes
=
middleware_classes
site
=
message
.
context
[
'site'
],
user
=
self
.
thread_author
):
):
rendered_email
=
EmailRenderer
()
.
render
(
message
)
rendered_email
=
EmailRenderer
()
.
render
(
message
)
self
.
assertTrue
(
self
.
comment
[
'body'
]
in
rendered_email
.
body_html
)
self
.
assertTrue
(
self
.
comment
[
'body'
]
in
rendered_email
.
body_html
)
...
...
openedx/core/djangoapps/schedules/tasks.py
View file @
c397840d
...
@@ -3,7 +3,6 @@ import logging
...
@@ -3,7 +3,6 @@ import logging
import
analytics
import
analytics
from
celery.task
import
task
,
Task
from
celery.task
import
task
,
Task
from
crum
import
CurrentRequestUserMiddleware
from
django.conf
import
settings
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
django.contrib.auth.models
import
User
from
django.contrib.sites.models
import
Site
from
django.contrib.sites.models
import
Site
...
@@ -20,7 +19,6 @@ from openedx.core.djangoapps.monitoring_utils import set_custom_metric
...
@@ -20,7 +19,6 @@ from openedx.core.djangoapps.monitoring_utils import set_custom_metric
from
openedx.core.djangoapps.schedules
import
message_types
from
openedx.core.djangoapps.schedules
import
message_types
from
openedx.core.djangoapps.schedules.models
import
Schedule
,
ScheduleConfig
from
openedx.core.djangoapps.schedules.models
import
Schedule
,
ScheduleConfig
from
openedx.core.djangoapps.schedules
import
resolvers
from
openedx.core.djangoapps.schedules
import
resolvers
from
openedx.core.djangoapps.theming.middleware
import
CurrentSiteThemeMiddleware
from
openedx.core.lib.celery.task_utils
import
emulate_http_request
from
openedx.core.lib.celery.task_utils
import
emulate_http_request
LOG
=
logging
.
getLogger
(
__name__
)
LOG
=
logging
.
getLogger
(
__name__
)
...
@@ -103,11 +101,7 @@ class ScheduleMessageBaseTask(Task):
...
@@ -103,11 +101,7 @@ class ScheduleMessageBaseTask(Task):
):
):
msg_type
=
self
.
make_message_type
(
day_offset
)
msg_type
=
self
.
make_message_type
(
day_offset
)
site
=
Site
.
objects
.
select_related
(
'configuration'
)
.
get
(
id
=
site_id
)
site
=
Site
.
objects
.
select_related
(
'configuration'
)
.
get
(
id
=
site_id
)
middleware_classes
=
[
with
emulate_http_request
(
site
=
site
):
CurrentRequestUserMiddleware
,
CurrentSiteThemeMiddleware
,
]
with
emulate_http_request
(
site
=
site
,
middleware_classes
=
middleware_classes
):
_annotate_for_monitoring
(
msg_type
,
site
,
bin_num
,
target_day_str
,
day_offset
)
_annotate_for_monitoring
(
msg_type
,
site
,
bin_num
,
target_day_str
,
day_offset
)
return
self
.
resolver
(
return
self
.
resolver
(
self
.
async_send_task
,
self
.
async_send_task
,
...
@@ -191,11 +185,7 @@ def _schedule_send(msg_str, site_id, delivery_config_var, log_prefix):
...
@@ -191,11 +185,7 @@ def _schedule_send(msg_str, site_id, delivery_config_var, log_prefix):
msg
=
Message
.
from_string
(
msg_str
)
msg
=
Message
.
from_string
(
msg_str
)
user
=
User
.
objects
.
get
(
username
=
msg
.
recipient
.
username
)
user
=
User
.
objects
.
get
(
username
=
msg
.
recipient
.
username
)
middleware_classes
=
[
with
emulate_http_request
(
site
=
site
,
user
=
user
):
CurrentRequestUserMiddleware
,
CurrentSiteThemeMiddleware
,
]
with
emulate_http_request
(
site
=
site
,
user
=
user
,
middleware_classes
=
middleware_classes
):
_annonate_send_task_for_monitoring
(
msg
)
_annonate_send_task_for_monitoring
(
msg
)
LOG
.
debug
(
'
%
s: Sending message =
%
s'
,
log_prefix
,
msg_str
)
LOG
.
debug
(
'
%
s: Sending message =
%
s'
,
log_prefix
,
msg_str
)
ace
.
send
(
msg
)
ace
.
send
(
msg
)
...
...
openedx/core/lib/celery/task_utils.py
View file @
c397840d
from
contextlib
import
contextmanager
from
contextlib
import
contextmanager
from
crum
import
CurrentRequestUserMiddleware
from
django.http
import
HttpRequest
,
HttpResponse
from
django.http
import
HttpRequest
,
HttpResponse
from
openedx.core.djangoapps.theming.middleware
import
CurrentSiteThemeMiddleware
@contextmanager
@contextmanager
...
@@ -20,12 +22,17 @@ def emulate_http_request(site=None, user=None, middleware_classes=None):
...
@@ -20,12 +22,17 @@ def emulate_http_request(site=None, user=None, middleware_classes=None):
site (Site): The site that this request should emulate. Defaults to None.
site (Site): The site that this request should emulate. Defaults to None.
user (User): The user that initiated this fake request. Defaults to None
user (User): The user that initiated this fake request. Defaults to None
middleware_classes (list): A list of classes that implement Django's middleware interface.
middleware_classes (list): A list of classes that implement Django's middleware interface.
Defaults to [CurrentRequestUserMiddleware, CurrentSiteThemeMiddleware] if None.
"""
"""
request
=
HttpRequest
()
request
=
HttpRequest
()
request
.
user
=
user
request
.
user
=
user
request
.
site
=
site
request
.
site
=
site
middleware_classes
=
middleware_classes
or
[]
# TODO: define the default middleware_classes in settings.py
middleware_classes
=
middleware_classes
or
[
CurrentRequestUserMiddleware
,
CurrentSiteThemeMiddleware
,
]
middleware_instances
=
[
klass
()
for
klass
in
middleware_classes
]
middleware_instances
=
[
klass
()
for
klass
in
middleware_classes
]
response
=
HttpResponse
()
response
=
HttpResponse
()
...
...
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