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
21510a1e
Commit
21510a1e
authored
Aug 20, 2012
by
kimth
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Textbook TOC from S3
parent
01fafd34
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
7 deletions
+35
-7
common/lib/xmodule/xmodule/course_module.py
+34
-4
lms/djangoapps/staticbook/views.py
+1
-3
No files found.
common/lib/xmodule/xmodule/course_module.py
View file @
21510a1e
from
fs.errors
import
ResourceNotFoundError
import
time
import
logging
import
requests
from
lxml
import
etree
from
xmodule.util.decorators
import
lazyproperty
...
...
@@ -15,19 +16,48 @@ class CourseDescriptor(SequenceDescriptor):
module_class
=
SequenceModule
class
Textbook
:
def
__init__
(
self
,
title
,
table_of_contents
_url
):
def
__init__
(
self
,
title
,
book
_url
):
self
.
title
=
title
self
.
table_of_contents_url
=
table_of_contents_url
self
.
book_url
=
book_url
self
.
table_of_contents
=
self
.
_get_toc_from_s3
()
@classmethod
def
from_xml_object
(
cls
,
xml_object
):
return
cls
(
xml_object
.
get
(
'title'
),
xml_object
.
get
(
'
table_of_contents
_url'
))
return
cls
(
xml_object
.
get
(
'title'
),
xml_object
.
get
(
'
book
_url'
))
@property
def
table_of_contents
(
self
):
raw_table_of_contents
=
open
(
self
.
table_of_contents_url
,
'r'
)
# TODO: This will need to come from S3
'''
raw_table_of_contents = open(self.book_url, 'r') # TODO: This will need to come from S3
table_of_contents = etree.parse(raw_table_of_contents).getroot()
return table_of_contents
'''
return
self
.
table_of_contents
def
_get_toc_from_s3
(
self
):
'''
Returns XML tree representation of the table of contents
'''
toc_url
=
self
.
book_url
+
'toc.xml'
# Get the table of contents from S3
log
.
info
(
"Retrieving textbook table of contents from
%
s"
%
toc_url
)
try
:
r
=
requests
.
get
(
toc_url
)
except
Exception
as
err
:
msg
=
'Error
%
s: Unable to retrieve textbook table of contents at
%
s'
%
(
err
,
toc_url
)
log
.
error
(
msg
)
raise
Exception
(
msg
)
# TOC is XML. Parse it
try
:
table_of_contents
=
etree
.
fromstring
(
r
.
text
)
except
Exception
as
err
:
msg
=
'Error
%
s: Unable to parse XML for textbook table of contents at
%
s'
%
(
err
,
toc_url
)
log
.
error
(
msg
)
raise
Exception
(
msg
)
return
table_of_contents
def
__init__
(
self
,
system
,
definition
=
None
,
**
kwargs
):
...
...
lms/djangoapps/staticbook/views.py
View file @
21510a1e
...
...
@@ -14,10 +14,8 @@ def index(request, course_id, book_index, page=0):
textbook
=
course
.
textbooks
[
int
(
book_index
)]
table_of_contents
=
textbook
.
table_of_contents
book_url
=
settings
.
BOOK_URL
return
render_to_response
(
'staticbook.html'
,
{
'page'
:
int
(
page
),
'course'
:
course
,
'book_url'
:
book_url
,
{
'page'
:
int
(
page
),
'course'
:
course
,
'book_url'
:
textbook
.
book_url
,
'table_of_contents'
:
table_of_contents
,
'staff_access'
:
staff_access
})
...
...
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