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
d1a82f2a
Commit
d1a82f2a
authored
Sep 20, 2013
by
Don Mitchell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import/export static content properties
Even though xml based courses will ignore.
parent
7275f852
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
29 additions
and
5 deletions
+29
-5
common/lib/xmodule/xmodule/contentstore/mongo.py
+9
-1
common/lib/xmodule/xmodule/modulestore/xml_exporter.py
+6
-2
common/lib/xmodule/xmodule/modulestore/xml_importer.py
+14
-2
No files found.
common/lib/xmodule/xmodule/contentstore/mongo.py
View file @
d1a82f2a
...
...
@@ -12,6 +12,7 @@ from .content import StaticContent, ContentStore, StaticContentStream
from
xmodule.exceptions
import
NotFoundError
from
fs.osfs
import
OSFS
import
os
import
json
class
MongoContentStore
(
ContentStore
):
...
...
@@ -103,12 +104,19 @@ class MongoContentStore(ContentStore):
with
disk_fs
.
open
(
content
.
name
,
'wb'
)
as
asset_file
:
asset_file
.
write
(
content
.
data
)
def
export_all_for_course
(
self
,
course_location
,
output_directory
):
def
export_all_for_course
(
self
,
course_location
,
output_directory
,
policy_file
):
policy
=
{}
assets
=
self
.
get_all_content_for_course
(
course_location
)
for
asset
in
assets
:
asset_location
=
Location
(
asset
[
'_id'
])
self
.
export
(
asset_location
,
output_directory
)
for
attr
,
value
in
asset
.
iteritems
():
if
attr
not
in
[
'_id'
,
'md5'
,
'uploadDate'
,
'length'
,
'chunkSize'
]:
policy
.
setdefault
(
asset_location
.
url
(),
{})[
attr
]
=
value
with
open
(
policy_file
,
'w'
)
as
f
:
json
.
dump
(
policy
,
f
)
def
get_all_content_thumbnails_for_course
(
self
,
location
):
return
self
.
_get_all_content_for_course
(
location
,
get_thumbnails
=
True
)
...
...
common/lib/xmodule/xmodule/modulestore/xml_exporter.py
View file @
d1a82f2a
...
...
@@ -55,8 +55,13 @@ def export_to_xml(modulestore, contentstore, course_location, root_dir, course_d
with
export_fs
.
open
(
'course.xml'
,
'w'
)
as
course_xml
:
course_xml
.
write
(
xml
)
policies_dir
=
export_fs
.
makeopendir
(
'policies'
)
# export the static assets
contentstore
.
export_all_for_course
(
course_location
,
root_dir
+
'/'
+
course_dir
+
'/static/'
)
contentstore
.
export_all_for_course
(
course_location
,
root_dir
+
'/'
+
course_dir
+
'/static/'
,
root_dir
+
'/'
+
course_dir
+
'/policies/assets.json'
,
)
# export the static tabs
export_extra_content
(
export_fs
,
modulestore
,
course_location
,
'static_tab'
,
'tabs'
,
'.html'
)
...
...
@@ -71,7 +76,6 @@ def export_to_xml(modulestore, contentstore, course_location, root_dir, course_d
export_extra_content
(
export_fs
,
modulestore
,
course_location
,
'about'
,
'about'
,
'.html'
)
# export the grading policy
policies_dir
=
export_fs
.
makeopendir
(
'policies'
)
course_run_policy_dir
=
policies_dir
.
makeopendir
(
course
.
location
.
name
)
with
course_run_policy_dir
.
open
(
'grading_policy.json'
,
'w'
)
as
grading_policy
:
grading_policy
.
write
(
dumps
(
course
.
grading_policy
,
cls
=
EdxJSONEncoder
))
...
...
common/lib/xmodule/xmodule/modulestore/xml_importer.py
View file @
d1a82f2a
...
...
@@ -2,6 +2,7 @@ import logging
import
os
import
mimetypes
from
path
import
path
import
json
from
xblock.fields
import
Scope
...
...
@@ -22,6 +23,11 @@ def import_static_content(modules, course_loc, course_data_path, static_content_
# now import all static assets
static_dir
=
course_data_path
/
subpath
try
:
with
open
(
course_data_path
/
'policies/assets.json'
)
as
f
:
policy
=
json
.
load
(
f
)
except
(
IOError
,
ValueError
)
as
err
:
policy
=
{}
verbose
=
True
...
...
@@ -46,10 +52,16 @@ def import_static_content(modules, course_loc, course_data_path, static_content_
if
fullname_with_subpath
.
startswith
(
'/'
):
fullname_with_subpath
=
fullname_with_subpath
[
1
:]
content_loc
=
StaticContent
.
compute_location
(
target_location_namespace
.
org
,
target_location_namespace
.
course
,
fullname_with_subpath
)
mime_type
=
mimetypes
.
guess_type
(
filename
)[
0
]
content
=
StaticContent
(
content_loc
,
filename
,
mime_type
,
data
,
import_path
=
fullname_with_subpath
)
policy_ele
=
policy
.
get
(
content_loc
.
url
(),
{})
displayname
=
policy_ele
.
get
(
'displayname'
,
filename
)
locked
=
policy_ele
.
get
(
'locked'
,
False
)
mime_type
=
policy_ele
.
get
(
'contentType'
,
mimetypes
.
guess_type
(
filename
)[
0
])
content
=
StaticContent
(
content_loc
,
displayname
,
mime_type
,
data
,
import_path
=
fullname_with_subpath
,
locked
=
locked
)
# first let's save a thumbnail so we can get back a thumbnail location
(
thumbnail_content
,
thumbnail_location
)
=
static_content_store
.
generate_thumbnail
(
content
)
...
...
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