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
from
urlparse
import
urljoin
from
celery
import
task
from
crum
import
CurrentRequestUserMiddleware
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
django.contrib.sites.models
import
Site
...
...
@@ -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.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
...
...
@@ -44,11 +42,7 @@ def send_ace_message(context):
if
_should_send_message
(
context
):
context
[
'site'
]
=
Site
.
objects
.
get
(
id
=
context
[
'site_id'
])
thread_author
=
User
.
objects
.
get
(
id
=
context
[
'thread_author_id'
])
middleware_classes
=
[
CurrentRequestUserMiddleware
,
CurrentSiteThemeMiddleware
,
]
with
emulate_http_request
(
site
=
context
[
'site'
],
user
=
thread_author
,
middleware_classes
=
middleware_classes
):
with
emulate_http_request
(
site
=
context
[
'site'
],
user
=
thread_author
):
message_context
=
_build_message_context
(
context
)
message
=
ResponseNotification
()
.
personalize
(
Recipient
(
thread_author
.
username
,
thread_author
.
email
),
...
...
lms/djangoapps/discussion/tests/test_tasks.py
View file @
c397840d
...
...
@@ -222,12 +222,8 @@ class TaskTestCase(ModuleStoreTestCase):
def
_assert_rendered_email
(
self
,
message
):
# check that we can actually render the message
middleware_classes
=
[
CurrentRequestUserMiddleware
,
CurrentSiteThemeMiddleware
,
]
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
)
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
import
analytics
from
celery.task
import
task
,
Task
from
crum
import
CurrentRequestUserMiddleware
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
django.contrib.sites.models
import
Site
...
...
@@ -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.models
import
Schedule
,
ScheduleConfig
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
LOG
=
logging
.
getLogger
(
__name__
)
...
...
@@ -103,11 +101,7 @@ class ScheduleMessageBaseTask(Task):
):
msg_type
=
self
.
make_message_type
(
day_offset
)
site
=
Site
.
objects
.
select_related
(
'configuration'
)
.
get
(
id
=
site_id
)
middleware_classes
=
[
CurrentRequestUserMiddleware
,
CurrentSiteThemeMiddleware
,
]
with
emulate_http_request
(
site
=
site
,
middleware_classes
=
middleware_classes
):
with
emulate_http_request
(
site
=
site
):
_annotate_for_monitoring
(
msg_type
,
site
,
bin_num
,
target_day_str
,
day_offset
)
return
self
.
resolver
(
self
.
async_send_task
,
...
...
@@ -191,11 +185,7 @@ def _schedule_send(msg_str, site_id, delivery_config_var, log_prefix):
msg
=
Message
.
from_string
(
msg_str
)
user
=
User
.
objects
.
get
(
username
=
msg
.
recipient
.
username
)
middleware_classes
=
[
CurrentRequestUserMiddleware
,
CurrentSiteThemeMiddleware
,
]
with
emulate_http_request
(
site
=
site
,
user
=
user
,
middleware_classes
=
middleware_classes
):
with
emulate_http_request
(
site
=
site
,
user
=
user
):
_annonate_send_task_for_monitoring
(
msg
)
LOG
.
debug
(
'
%
s: Sending message =
%
s'
,
log_prefix
,
msg_str
)
ace
.
send
(
msg
)
...
...
openedx/core/lib/celery/task_utils.py
View file @
c397840d
from
contextlib
import
contextmanager
from
crum
import
CurrentRequestUserMiddleware
from
django.http
import
HttpRequest
,
HttpResponse
from
openedx.core.djangoapps.theming.middleware
import
CurrentSiteThemeMiddleware
@contextmanager
...
...
@@ -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.
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.
Defaults to [CurrentRequestUserMiddleware, CurrentSiteThemeMiddleware] if None.
"""
request
=
HttpRequest
()
request
.
user
=
user
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
]
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