def modify_paper_stulist(request):
    postjson = jh.post2json(request)
    paperid = postjson['paperid']
    action = postjson['action']
    ph = PaperHelper()
    ret = {'code': 404, 'info': 'unknown action' + action}
    # TODO(LOW): verify paperid whether existing
    ###
    print(paperid)
    paperdb = Paper.objects.get(pid=paperid)
    if (action == 'addstu'):
        stulist = postjson['stulist']
        stuarray = stulist.split(';')
        original_stulist = json.loads(paperdb.stulist)
        count = 0
        for var in stuarray:
            # TODO(LOW): verify var(stuid) whether existing
            #
            result = UserList.objects.filter(username=var)
            if not result.exists():
                continue

            if (var == ''):
                continue
            ph.AddStu(original_stulist, var)
            count += 1
        paperdb.stulist = json.dumps(original_stulist)
        paperdb.save()
        ret = {'code': 200, 'info': 'ok', 'count': count}

    elif (action == 'delstu'):
        stu_to_del = postjson['stu_to_del']
        original_stulist = json.loads(paperdb.stulist)
        ph.DelStu(original_stulist, stu_to_del)
        paperdb.stulist = json.dumps(original_stulist)
        paperdb.save()
        ret = {'code': 200, 'info': 'ok', 'deleted': stu_to_del}

    elif (action == 'cleanstu'):
        original_stulist = json.loads(paperdb.stulist)
        gradelist = json.loads(paperdb.stulist)
        count = original_stulist['count']
        empty_list = ph.CreateStuList()
        paperdb.stulist = json.dumps(empty_list)
        paperdb.save()
        ret = {'code': 200, 'info': 'ok', 'count': count}

    return HttpResponse(json.dumps(ret), content_type="application/json")
def upload_stulist(request):
    ret = {'code': 403, 'info': 'denied method ' + request.method}
    ph = PaperHelper()
    if request.method == 'POST':
        # acquire paperid from form
        paperid = request.POST.get('paperid')
        obj = request.FILES.get('file')
        print(paperid)
        paperdb = Paper.objects.get(pid=paperid)
        original_stulist = json.loads(paperdb.stulist)

        # acquire file from form
        obj = request.FILES.get('file')
        save_path = os.path.join(settings.BASE_DIR, 'upload.xls')
        # print(save_path)
        f = open(save_path, 'wb')
        for chunk in obj.chunks():
            f.write(chunk)
        f.close()

        # read the xls file and load problems
        x1 = xlrd.open_workbook(save_path)
        sheet1 = x1.sheet_by_name("Sheet1")
        line = 4
        while line <= 50 and line < sheet1.nrows:
            if sheet1.cell_value(line, 0) == "":
                break
            # print(sheet1.cell_value(line, 0))
            uname = str(sheet1.cell_value(line, 0))
            print(uname)
            if not UserList.objects.filter(username=uname).exists():
                line += 1
                continue
            ph.AddStu(original_stulist, uname)

            line += 1
        paperdb.stulist = json.dumps(original_stulist)
        paperdb.save()

        os.remove(save_path)
        ret = {'code': 200, 'info': 'ok'}
        pass

        return HttpResponse(json.dumps(ret), content_type="application/json")