batch_account_create script

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
說明:
    1. 兩個用戶郵箱重複,則加入問題數組,提示信息
    2. 郵箱需要驗證, 密碼若爲空,則默認給123456
    3. 前三個屬性若爲空,則加入問題數組,提示信息
"""
# start  django 項目中 單獨執行腳本必須添加的
import json

from django.core.wsgi import get_wsgi_application

os.environ['DJANGO_SETTINGS_MODULE'] = 'web.settings_local'
application = get_wsgi_application()
# end
import re
from pyexcel_xls import get_data
from accounts_create import account_create
import os


def read_xls_file(path):
    """
    讀取excel中數據
    :param path:
    :return:
    """
    result = []
    xls_data = get_data(path)
    for sheet_n in xls_data.keys():
        result = xls_data[sheet_n]
    return result


def verif_email(origin):
    """
    驗證郵箱
    :param origin:
    :return:
    """
    return True if re.match(
        "^.+\\@("
        "\\[?)[a-zA-Z0-9\\-\\_\\.]"
        "+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$",
        origin) else False


def format_data(path):
    """
    格式化數據
    :param path:
    :return:
    """
    result = read_xls_file(path=path)
    format_datas = []
    fine_datas = []
    question_datas = []
    temp_datas = {}
    for i in xrange(1, len(result)):
        if result[i][0] and result[i][1] and result[i][2]:
            if verif_email(result[i][2]):
                if len(result[i]) == 4:
                    format_datas.append({
                        "username": result[i][0],
                        "profile_name": result[i][1],
                        "email": result[i][2],
                        "password": result[i][3]
                    })
                else:
                    format_datas.append({
                        "username": result[i][0],
                        "profile_name": result[i][1],
                        "email": result[i][2],
                        "password": '123456'
                    })
            else:
                print "第{0}行郵箱格式錯誤!".format(i + 1)
                question_datas.append(result[i])
        else:
            print "第{0}行爲無效用戶!".format(i + 1)
            question_datas.append(result[i])

    for item in format_datas:
        temp_datas[item.get("email")] = filter(
            lambda x: x.get("email") == item.get("email"),
            format_datas
        )
    for k, v in temp_datas.iteritems():
        if len(v) != 1:
            print "{0} 郵箱重複,爲無效用戶!".format(k)
            question_datas.append(v)
        else:
            fine_datas.append(v)

    return question_datas, fine_datas


def create_user(path):
    """
    批量創建用戶
    :param path:
    :return:
    """
    question_datas, fine_datas = format_data(path=path)
    for i in fine_datas:
        account_create(
            username=i[0].get("username"),
            email=i[0].get("email"),
            profile_name=i[0].get("profile_name"),
            password=i[0].get("password")
        )


if __name__ == "__main__":
    path = '20172.xlsx'
    create_user(path=path)

python manage.py lms shell --settings=aws
from openedx.core.djangoapps.ccnu.scripts import batch_account_create


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章