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
b21ea5a8
Commit
b21ea5a8
authored
Jul 20, 2012
by
Piotr Mitros
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added import/export scripts
parent
0fb8a7b1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
127 additions
and
0 deletions
+127
-0
common/djangoapps/student/management/commands/6002exportusers.py
+61
-0
common/djangoapps/student/management/commands/6002importusers.py
+66
-0
No files found.
common/djangoapps/student/management/commands/6002exportusers.py
0 → 100644
View file @
b21ea5a8
##
## One-off script to export 6.002x users into the edX framework
##
## Could be modified to be general by:
## * Changing user_keys and up_keys to handle dates more cleanly
## * Providing a generic set of tables, rather than just users and user profiles
## * Handling certificates and grades
## * Handling merge/forks of UserProfile.meta
import
datetime
import
json
import
os.path
from
lxml
import
etree
from
django.core.management.base
import
BaseCommand
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
student.models
import
UserProfile
import
mitxmako.middleware
as
middleware
middleware
.
MakoMiddleware
()
class
Command
(
BaseCommand
):
help
=
\
'''Exports all users and user profiles.
Caveat: Should be looked over before any run
for schema changes.
Current version grabs user_keys from
django.contrib.auth.models.User and up_keys
from student.userprofile. '''
def
handle
(
self
,
*
args
,
**
options
):
users
=
list
(
User
.
objects
.
all
())
user_profiles
=
list
(
UserProfile
.
objects
.
all
())
user_profile_dict
=
dict
([(
up
.
user_id
,
up
)
for
up
in
user_profiles
])
user_tuples
=
[(
user_profile_dict
[
u
.
id
],
u
)
for
u
in
users
if
u
.
id
in
user_profile_dict
]
user_keys
=
[
'id'
,
'username'
,
'email'
,
'password'
,
'is_staff'
,
'is_active'
,
'is_superuser'
,
'last_login'
,
'date_joined'
,
'password'
]
up_keys
=
[
'language'
,
'location'
,
'meta'
,
'name'
,
'id'
,
'user_id'
]
def
extract_dict
(
keys
,
object
):
d
=
{}
for
key
in
keys
:
item
=
object
.
__getattribute__
(
key
)
if
type
(
item
)
==
datetime
.
datetime
:
item
=
item
.
isoformat
()
d
[
key
]
=
item
return
d
extracted
=
[{
'up'
:
extract_dict
(
up_keys
,
t
[
0
]),
'u'
:
extract_dict
(
user_keys
,
t
[
1
])}
for
t
in
user_tuples
]
fp
=
open
(
'transfer_users.txt'
,
'w'
)
json
.
dump
(
extracted
,
fp
)
fp
.
close
()
common/djangoapps/student/management/commands/6002importusers.py
0 → 100644
View file @
b21ea5a8
##
## One-off script to import 6.002x users into the edX framework
## See export for more info
import
datetime
import
json
import
dateutil.parser
import
os.path
from
lxml
import
etree
from
django.core.management.base
import
BaseCommand
from
django.conf
import
settings
from
django.contrib.auth.models
import
User
from
student.models
import
UserProfile
import
mitxmako.middleware
as
middleware
middleware
.
MakoMiddleware
()
def
import_user
(
u
):
user_info
=
u
[
'u'
]
up_info
=
u
[
'up'
]
# HACK to handle dates
user_info
[
'last_login'
]
=
dateutil
.
parser
.
parse
(
user_info
[
'last_login'
])
user_info
[
'date_joined'
]
=
dateutil
.
parser
.
parse
(
user_info
[
'date_joined'
])
user_keys
=
[
'id'
,
'username'
,
'email'
,
'password'
,
'is_staff'
,
'is_active'
,
'is_superuser'
,
'last_login'
,
'date_joined'
,
'password'
]
up_keys
=
[
'language'
,
'location'
,
'meta'
,
'name'
,
'id'
,
'user_id'
]
u
=
User
()
for
key
in
user_keys
:
u
.
__setattr__
(
key
,
user_info
[
key
])
u
.
save
()
up
=
UserProfile
()
up
.
user
=
u
for
key
in
up_keys
:
up
.
__setattr__
(
key
,
up_info
[
key
])
up
.
save
()
class
Command
(
BaseCommand
):
help
=
\
'''Exports all users and user profiles.
Caveat: Should be looked over before any run
for schema changes.
Current version grabs user_keys from
django.contrib.auth.models.User and up_keys
from student.userprofile. '''
def
handle
(
self
,
*
args
,
**
options
):
extracted
=
json
.
load
(
open
(
'transfer_users.txt'
))
n
=
0
for
u
in
extracted
:
import_user
(
u
)
if
n
%
100
==
0
:
print
n
n
=
n
+
1
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