Пример #1
0
def updateExperimentTemplate(request):
    teacherid = utils.getCookie(request, "teacherid")
    if (teacherid is None) or teacherid == "":
        responseReturn = Response(-2, "请登录")
        return HttpResponse(responseReturn.__str__())
    experimentid = utils.getParam(request, "experimentid")
    file = request.FILES.get('file', None)
    if file is None:
        return HttpResponse(
            "<script>if(confirm('上传的文件为空')){history.go(-1);location.reload()}else{history.go(-1);location.reload()}</script>"
        )
    filename = file.name
    filesuffix = os.path.splitext(filename)[1]
    if filesuffix != ".doc" and filesuffix != ".docx":
        return HttpResponse(
            "<script>if(confirm('模板必须为word格式')){history.go(-1);location.reload()}else{history.go(-1);location.reload()}</script>"
        )
    filename = str(uuid.uuid1()) + filesuffix
    fp = open(os.path.join(CONSTANTS.TEMPLATEURL_PRE, filename), 'wb+')
    for chunk in file.chunks():  # 分块写入文件
        fp.write(chunk)
    fp.close()
    templateid = TemplateService.addTemplate(experimentid, filename)
    ExperimentService.updateExperimentTamplate(experimentid, templateid)
    return HttpResponse(
        "<script>if(confirm('上传成功')){history.go(-1);location.reload()}else{history.go(-1);location.reload()}</script>"
    )
Пример #2
0
def v_completedexp(request):
    stuid = utils.getCookie(request, "stuid")
    if (stuid is None) or stuid == "":
        return getloginResponse(request)
    stuname = utils.getCookie(request, "stuname")
    page = utils.getParam(request, "page")
    if (page is None) or page == "":
        page = 1
    else:
        page = int(page)
    count = TeachingService.getCountPageByStu(stuid, CONSTANTS.TEACHING_IS_STOP)
    countpage = 0
    i = 0
    if count > 0:
        if count % 10 > 0:
            i = 1
        countpage = count / 10 + i
    teachingRunList = TeachingService.getTeachingByStu(stuid, CONSTANTS.TEACHING_IS_STOP, page)
    experimentList = ExperimentService.getAllExperiment()
    # 获取用于菜单的实验列表
    experimentMenuList = []
    for experiment in experimentList:
        experimentTemp = experiment.copy()
        experimentName = experimentTemp["name"]
        if len(experimentName) > 8:
            experimentName = experimentName[0:10] + "..."
        experimentTemp["name"] = experimentName
        experimentMenuList.append(experimentTemp)

    teachingCount = getTeachingCount(stuid)
    return render(request, "completedexp.html",
                  {"teachingList": teachingRunList, "countpage": countpage, "experimentMenuList": experimentMenuList,
                   "experimentList": experimentList, "teachingCount": teachingCount, "stuname": stuname})
Пример #3
0
def getTeachingByTea(teaid, type, index):
    teachingsearch = Teaching.objects.filter(teacherid=teaid, status=type, isdelete=CONSTANTS.ISDELETE_NOT)
    try:
        teachinglist = teachingsearch.all()
    except:
        return None
    else:
        paginator = Paginator(teachinglist, 10)
        teachingPageList = paginator.page(index)
        teachingDictPageList = []
        for teaching in teachingPageList:
            teachingDict = {
                "id": teaching.id,
                "experimentid": teaching.experimentid,
                "deadline": teaching.deadline,
                "teacherid": teaching.teacherid,
                "point": teaching.point,
                "remark": teaching.remark,
                "dataurl": teaching.dataurl,
                "stulisturl": teaching.stulisturl,
                "templateid": teaching.templateid,
                "videos": teaching.videos,
                "status": teaching.status,
                "isdelete": teaching.isdelete,
                "createtime": teaching.createtime,
                "updatetime": teaching.updatetime

            }
            experiment = ExperimentService.getExperimentById(teaching.experimentid)
            teachingDict["f_experiment_name"] = experiment.name
            teachingDict["f_experiment_desc"] = experiment.desc
            teachingDict["f_experiment_url"] = experiment.url
            teacher = TeacherService.getTeacherById(teaching.teacherid)
            teachingDict["f_teacher_name"] = teacher.name
            teachingDict["f_teacher_id"] = teacher.id
            videoids = teaching.videos.split(",")
            videos = []
            for id in videoids:
                video = VideoService.getVideoById(id)
                video.url = "/getVideoById/?videourl=" + video.url
                videoobj = {
                    "id": video.id,
                    "url": video.url,
                    "name": video.name
                }
                videos.append(videoobj)
            teachingDict["videos"] = json.dumps(videos)
            stuCount = ReportService.getCountStuByTeachingid(teaching.id)
            teachingDict["stuCount"] = stuCount
            complapprepcount = ReportService.getCountStuByTeachingidAndStatus(teaching.id,
                                                                              CONSTANTS.REPORT_STATUS_SCORE)
            submitcount = ReportService.getCountStuByTeachingidAndStatus(teaching.id,
                                                                         CONSTANTS.REPORT_STATUS_SUBMIT)
            teachingDict["complapprepcount"] = complapprepcount
            if complapprepcount == stuCount:
                teachingDict["f_report_status"] = 2
            else:
                teachingDict["f_report_status"] = 1
            teachingDictPageList.append(teachingDict)
        return teachingDictPageList
Пример #4
0
def setdescription(request):
    # 接收基础参数
    if request.method == 'POST':
        des_content = request.POST.get('des_content')
        des_id = float(request.POST.get('des_id'))
        status = ExperimentService.updateExperimentdescription(
            des_id, des_content)
        if status is True:
            return HttpResponse(True)
    else:
        return HttpResponse(False)
Пример #5
0
def v_allexperiment(request):
    stuid = utils.getCookie(request, "stuid")
    if (stuid is None) or stuid == "":
        return getloginResponse(request)
    stuname = utils.getCookie(request, "stuname")
    teachingCount = getTeachingCount(stuid)
    experimentList = ExperimentService.getAllExperiment()
    # 获取用于菜单的实验列表
    experimentMenuList = []
    for experiment in experimentList:
        experimentTemp = experiment.copy()
        experimentName = experimentTemp["name"]
        if len(experimentName) > 8:
            experimentName = experimentName[0:10] + "..."
        experimentTemp["name"] = experimentName
        experimentMenuList.append(experimentTemp)

    return render(request, "allexp.html", {"experimentList": experimentList, "experimentMenuList": experimentMenuList,
                                           "teachingCount": teachingCount, "stuname": stuname})
Пример #6
0
def updateExperimentVideo(request):
    teacherid = utils.getCookie(request, "teacherid")
    if (teacherid is None) or teacherid == "":
        responseReturn = Response(-2, "请登录")
        return HttpResponse(responseReturn.__str__())
    experimentid = utils.getParam(request, "experimentid")
    videos = utils.getParam(request, "videos")
    if (experimentid is None) or experimentid == "":
        responseReturn = Response(-1, "请重新选择实验!")
        return HttpResponse(responseReturn.__str__())
    if (videos is None) or videos == "":
        responseReturn = Response(-1, "修改视频异常!")
        return HttpResponse(responseReturn.__str__())
    experiment = ExperimentService.updateExperimentVideos(
        experimentid, videos)
    if experiment is None:
        responseReturn = Response(-1, "网络异常,请重试!")
        return HttpResponse(responseReturn.__str__())

    responseReturn = Response(0, "修改成功!")
    return HttpResponse(responseReturn.__str__())
Пример #7
0
def v_addexp(request):
    teacherid = utils.getCookie(request, "teacherid")
    if (teacherid is None) or teacherid == "":
        return getloginResponse(request)
    teachername = utils.getCookie(request, "teachername")
    teachingCount = getTeachingCount(teacherid)
    experimentList = ExperimentService.getAllExperiment()
    # 获取用于菜单的实验列表
    experimentMenuList = []
    for experiment in experimentList:
        experimentTemp = experiment.copy()
        experimentName = experimentTemp["name"]
        if len(experimentName) > 8:
            experimentName = experimentName[0:10] + "..."
        experimentTemp["name"] = experimentName
        experimentMenuList.append(experimentTemp)
    filterInfoList = FilterInfoService.getFilterInfoList(None)
    filterInfoDictList = []
    for filterinfo in filterInfoList:
        dict = model_to_dict(filterinfo)
        del dict["isdelete"]
        del dict["createtime"]
        del dict["updatetime"]
        filterInfoDictList.append(dict)
    filterInfoListstr = json.dumps(filterInfoDictList, ensure_ascii=False)

    response = render(
        request, "addexp.html", {
            "teachingCount": teachingCount,
            "experimentList": experimentList,
            "experimentMenuList": experimentMenuList,
            "teachername": teachername,
            "filterInfoListstr": filterInfoListstr
        })

    return response
Пример #8
0
def addexperiment(request):
    teacherid = utils.getCookie(request, "teacherid")
    if (teacherid is None) or teacherid == "":
        responseReturn = Response(-2, "请登录")
        return HttpResponse(responseReturn.__str__())
    experimentid = utils.getParam(request, "experimentid")
    deadlinestr = utils.getParam(request, "deadline") + " 00:00:00"
    templatetype = utils.getParam(request, "templatetype")
    videotype = utils.getParam(request, "videotype")
    datatype = utils.getParam(request, "datatype")
    videoids = utils.getParam(request, "videos")
    point = utils.getParam(request, "point")
    remark = utils.getParam(request, "remark")
    studentids = utils.getParam(request, "studentids")
    '''
        获得实验详情
    '''
    experiment = ExperimentService.getExperimentById(experimentid)
    if experiment is None:
        responseReturn = Response(-1, "选择实验异常!")
        return HttpResponse(responseReturn.__str__())
    try:
        deadline = datetime.datetime.strptime(deadlinestr, "%Y-%m-%d %H:%M:%S")
    except:
        responseReturn = Response(-1, "请选择报告提交截止日期!")
        return HttpResponse(responseReturn.__str__())
    '''
        获得模板
    '''
    if templatetype == "1":
        templateid = experiment.templateid
    else:  # 文件上传
        templatefile = request.FILES.get('templatefile', None)
        if templatefile is None:
            responseReturn = Response(-1, "请选择你要上传的模板文件!")
            return HttpResponse(responseReturn.__str__())
        filename = templatefile.name
        filesuffix = os.path.splitext(filename)[1]
        if filesuffix != ".doc" and filesuffix != ".docx":
            responseReturn = Response(-1, "模板必须为word格式!")
            return HttpResponse(responseReturn.__str__())
        filename = str(uuid.uuid1()) + filesuffix
        fp = open(os.path.join(CONSTANTS.DATAURL_PRE, filename), 'wb+')
        for chunk in templatefile.chunks():  # 分块写入文件
            fp.write(chunk)
        fp.close()
        templateid = TemplateService.addTemplate(experimentid, filename)
    '''
        获得视频
    '''
    if videotype == "1":
        videos = experiment.videos
    else:
        videos = videoids
    '''
        获得实验数据
    '''
    if datatype == "1":  # 稍后上传
        dataurl = "none"
    else:  # 上传实验数据
        datafile = request.FILES.get('datafile', None)
        if datafile is None:
            responseReturn = Response(-1, "请选择你要上传的实验数据!")
            return HttpResponse(responseReturn.__str__())
        filename = datafile.name
        filesuffix = os.path.splitext(filename)[1]
        if filesuffix != ".xsl" and filesuffix != ".xlsx":
            responseReturn = Response(-1, "实验数据必须为excel!")
            return HttpResponse(responseReturn.__str__())
        filename = str(uuid.uuid1()) + filesuffix
        fp = open(os.path.join(CONSTANTS.DATAURL_PRE, filename), 'wb+')
        for chunk in datafile.chunks():  # 分块写入文件
            fp.write(chunk)
        fp.close()
        dataurl = filename
    '''
        获得学生名单
    '''
    studentidList = studentids.split(",")
    # 添加
    teachingid = TeachingService.addTeaching(int(experimentid), deadline,
                                             teacherid, point, remark, dataurl,
                                             "", templateid, videos)
    if teachingid is None:
        responseReturn = Response(-1, "添加失败,请重试")
        return HttpResponse(responseReturn.__str__())
    for id in studentidList:
        studentobj = None
        studentobj = StudentService.getStudentById(id)
        if studentobj is None:
            TeachingService.deleteTeachingByid(teachingid)
            responseReturn = Response(-1, "选择学生异常,请重试!")
            return HttpResponse(responseReturn.__str__())
        ReportService.addReport(teachingid, studentobj.id)

    responseReturn = Response(0, "添加成功!")
    return HttpResponse(responseReturn.__str__())
Пример #9
0
def getTeachingByStu(stuid, type, index):
    reportList = ReportService.getReportByStuId(stuid)
    teachingIds = []
    for i in range(len(reportList)):
        if i >= len(reportList):
            break
        teachingIds.append(reportList[i].teachingid)
    try:
        teachinglist = Teaching.objects.filter(id__in=teachingIds, status=type, isdelete=CONSTANTS.ISDELETE_NOT).all()
    except:
        return None
    else:
        teachingDictList = []
        for teaching in teachinglist:
            teachingDict = {
                "id": teaching.id,
                "experimentid": teaching.experimentid,
                "deadline": teaching.deadline,
                "teacherid": teaching.teacherid,
                "point": teaching.point,
                "remark": teaching.remark,
                "dataurl": teaching.dataurl,
                "stulisturl": teaching.stulisturl,
                "templateid": teaching.templateid,
                "videos": teaching.videos,
                "status": teaching.status,
                "isdelete": teaching.isdelete,
                "createtime": teaching.createtime,
                "updatetime": teaching.updatetime,
            }
            experiment = ExperimentService.getExperimentById(teaching.experimentid)
            teachingDict["f_experiment_name"] = experiment.name
            teachingDict["f_experiment_desc"] = experiment.desc
            teachingDict["f_experiment_url"] = experiment.url
            teacher = TeacherService.getTeacherById(teaching.teacherid)
            teachingDict["f_teacher_name"] = teacher.name
            teachingDict["f_teacher_id"] = teacher.id
            videoids = teaching.videos.split(",")
            videos = []
            for id in videoids:
                video = VideoService.getVideoById(id)
                video.url = "/getVideoById/?videourl=" + video.url
                videoobj = {
                    "url": video.url,
                    "name": video.name
                }
                videos.append(videoobj)
            teachingDict["videos"] = json.dumps(videos)
            for report in reportList:
                if report.teachingid == teaching.id:
                    teachingDict["f_report_status"] = report.status
                    teachingDict["f_report_id"] = report.id
                    if (report.url is None) or (report.url == "") or report.url == "none":
                        teachingDict["f_report_url"] = ""
                    else:
                        teachingDict["f_report_url"] = report.url
                    if report.score > 0:
                        teachingDict["f_score"] = report.score
                    else:
                        teachingDict["f_score"] = 0
            teachingDictList.append(teachingDict)
        return teachingDictList