导入用户

在搭建edX的时候,可能面临一个这样的需求:批量导入学生作为用户。
edX默认的注册方式是邮件注册。
而校方的数据库中邮箱很可能是无效的,所以我们使用学号作为用户名。密码也默认设为学号。

在此给出一个可行的解决方案。

大体思路

  • 从校方数据库中导出用户文件(csv格式)
  • 写脚本从csv文件中取得所需的字段(诸如学号,姓名)
  • 进入edx shell环境,执行写好的用户导入脚本

实施细节

我们假设从数据库导出的文件student.csv 如下

姓名 , 学号 , 专业 , 班级
张三 , 201011, 热能动力工程,动力1007班
李四 , 201012, 热能动力工程,动力1008班
王五 , 201013, 热能动力工程,动力1009班
...

写好脚本

cd /tmp
mkdir userImportTooldir
cd userImportToolDir

将从数据库导出的student.csv上传到userImportToolDir目录里,

在当前目录新建user_import_tool.py内容为

#coding=utf-8
import unicodecsv
from django.contrib.auth.models import User
from student.models import UserProfile, Registration
from django.core.exceptions import ObjectDoesNotExist

filename = ‘./student.csv‘
f = open(filename)
r=unicodecsv.reader(f, encoding=‘utf-8‘)

def create_student_user(username,password,email,name):
        ‘‘‘
        - username 用户在edx中的用户名,使用student.csv中的学号
        - password 用户在edx中的初始密码,使用student.csv中的学号
        - email 用户在edx中的邮箱(必填),使用username+"@example.com" ,登录后可修改
        - name: 用户的实际名字
        ‘‘‘
        user = User(username=username,
                email=email,
                is_active=True)
        user.set_password(password)
        registration = Registration()
        user.save()
        registration.register(user)
        profile = UserProfile(user=user)
        profile.name = name
        profile.save()
i = 0
for row in r :
        if i == 0:
            continue   #csv的第一行是头部,跳过
        #print "name:%s,student_id:%s"%(row[0],row[1])
        username = row[1] #student_id
        password = row[1]
        email = username+"@example.com"
        name = row[0]
        try:
            user_live = User.objects.get(username=username)
        except ObjectDoesNotExist:
            create_student_user(username,password,email,name)
       i=i+1
print "ok~"

测试显示,8000名学生的话,大约需要导入十几分钟

安装依赖

sudo -H -u edxapp bash
source /edx/app/edxapp/edxapp_env
pip install unicodecsv

开始导入

cd /tmp/userImportTool
sudo -u www-data /edx/bin/python.edxapp /edx/app/edxapp/edx-platform/manage.py lms --settings aws shell   #进入edX shell环境
import  sys
sys.path.append("./")
import  user_import_tool

开始使用

在/login中使用email和password登录即可。

对于不想使用这种登录方式的,可以自己来写用户认证,诸如使用username和password登录之类的

后记

文中我们创建用户使用的是python代码。

此外创建用户edX也可以用shell指令,对于写shell脚本的同学可能有用

sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings aws create_user -e [email protected]
sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings aws changepassword xxxxxx
时间: 2024-10-31 19:59:47

导入用户的相关文章

Office 365 系列之六:通过管理中心批量导入用户

本章节跟大家介绍通过Office 365管理中心批量导入用户并分配许可. 1. 登陆Office 365管理中心,切换到"活动用户"页面,点击"批量添加" 2. 点击"下载空白CSV文件"或"下载CSV文件示例" 3. 用Excel打开下载后的空白CSV文件, 如图: 4. 填写用户信息后并保存(实际生产环境中建议先使用几个账号测试成功后再大批量导入) 5. 用记事本打开刚才保存的文件,如图 6. 点击"文件&quo

利用Excel导入用户列表(POI)

1.jsp页面的代码(和上一个导出的实例是同一个) <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>用户管理</title> <%@incl

AD帐户操作C#示例代码(一)——导入用户信息

最近写了一个AD帐户导入的小工具(为啥写作“帐”户呢?),跟大家分享下相关代码,欢迎各位高手指教! 首先,我准备一个这样的Excel文件作为导入模版,并添加了一些测试数据. 然后,我打开Visual Studio 2012,新建一个Windows窗体应用程序.在主窗体界面,我放了一些Label.TextBox.Button控件,还有一个ProgressBar. 开始写代码.首先写从Excel里读取数据的方法. private static async Task<DataTable> GetTa

【SSH项目实战】国税协同平台-7.POI导入用户列表文件

上次我们使用POI技术完成了用户列表的打印工作,下面我们来完成用户列表Excel文件的导入. 我们要导入这个Excel文件到我们的系统中: 确切的说,是我们要将excel中的数据导入到数据库中保存起来 我们的操作过程: 1.获取excel文件 2.导入 2.1.读取工作簿 2.2.读取工作表 2.3.读取行 2.4.读取单元格 2.5.保存用户 下面我们来进行具体的实现工作 我们在用户列表的jsp页面中可以看到还有一个"导出"的按钮, <input type="butt

中科院分词ICTCLAS导入用户词典后分词结果一样?

1 package ICTCLAS.I3S.Test; 2 3 import java.io.UnsupportedEncodingException; 4 5 import ICTCLAS.I3S.AC.ICTCLAS50; 6 7 public class Test_UserDic { 8 9 /** 10 * @param args 11 * @throws UnsupportedEncodingException 12 */ 13 public static void main(Stri

H3 BPM如何批量导入用户和组织?

问题:如何批量导入用户和组织? 解答: 进入后台管理,点开组织机构下面的同步设置. 如果没有现成的AD用户,就做个EXCEL表导入数据到数据库 Excel导入组织架构的模板和关键代码 前台代码: <div> <asp:FileUpload ID="FileUpload7" runat="server" Width="200px" /><div> 组织信息导入 <asp:TextBox runat=&quo

Office 365系列之十一:使用Windows PowerShell 批量导入用户

在本系列中的第九部分我们已经成功的通过Windows PowerShell管理O365平台了,为本次批量导入用户提供了铺垫.所以对于O365平台管理PS模块的安装今天就不说的那么详细了,具体配置可以参考第九部分内容. 1.1  Install Microsoft Online Services Sign-In Assistant for IT Professionals RTW http://www.microsoft.com/en-us/download/confirmation.aspx?i

怎样批量导入用户以及初始化?

1. 登录TurboMail管理员后台,依次选择系统设置--系统初始化--用户初始化,下载文件users_ch.csv: 2. 按照users_ch.csv格式将用户据信息填入: 密码:统一初始化所有用户密码,建议为6-8位英文字母与数字组合 昵称:用户昵称 组织编码:自定义组织编码,不同组织编码不能相同 部门编码:自定义部门编码,不同部门编码不能相同 组织名称:自定义组织名称,不同组织名称不能相同 部门名称:自定义部门名称,不同部门名称不能相同 最大空间.最多邮件数.最大分配网络硬盘:按实际分

phpBB3导入用户的Python脚本

关联的数据表 在phpBB3中导入用户时, 需要处理的有两张表, 一个是 users, 一个是 user_group. 如果是新安装的论坛, 在每次导入之前, 用以下语句初始化: DELETE FROM phpbb_users WHERE user_id > 47; alter table phpbb_users auto_increment = 48; DELETE FROM phpbb_user_group where user_id > 48; DELETE FROM phpbb_use

在Exchange 2010中批量导入用户

在某一个项目中,客户需要将2000多个联系人导入到Exchange 2010中,作为外部邮件联系人对MAPI连接的用户可见,而且要划分到特定的地址簿中去.客户提供excel列表以便导入使用. 由于导入操作需要使用CSV格式文件,所以要预先将excel修改.打开excel,然后将文件另存为CSV后缀的即可.需要注意的是,另存为只对单个工作区起作用. 导入操作对CSV文件的字段要求,最基本的需要4个字段:displayName,mail,DN,objectClass. displayName:显示名