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
3f1d97b0
Commit
3f1d97b0
authored
Apr 22, 2013
by
Your Name
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into feature/kevin/flagging
parents
30104979
5e73e8f2
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
178 additions
and
105 deletions
+178
-105
cms/djangoapps/contentstore/tests/test_contentstore.py
+7
-2
cms/templates/settings_graders.html
+10
-10
common/lib/capa/capa/inputtypes.py
+19
-5
common/lib/capa/capa/templates/matlabinput.html
+5
-3
common/lib/capa/capa/tests/test_inputtypes.py
+42
-12
common/lib/xmodule/xmodule/modulestore/xml_importer.py
+3
-3
lms/djangoapps/django_comment_client/forum/views.py
+0
-1
lms/djangoapps/static_template_view/tests.py
+55
-10
lms/djangoapps/static_template_view/views.py
+21
-1
lms/templates/feed.rss
+14
-14
lms/templates/static_templates/press_releases/cengage_to_provide_book_content.html
+0
-0
lms/templates/static_templates/press_releases/edx_announces_proctored_exam_testing.html
+0
-0
lms/templates/static_templates/press_releases/elsevier_collaborates_with_edx.html
+0
-0
lms/templates/static_templates/press_releases/gates_foundation_announcement.html
+0
-0
lms/templates/static_templates/press_releases/georgetown_joins_edx.html
+0
-0
lms/templates/static_templates/press_releases/lewin_course_announcement.html
+0
-0
lms/templates/static_templates/press_releases/mit_and_harvard_announce_edx.html
+0
-0
lms/templates/static_templates/press_releases/spring_courses.html
+0
-0
lms/templates/static_templates/press_releases/stanford_to_work_with_edx.html
+0
-0
lms/templates/static_templates/press_releases/uc_berkeley_joins_edx.html
+0
-0
lms/templates/static_templates/press_releases/ut_joins_edx.html
+0
-0
lms/templates/static_templates/press_releases/wellesley_college_joins_edx.html
+0
-0
lms/urls.py
+2
-44
No files found.
cms/djangoapps/contentstore/tests/test_contentstore.py
View file @
3f1d97b0
...
...
@@ -9,7 +9,6 @@ from tempdir import mkdtemp_clean
from
fs.osfs
import
OSFS
import
copy
from
json
import
loads
import
traceback
from
datetime
import
timedelta
from
django.contrib.auth.models
import
User
...
...
@@ -397,7 +396,7 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase):
# We had a bug where orphaned draft nodes caused export to fail. This is here to cover that case.
draft_store
.
clone_item
(
vertical
.
location
,
Location
([
'i4x'
,
'edX'
,
'full'
,
'vertical'
,
'no_references'
,
'draft'
]))
'vertical'
,
'no_references'
,
'draft'
]))
for
child
in
vertical
.
get_children
():
draft_store
.
clone_item
(
child
.
location
,
child
.
location
)
...
...
@@ -478,6 +477,12 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase):
for
child
in
vertical
.
get_children
():
self
.
assertTrue
(
getattr
(
child
,
'is_draft'
,
False
))
# make sure that we don't have a sequential that is in draft mode
sequential
=
draft_store
.
get_item
(
Location
([
'i4x'
,
'edX'
,
'full'
,
'sequential'
,
'Administrivia_and_Circuit_Elements'
,
None
]))
self
.
assertFalse
(
getattr
(
sequential
,
'is_draft'
,
False
))
# verify that we have the private vertical
test_private_vertical
=
draft_store
.
get_item
(
Location
([
'i4x'
,
'edX'
,
'full'
,
'vertical'
,
'vertical_66'
,
None
]))
...
...
cms/templates/settings_graders.html
View file @
3f1d97b0
...
...
@@ -4,20 +4,20 @@
<
%
namespace
name=
'static'
file=
'static_content.html'
/>
<
%!
from
contentstore
import
utils
from
contentstore
import
utils
%
>
<
%
block
name=
"jsextra"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"${static.url('js/vendor/timepicker/jquery.timepicker.css')}"
/>
<script
src=
"${static.url('js/vendor/timepicker/jquery.timepicker.js')}"
></script>
<script
type=
"text/javascript"
src=
"${static.url('js/template_loader.js')}"
></script>
<script
type=
"text/javascript"
src=
"${static.url('js/views/server_error.js')}"
></script>
<script
type=
"text/javascript"
src=
"${static.url('js/models/course_relative.js')}"
></script>
<script
type=
"text/javascript"
src=
"${static.url('js/views/validating_view.js')}"
></script>
<script
type=
"text/javascript"
src=
"${static.url('js/models/settings/course_grading_policy.js')}"
></script>
<script
type=
"text/javascript"
src=
"${static.url('js/views/settings/settings_grading_view.js')}"
></script>
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
(){
...
...
@@ -26,15 +26,15 @@ from contentstore import utils
}).
blur
(
function
()
{
$
(
"label"
).
removeClass
(
"is-focused"
);
});
var
editor
=
new
CMS
.
Views
.
Settings
.
Grading
({
el
:
$
(
'.settings-grading'
),
model
:
new
CMS
.
Models
.
Settings
.
CourseGradingPolicy
(
$
{
course_details
|
n
},{
parse
:
true
})
});
editor
.
render
();
});
</script>
</
%
block>
...
...
@@ -97,7 +97,7 @@ from contentstore import utils
<ol
class=
"list-input"
>
<li
class=
"field text"
id=
"field-course-grading-graceperiod"
>
<label
for=
"course-grading-graceperiod"
>
Grace Period on Deadline:
</label>
<input
type=
"text"
class=
"short time"
id=
"course-grading-graceperiod"
value=
"0:00"
placeholder=
"
e.g. 10 minutes"
>
<input
type=
"text"
class=
"short time"
id=
"course-grading-graceperiod"
value=
"0:00"
placeholder=
"
HH:MM"
autocomplete=
"off"
/
>
<span
class=
"tip tip-inline"
>
Leeway on due dates
</span>
</li>
</ol>
...
...
@@ -112,13 +112,13 @@ from contentstore import utils
</header>
<ol
class=
"list-input course-grading-assignment-list enum"
>
</ol>
</ol>
<div
class=
"actions"
>
<a
href=
"#"
class=
"new-button new-course-grading-item add-grading-data"
>
<span
class=
"plus-icon white"
></span>
New Assignment Type
</a>
</a>
</div>
</section>
</form>
...
...
common/lib/capa/capa/inputtypes.py
View file @
3f1d97b0
...
...
@@ -668,6 +668,8 @@ class MatlabInput(CodeInput):
# Check if problem has been queued
self
.
queuename
=
'matlab'
self
.
queue_msg
=
''
# this is only set if we don't have a graded response
# the graded response takes precedence
if
'queue_msg'
in
self
.
input_state
and
self
.
status
in
[
'queued'
,
'incomplete'
,
'unsubmitted'
]:
self
.
queue_msg
=
self
.
input_state
[
'queue_msg'
]
if
'queuestate'
in
self
.
input_state
and
self
.
input_state
[
'queuestate'
]
==
'queued'
:
...
...
@@ -712,11 +714,23 @@ class MatlabInput(CodeInput):
self
.
input_state
[
'queuestate'
]
=
None
self
.
input_state
[
'queuekey'
]
=
None
def
button_enabled
(
self
):
""" Return whether or not we want the 'Test Code' button visible
Right now, we only want this button to show up when a problem has not been
checked.
"""
if
self
.
status
in
[
'correct'
,
'incorrect'
]:
return
False
else
:
return
True
def
_extra_context
(
self
):
''' Set up additional context variables'''
extra_context
=
{
'queue_len'
:
str
(
self
.
queue_len
),
'queue_msg'
:
self
.
queue_msg
'queue_msg'
:
self
.
queue_msg
,
'button_enabled'
:
self
.
button_enabled
(),
}
return
extra_context
...
...
@@ -766,10 +780,6 @@ class MatlabInput(CodeInput):
lms_key
=
queuekey
,
queue_name
=
self
.
queuename
)
# save the input state
self
.
input_state
[
'queuekey'
]
=
queuekey
self
.
input_state
[
'queuestate'
]
=
'queued'
# construct xqueue body
student_info
=
{
'anonymous_student_id'
:
anonymous_student_id
,
'submission_time'
:
qtime
}
...
...
@@ -779,6 +789,10 @@ class MatlabInput(CodeInput):
(
error
,
msg
)
=
qinterface
.
send_to_queue
(
header
=
xheader
,
body
=
json
.
dumps
(
contents
))
# save the input state if successful
if
error
==
0
:
self
.
input_state
[
'queuekey'
]
=
queuekey
self
.
input_state
[
'queuestate'
]
=
'queued'
return
{
'success'
:
error
==
0
,
'message'
:
msg
}
...
...
common/lib/capa/capa/templates/matlabinput.html
View file @
3f1d97b0
...
...
@@ -33,9 +33,11 @@
${queue_msg|n}
</div>
% if button_enabled:
<div
class=
"plot-button"
>
<input
type=
"button"
class=
"save"
name=
"plot-button"
id=
"plot_${id}"
value=
"
Plot
"
/>
<input
type=
"button"
class=
"save"
name=
"plot-button"
id=
"plot_${id}"
value=
"
Run Code
"
/>
</div>
%endif
<script>
// Note: We need to make the area follow the CodeMirror for this to work.
...
...
@@ -91,7 +93,7 @@
window
.
location
.
reload
();
}
else
{
gentle_alert
(
problem_elt
,
msg
);
gentle_alert
(
problem_elt
,
response
.
message
);
}
}
...
...
@@ -102,7 +104,7 @@
{
'submission'
:
submission
},
plot_callback
);
}
else
{
gentle_alert
(
problem_elt
,
msg
);
gentle_alert
(
problem_elt
,
response
.
message
);
}
}
...
...
common/lib/capa/capa/tests/test_inputtypes.py
View file @
3f1d97b0
...
...
@@ -384,6 +384,7 @@ class MatlabTest(unittest.TestCase):
'linenumbers'
:
'true'
,
'hidden'
:
''
,
'tabsize'
:
int
(
self
.
tabsize
),
'button_enabled'
:
True
,
'queue_len'
:
'3'
}
self
.
assertEqual
(
context
,
expected
)
...
...
@@ -409,10 +410,37 @@ class MatlabTest(unittest.TestCase):
'linenumbers'
:
'true'
,
'hidden'
:
''
,
'tabsize'
:
int
(
self
.
tabsize
),
'button_enabled'
:
True
,
'queue_len'
:
'3'
}
self
.
assertEqual
(
context
,
expected
)
def
test_rendering_when_completed
(
self
):
for
status
in
[
'correct'
,
'incorrect'
]:
state
=
{
'value'
:
'print "good evening"'
,
'status'
:
status
,
'input_state'
:
{},
}
elt
=
etree
.
fromstring
(
self
.
xml
)
the_input
=
self
.
input_class
(
test_system
,
elt
,
state
)
context
=
the_input
.
_get_render_context
()
expected
=
{
'id'
:
'prob_1_2'
,
'value'
:
'print "good evening"'
,
'status'
:
status
,
'msg'
:
''
,
'mode'
:
self
.
mode
,
'rows'
:
self
.
rows
,
'cols'
:
self
.
cols
,
'queue_msg'
:
''
,
'linenumbers'
:
'true'
,
'hidden'
:
''
,
'tabsize'
:
int
(
self
.
tabsize
),
'button_enabled'
:
False
,
'queue_len'
:
'0'
}
self
.
assertEqual
(
context
,
expected
)
def
test_rendering_while_queued
(
self
):
state
=
{
'value'
:
'print "good evening"'
,
'status'
:
'incomplete'
,
...
...
@@ -433,6 +461,7 @@ class MatlabTest(unittest.TestCase):
'linenumbers'
:
'true'
,
'hidden'
:
''
,
'tabsize'
:
int
(
self
.
tabsize
),
'button_enabled'
:
True
,
'queue_len'
:
'1'
}
self
.
assertEqual
(
context
,
expected
)
...
...
@@ -447,6 +476,17 @@ class MatlabTest(unittest.TestCase):
self
.
assertTrue
(
self
.
the_input
.
input_state
[
'queuekey'
]
is
not
None
)
self
.
assertEqual
(
self
.
the_input
.
input_state
[
'queuestate'
],
'queued'
)
def
test_plot_data_failure
(
self
):
get
=
{
'submission'
:
'x = 1234;'
}
error_message
=
'Error message!'
test_system
.
xqueue
[
'interface'
]
.
send_to_queue
.
return_value
=
(
1
,
error_message
)
response
=
self
.
the_input
.
handle_ajax
(
"plot"
,
get
)
self
.
assertFalse
(
response
[
'success'
])
self
.
assertEqual
(
response
[
'message'
],
error_message
)
self
.
assertTrue
(
'queuekey'
not
in
self
.
the_input
.
input_state
)
self
.
assertTrue
(
'queuestate'
not
in
self
.
the_input
.
input_state
)
test_system
.
xqueue
[
'interface'
]
.
send_to_queue
.
return_value
=
(
0
,
'Success!'
)
def
test_ungraded_response_success
(
self
):
queuekey
=
'abcd'
input_state
=
{
'queuekey'
:
queuekey
,
'queuestate'
:
'queued'
}
...
...
@@ -583,7 +623,6 @@ class ImageInputTest(unittest.TestCase):
self
.
check
(
'[12 13 14]'
,
0
,
0
)
class
CrystallographyTest
(
unittest
.
TestCase
):
'''
Check that crystallography inputs work
...
...
@@ -613,8 +652,7 @@ class CrystallographyTest(unittest.TestCase):
'status'
:
'unsubmitted'
,
'msg'
:
''
,
'width'
:
width
,
'height'
:
height
,
}
'height'
:
height
}
self
.
assertEqual
(
context
,
expected
)
...
...
@@ -654,13 +692,11 @@ class VseprTest(unittest.TestCase):
'width'
:
width
,
'height'
:
height
,
'molecules'
:
molecules
,
'geometries'
:
geometries
,
}
'geometries'
:
geometries
}
self
.
assertEqual
(
context
,
expected
)
class
ChemicalEquationTest
(
unittest
.
TestCase
):
'''
Check that chemical equation inputs work.
...
...
@@ -674,7 +710,6 @@ class ChemicalEquationTest(unittest.TestCase):
state
=
{
'value'
:
'H2OYeah'
,
}
self
.
the_input
=
lookup_tag
(
'chemicalequationinput'
)(
test_system
,
element
,
state
)
def
test_rendering
(
self
):
''' Verify that the render context matches the expected render context'''
context
=
self
.
the_input
.
_get_render_context
()
...
...
@@ -688,10 +723,8 @@ class ChemicalEquationTest(unittest.TestCase):
}
self
.
assertEqual
(
context
,
expected
)
def
test_chemcalc_ajax_sucess
(
self
):
''' Verify that using the correct dispatch and valid data produces a valid response'''
data
=
{
'formula'
:
"H"
}
response
=
self
.
the_input
.
handle_ajax
(
"preview_chemcalc"
,
data
)
...
...
@@ -700,9 +733,6 @@ class ChemicalEquationTest(unittest.TestCase):
self
.
assertEqual
(
response
[
'error'
],
""
)
class
DragAndDropTest
(
unittest
.
TestCase
):
'''
Check that drag and drop inputs work
...
...
common/lib/xmodule/xmodule/modulestore/xml_importer.py
View file @
3f1d97b0
...
...
@@ -274,7 +274,7 @@ def import_from_xml(store, data_dir, course_dirs=None,
# now import any 'draft' items
if
draft_store
is
not
None
:
import_course_draft
(
xml_module_store
,
draft_store
,
course_data_path
,
import_course_draft
(
xml_module_store
,
store
,
draft_store
,
course_data_path
,
static_content_store
,
target_location_namespace
if
target_location_namespace
is
not
None
else
course_location
)
...
...
@@ -339,7 +339,7 @@ def import_module(module, store, course_data_path, static_content_store, allow_n
store
.
update_metadata
(
module
.
location
,
dict
(
own_metadata
(
module
)))
def
import_course_draft
(
xml_module_store
,
store
,
course_data_path
,
static_content_store
,
target_location_namespace
):
def
import_course_draft
(
xml_module_store
,
store
,
draft_store
,
course_data_path
,
static_content_store
,
target_location_namespace
):
'''
This will import all the content inside of the 'drafts' folder, if it exists
NOTE: This is not a full course import, basically in our current application only verticals (and downwards)
...
...
@@ -396,7 +396,7 @@ def import_course_draft(xml_module_store, store, course_data_path, static_conten
del
module
.
xml_attributes
[
'parent_sequential_url'
]
del
module
.
xml_attributes
[
'index_in_children_list'
]
import_module
(
module
,
store
,
course_data_path
,
static_content_store
,
allow_not_found
=
True
)
import_module
(
module
,
draft_
store
,
course_data_path
,
static_content_store
,
allow_not_found
=
True
)
for
child
in
module
.
get_children
():
_import_module
(
child
)
...
...
lms/djangoapps/django_comment_client/forum/views.py
View file @
3f1d97b0
...
...
@@ -231,7 +231,6 @@ def forum_form_discussion(request, course_id):
'is_course_cohorted'
:
is_course_cohorted
(
course_id
)
}
# print "start rendering.."
return
render_to_response
(
'discussion/index.html'
,
context
)
...
...
lms/djangoapps/static_template_view/tests.py
View file @
3f1d97b0
"""
This file demonstrates writing tests using the unittest module. These will pass
when you run "manage.py test".
Replace this with more appropriate tests for your application.
"""
from
django.test
import
TestCase
from
django.test.client
import
Client
class
SimpleTest
(
TestCase
):
def
test_basic_addition
(
self
):
def
setUp
(
self
):
self
.
client
=
Client
()
def
test_render
(
self
):
"""
Render a normal page, like jobs
"""
response
=
self
.
client
.
get
(
"/jobs"
)
self
.
assertEquals
(
response
.
status_code
,
200
)
def
test_render_press_release
(
self
):
"""
Tests that 1 + 1 always equals 2.
Render press releases from generic URL match
"""
self
.
assertEqual
(
1
+
1
,
2
)
# since I had to remap files, pedantically test all press releases
# published to date. Decent positive test while we're at it.
all_releases
=
[
"/press/mit-and-harvard-announce-edx"
,
"/press/uc-berkeley-joins-edx"
,
"/press/edX-announces-proctored-exam-testing"
,
"/press/elsevier-collaborates-with-edx"
,
"/press/ut-joins-edx"
,
"/press/cengage-to-provide-book-content"
,
"/press/gates-foundation-announcement"
,
"/press/wellesley-college-joins-edx"
,
"/press/georgetown-joins-edx"
,
"/press/spring-courses"
,
"/press/lewin-course-announcement"
,
"/press/bostonx-announcement"
,
"/press/eric-lander-secret-of-life"
,
"/press/edx-expands-internationally"
,
"/press/xblock_announcement"
,
"/press/stanford-to-work-with-edx"
,
]
for
rel
in
all_releases
:
response
=
self
.
client
.
get
(
rel
)
self
.
assertNotContains
(
response
,
"PAGE NOT FOUND"
,
status_code
=
200
)
# should work with caps
response
=
self
.
client
.
get
(
"/press/STANFORD-to-work-with-edx"
)
self
.
assertContains
(
response
,
"Stanford"
,
status_code
=
200
)
# negative test
response
=
self
.
client
.
get
(
"/press/this-shouldnt-work"
)
self
.
assertEqual
(
response
.
status_code
,
404
)
# can someone do something fishy? no.
response
=
self
.
client
.
get
(
"/press/../homework.html"
)
self
.
assertEqual
(
response
.
status_code
,
404
)
# "." in is ascii 2E
response
=
self
.
client
.
get
(
"/press/
%2
E
%2
E/homework.html"
)
self
.
assertEqual
(
response
.
status_code
,
404
)
lms/djangoapps/static_template_view/views.py
View file @
3f1d97b0
...
...
@@ -4,9 +4,10 @@
# security reasons.
from
mitxmako.shortcuts
import
render_to_response
,
render_to_string
from
mako.exceptions
import
TopLevelLookupException
from
django.shortcuts
import
redirect
from
django.conf
import
settings
from
django.http
import
HttpResponseNotFound
,
HttpResponseServerError
from
django.http
import
HttpResponseNotFound
,
HttpResponseServerError
,
Http404
from
django_future.csrf
import
ensure_csrf_cookie
from
util.cache
import
cache_if_anonymous
...
...
@@ -40,6 +41,25 @@ def render(request, template):
return
render_to_response
(
'static_templates/'
+
template
,
{})
@ensure_csrf_cookie
@cache_if_anonymous
def
render_press_release
(
request
,
slug
):
"""
Render a press release given a slug. Similar to the "render" function above,
but takes a slug and does a basic conversion to convert it to a template file.
a) all lower case,
b) convert dashes to underscores, and
c) appending ".html"
"""
template
=
slug
.
lower
()
.
replace
(
'-'
,
'_'
)
+
".html"
try
:
resp
=
render_to_response
(
'static_templates/press_releases/'
+
template
,
{})
except
TopLevelLookupException
:
raise
Http404
else
:
return
resp
def
render_404
(
request
):
return
HttpResponseNotFound
(
render_to_string
(
'static_templates/404.html'
,
{}))
...
...
lms/templates/feed.rss
View file @
3f1d97b0
...
...
@@ -11,7 +11,7 @@
<id>
tag:www.edx.org,2012:Post/17
</id>
<published>
2012-12-19T14:00:00-07:00
</published>
<updated>
2012-12-19T14:00:00-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/stanford-to-work-with-edx'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['stanford-to-work-with-edx']
)}"
/>
<title>
Stanford University to Collaborate with edX on Development of Non-Profit Open Source edX Platform
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/stanford-university-m.png')}
"
/
>
<
p
><
/p
>
</content>
...
...
@@ -20,7 +20,7 @@
<id>
tag:www.edx.org,2013:Post/16
</id>
<published>
2013-03-15T10:00:00-07:00
</published>
<updated>
2013-03-15T10:00:00-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/xblock-announcement'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['xblock-announcement']
)}"
/>
<title>
edX releases XBlock SDK, first step toward open source vision
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/edx-logo_240x180.png')}
"
/
>
<
p
><
/p
>
</content>
...
...
@@ -38,7 +38,7 @@
<!-- <id>tag:www.edx.org,2013:Post/14</id> -->
<!-- <published>2013-02-20T10:00:00-07:00</published> -->
<!-- <updated>2013-02-20T10:00:00-07:00</updated> -->
<!-- <link type="text/html" rel="alternate" href="${reverse('press
/edx-expands-internationally'
)}"/> -->
<!-- <link type="text/html" rel="alternate" href="${reverse('press
_release', args=['edx-expands-internationally']
)}"/> -->
<!-- <title>edX Expands Internationally and Doubles its Institutional Membership with the Addition of Six New Schools</title> -->
<!-- <content type="html"><img src="${static.url('images/press/releases/edx-logo_240x180.png')}" /> -->
<!-- <p></p></content> -->
...
...
@@ -47,7 +47,7 @@
<id>
tag:www.edx.org,2013:Post/14
</id>
<published>
2013-01-30T10:00:00-07:00
</published>
<updated>
2013-01-30T10:00:00-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/eric-lander-secret-of-life'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['eric-lander-secret-of-life']
)}"
/>
<title>
New biology course from human genome pioneer Eric Lander
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/eric-lander_240x180.jpg')}
"
/
>
<
p
><
/p
>
</content>
...
...
@@ -56,7 +56,7 @@
<id>
tag:www.edx.org,2013:Post/12
</id>
<published>
2013-01-22T10:00:00-07:00
</published>
<updated>
2013-01-22T10:00:00-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/lewin-course-announcement'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['lewin-course-announcement']
)}"
/>
<title>
New course from legendary MIT physics professor Walter Lewin
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/dr-lewin-316_240x180.jpg')}
"
/
>
<
p
><
/p
>
</content>
...
...
@@ -65,7 +65,7 @@
<id>
tag:www.edx.org,2013:Post/11
</id>
<published>
2013-01-29T10:00:00-07:00
</published>
<updated>
2013-01-29T10:00:00-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/bostonx-announcement'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['bostonx-announcement']
)}"
/>
<title>
City of Boston and edX partner to establish BostonX to improve educational access for residents
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/edx-logo_240x180.png')}
"
/
>
<
p
><
/p
>
</content>
...
...
@@ -74,7 +74,7 @@
<!-- <id>tag:www.edx.org,2012:Post/10</id> -->
<!-- <published>2012-12-19T14:00:00-07:00</published> -->
<!-- <updated>2012-12-19T14:00:00-07:00</updated> -->
<!-- <link type="text/html" rel="alternate" href="${reverse('press
/spring-courses'
)}"/> -->
<!-- <link type="text/html" rel="alternate" href="${reverse('press
_release', args=['spring-courses']
)}"/> -->
<!-- <title>edX announces first wave of new courses for Spring 2013</title> -->
<!-- <content type="html"><img src="${static.url('images/press/releases/edx-logo_240x180.png')}" /> -->
<!-- <p></p></content> -->
...
...
@@ -83,7 +83,7 @@
<id>
tag:www.edx.org,2012:Post/9
</id>
<published>
2012-12-10T14:00:00-07:00
</published>
<updated>
2012-12-10T14:00:00-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/georgetown-joins-edx'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['georgetown-joins-edx']
)}"
/>
<title>
Georgetown University joins edX
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/georgetown-seal_240x180.png')}
"
/
>
<
p
>
Sixth institution to join global movement in year one
<
/p
>
</content>
...
...
@@ -92,7 +92,7 @@
<id>
tag:www.edx.org,2012:Post/8
</id>
<published>
2012-12-04T14:00:00-07:00
</published>
<updated>
2012-12-04T14:00:00-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/wellesley-college-joins-edx'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['wellesley-college-joins-edx']
)}"
/>
<title>
Wellesley College joins edX
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/wellesley-seal_240x180.png')}
"
/
>
<
p
>
First liberal arts college to join edX
<
/p
>
</content>
...
...
@@ -101,7 +101,7 @@
<id>
tag:www.edx.org,2012:Post/7
</id>
<published>
2012-11-12T14:00:00-07:00
</published>
<updated>
2012-11-12T14:00:00-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/gates-foundation-announcement'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['gates-foundation-announcement']
)}"
/>
<title>
edX and Massachusetts Community Colleges join in Gates-Funded educational initiative
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/mass-seal_240x180.png')}
"
/
>
<
p
><
/p
>
</content>
...
...
@@ -110,7 +110,7 @@
<id>
tag:www.edx.org,2012:Post/6
</id>
<published>
2012-10-15T14:00:00-07:00
</published>
<updated>
2012-10-14T14:00:00-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/ut-joins-edx'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['ut-joins-edx']
)}"
/>
<title>
The University of Texas System joins edX
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/utsys-seal_240x180.png')}
"
/
>
<
p
>
Nine universities and six health institutions
<
/p
>
</content>
...
...
@@ -119,7 +119,7 @@
<!-- <id>tag:www.edx.org,2012:Post/5</id> -->
<!-- <published>2012-09-25T14:00:00-07:00</published> -->
<!-- <updated>2012-09-25T14:00:00-07:00</updated> -->
<!-- <link type="text/html" rel="alternate" href="${reverse('press
/elsevier-collaborates-with-edx'
)}"/> -->
<!-- <link type="text/html" rel="alternate" href="${reverse('press
_release', args=['elsevier-collaborates-with-edx']
)}"/> -->
<!-- <title>Elsevier collaborates with edX</title> -->
<!-- <content type="html"><img src="${static.url('images/press/releases/foundations-of-analog_240x180.jpg')}" /> -->
<!-- <p>Free course textbook made available to edX students</p></content> -->
...
...
@@ -128,7 +128,7 @@
<id>
tag:www.edx.org,2012:Post/4
</id>
<published>
2012-09-06T14:00:00-07:00
</published>
<updated>
2012-09-06T14:00:00-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/edX-announces-proctored-exam-testing'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['edX-announces-proctored-exam-testing']
)}"
/>
<title>
edX to offer learners option of taking proctored final exam
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/diploma_240x180.jpg')}
"
/
>
</content>
</entry>
...
...
@@ -136,7 +136,7 @@
<id>
tag:www.edx.org,2012:Post/3
</id>
<published>
2012-07-16T14:08:12-07:00
</published>
<updated>
2012-07-16T14:08:12-07:00
</updated>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
/uc-berkeley-joins-edx'
)}"
/>
<link
type=
"text/html"
rel=
"alternate"
href=
"${reverse('press
_release', args=['uc-berkeley-joins-edx']
)}"
/>
<title>
UC Berkeley joins edX
</title>
<content
type=
"html"
>
<
img src=
"
${static.url('images/press/releases/edx-logo_240x180.png')}
"
/
>
<
p
>
edX broadens course offerings
<
/p
>
</content>
...
...
lms/templates/static_templates/press_releases/
C
engage_to_provide_book_content.html
→
lms/templates/static_templates/press_releases/
c
engage_to_provide_book_content.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/ed
X
_announces_proctored_exam_testing.html
→
lms/templates/static_templates/press_releases/ed
x
_announces_proctored_exam_testing.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/
Elsevier_collaborates_with_edX
.html
→
lms/templates/static_templates/press_releases/
elsevier_collaborates_with_edx
.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/
Gates_F
oundation_announcement.html
→
lms/templates/static_templates/press_releases/
gates_f
oundation_announcement.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/
Georgetown_joins_edX
.html
→
lms/templates/static_templates/press_releases/
georgetown_joins_edx
.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/
L
ewin_course_announcement.html
→
lms/templates/static_templates/press_releases/
l
ewin_course_announcement.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/
MIT_and_Harvard_announce_edX
.html
→
lms/templates/static_templates/press_releases/
mit_and_harvard_announce_edx
.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/
Spring_2013_course_announcement
s.html
→
lms/templates/static_templates/press_releases/
spring_course
s.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/stanford_
announcement
.html
→
lms/templates/static_templates/press_releases/stanford_
to_work_with_edx
.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/
UC_Berkeley_joins_edX
.html
→
lms/templates/static_templates/press_releases/
uc_berkeley_joins_edx
.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/
UT_joins_edX
.html
→
lms/templates/static_templates/press_releases/
ut_joins_edx
.html
View file @
3f1d97b0
File moved
lms/templates/static_templates/press_releases/
Wellesley_College_joins_edX
.html
→
lms/templates/static_templates/press_releases/
wellesley_college_joins_edx
.html
View file @
3f1d97b0
File moved
lms/urls.py
View file @
3f1d97b0
...
...
@@ -117,51 +117,9 @@ urlpatterns = ('',
{
'template'
:
'honor.html'
},
name
=
"honor"
),
#Press releases
url
(
r'^press/mit-and-harvard-announce-edx$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/MIT_and_Harvard_announce_edX.html'
},
name
=
"press/mit-and-harvard-announce-edx"
),
url
(
r'^press/uc-berkeley-joins-edx$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/UC_Berkeley_joins_edX.html'
},
name
=
"press/uc-berkeley-joins-edx"
),
url
(
r'^press/edX-announces-proctored-exam-testing$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/edX_announces_proctored_exam_testing.html'
},
name
=
"press/edX-announces-proctored-exam-testing"
),
url
(
r'^press/elsevier-collaborates-with-edx$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/Elsevier_collaborates_with_edX.html'
},
name
=
"press/elsevier-collaborates-with-edx"
),
url
(
r'^press/ut-joins-edx$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/UT_joins_edX.html'
},
name
=
"press/ut-joins-edx"
),
url
(
r'^press/cengage-to-provide-book-content$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/Cengage_to_provide_book_content.html'
},
name
=
"press/cengage-to-provide-book-content"
),
url
(
r'^press/gates-foundation-announcement$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/Gates_Foundation_announcement.html'
},
name
=
"press/gates-foundation-announcement"
),
url
(
r'^press/wellesley-college-joins-edx$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/Wellesley_College_joins_edX.html'
},
name
=
"press/wellesley-college-joins-edx"
),
url
(
r'^press/georgetown-joins-edx$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/Georgetown_joins_edX.html'
},
name
=
"press/georgetown-joins-edx"
),
url
(
r'^press/spring-courses$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/Spring_2013_course_announcements.html'
},
name
=
"press/spring-courses"
),
url
(
r'^press/lewin-course-announcement$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/Lewin_course_announcement.html'
},
name
=
"press/lewin-course-announcement"
),
url
(
r'^press/bostonx-announcement$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/bostonx_announcement.html'
},
name
=
"press/bostonx-announcement"
),
url
(
r'^press/eric-lander-secret-of-life$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/eric_lander_secret_of_life.html'
},
name
=
"press/eric-lander-secret-of-life"
),
url
(
r'^press/edx-expands-internationally$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/edx_expands_internationally.html'
},
name
=
"press/edx-expands-internationally"
),
url
(
r'^press/xblock_announcement$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/xblock_announcement.html'
},
name
=
"press/xblock-announcement"
),
url
(
r'^press/stanford-to-work-with-edx$'
,
'static_template_view.views.render'
,
{
'template'
:
'press_releases/stanford_announcement.html'
},
name
=
"press/stanford-to-work-with-edx"
),
# Should this always update to point to the latest press release?
(
r'^pressrelease$'
,
'django.views.generic.simple.redirect_to'
,
{
'url'
:
'/press/xblock-announcement'
}),
url
(
r'^press/([_a-zA-Z0-9-]+)$'
,
'static_template_view.views.render_press_release'
,
name
=
'press_release'
),
# Favicon
(
r'^favicon\.ico$'
,
'django.views.generic.simple.redirect_to'
,
{
'url'
:
'/static/images/favicon.ico'
}),
# TODO: These urls no longer work. They need to be updated before they are re-enabled
...
...
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