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
882eab4b
Commit
882eab4b
authored
Mar 09, 2015
by
Adam Palay
Committed by
alawibaba
Mar 11, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cache site status message for 5 minutes (TNL-1614)
parent
a5a303ae
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
35 additions
and
16 deletions
+35
-16
common/djangoapps/status/status.py
+8
-0
common/djangoapps/status/tests.py
+25
-14
lms/templates/navigation-edx.html
+1
-1
lms/templates/navigation.html
+1
-1
No files found.
common/djangoapps/status/status.py
View file @
882eab4b
...
...
@@ -3,6 +3,7 @@ A tiny app that checks for a status message.
"""
from
django.conf
import
settings
from
django.core.cache
import
cache
import
json
import
logging
import
os
...
...
@@ -25,6 +26,11 @@ def get_site_status_msg(course_id):
not allowed to break the entire site).
"""
try
:
# first check for msg in cache
msg
=
cache
.
get
(
'site_status_msg'
)
if
msg
is
not
None
:
return
msg
if
os
.
path
.
isfile
(
settings
.
STATUS_MESSAGE_PATH
):
with
open
(
settings
.
STATUS_MESSAGE_PATH
)
as
f
:
content
=
f
.
read
()
...
...
@@ -37,6 +43,8 @@ def get_site_status_msg(course_id):
msg
=
msg
+
"<br>"
if
msg
else
''
msg
+=
status_dict
[
course_id
]
# set msg to cache, with expiry 5 mins
cache
.
set
(
'site_status_msg'
,
msg
,
60
*
5
)
return
msg
except
:
log
.
exception
(
"Error while getting a status message."
)
...
...
common/djangoapps/status/tests.py
View file @
882eab4b
from
django.conf
import
settings
from
django.core.cache
import
cache
from
django.test
import
TestCase
import
os
from
django.test.utils
import
override_settings
from
tempfile
import
NamedTemporaryFile
import
ddt
from
.status
import
get_site_status_msg
...
...
@@ -13,6 +15,7 @@ TMP_NAME = TMP_FILE.name
TMP_FILE
.
close
()
@ddt.ddt
@override_settings
(
STATUS_MESSAGE_PATH
=
TMP_NAME
)
class
TestStatus
(
TestCase
):
"""Test that the get_site_status_msg function does the right thing"""
...
...
@@ -64,6 +67,13 @@ class TestStatus(TestCase):
with
open
(
settings
.
STATUS_MESSAGE_PATH
,
'w'
)
as
f
:
f
.
write
(
contents
)
def
clear_status_cache
(
self
):
"""
Remove the cached status message, if found
"""
if
cache
.
get
(
'site_status_msg'
)
is
not
None
:
cache
.
delete
(
'site_status_msg'
)
def
remove_status_file
(
self
):
"""Delete the status file if it exists"""
if
os
.
path
.
exists
(
settings
.
STATUS_MESSAGE_PATH
):
...
...
@@ -72,18 +82,19 @@ class TestStatus(TestCase):
def
tearDown
(
self
):
self
.
remove_status_file
()
def
test_get_site_status_msg
(
self
):
@ddt.data
(
*
checks
)
@ddt.unpack
def
test_get_site_status_msg
(
self
,
json_str
,
exp_none
,
exp_toy
,
exp_full
):
"""run the tests"""
for
(
json_str
,
exp_none
,
exp_toy
,
exp_full
)
in
self
.
checks
:
self
.
remove_status_file
()
if
json_str
:
self
.
create_status_file
(
json_str
)
print
"checking results for {0}"
.
format
(
json_str
)
print
"course=None:"
self
.
assertEqual
(
get_site_status_msg
(
None
),
exp_none
)
print
"course=toy:"
self
.
assertEqual
(
get_site_status_msg
(
self
.
toy_id
),
exp_toy
)
print
"course=full:"
self
.
assertEqual
(
get_site_status_msg
(
self
.
full_id
),
exp_full
)
self
.
remove_status_file
()
if
json_str
:
self
.
create_status_file
(
json_str
)
for
course_id
,
expected_msg
in
[(
None
,
exp_none
),
(
self
.
toy_id
,
exp_toy
),
(
self
.
full_id
,
exp_full
)]:
self
.
assertEqual
(
get_site_status_msg
(
course_id
),
expected_msg
)
self
.
assertEqual
(
cache
.
get
(
'site_status_msg'
),
expected_msg
)
# check that `get_site_status_msg` works as expected when the cache
# is warmed, too
self
.
assertEqual
(
get_site_status_msg
(
course_id
),
expected_msg
)
self
.
clear_status_cache
()
lms/templates/navigation-edx.html
View file @
882eab4b
...
...
@@ -17,7 +17,7 @@ from status.status import get_site_status_msg
## Provide a hook for themes to inject branding on top.
<
%
block
name=
"navigation_top"
/>
<
%
block
cached=
"False"
>
<
%
block
>
<
%
try:
course_id =
course.id.to_deprecated_string()
...
...
lms/templates/navigation.html
View file @
882eab4b
...
...
@@ -17,7 +17,7 @@ from status.status import get_site_status_msg
## Provide a hook for themes to inject branding on top.
<
%
block
name=
"navigation_top"
/>
<
%
block
cached=
"False"
>
<
%
block
>
<
%
try:
course_id =
course.id.to_deprecated_string()
...
...
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