Example #1
0
def grade_download_stu():
    students = UserScore.query.all()
    book = xlwt.Workbook()

    alignment = xlwt.Alignment()  # Create Alignment
    alignment.horz = xlwt.Alignment.HORZ_CENTER  # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
    alignment.vert = xlwt.Alignment.VERT_CENTER  # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
    style = xlwt.XFStyle()  # Create Style
    style.alignment = alignment  # Add Alignment to Style

    sheet1 = book.add_sheet('个人成绩', cell_overwrite_ok=True)
    row0 = ['学生id', '姓名','个人成绩']
    for i in range(0, len(row0)):
        sheet1.write(0, i, row0[i])

    row_num = 1
    stu_num = len(students)
    for i in range(0,stu_num):
        username = User.query.filter_by(id=students[i].user_id).first()
        stuid = User.query.filter_by(id=students[i].user_id).first()
        print(username)
        sheet1.write(i+1,0,stuid.user_id)
        sheet1.write(i+1,1,username.name)
        sheet1.write(i+1,2,students[i].score)
    filename = 'student_grade_table_' + str(time.time()) + '.xls'
    book.save(os.path.join(data_uploader.path('', folder='tmp'), filename))
    return send_from_directory(data_uploader.path('', folder='tmp'), filename, as_attachment=True)
Example #2
0
def source_tag(courseid, tagid):
    form = FileForm()
    course = Course.query.filter_by(id=courseid).first()
    tags = course.tags
    user_names = []
    file_records = File.query.filter_by(tag_id=tagid).all()
    for file_record in file_records:
        user = User.query.filter_by(id=file_record.user_id).first()
        user_names.append(user.name)
    if form.validate_on_submit():
        for file in request.files.getlist('file'):
            file_record = File()
            file_record.user_id = current_user.id
            file_record.course_id = courseid

            filename = file.filename
            file_record.name = filename

            filetype = filename.split('.')[-1]
            tmpname = str(current_user.id) + '-' + str(time.time())
            file.filename = tmpname + '.' + filetype

            file_record.directory = data_uploader.path('', folder='course/'+str(courseid)+'/teacher/source')
            file_record.real_name = file.filename

            file_record.path = data_uploader.path(file.filename, folder='course/'+str(courseid)+'/teacher/source')

            data_uploader.save(file, folder='course/'+str(courseid)+'/teacher/source')

            file_record.tag_id = tagid
            db.session.add(file_record)
        db.session.commit()
        return redirect(url_for('teacher.source_tag', courseid=courseid, tagid=tagid))
    return render_template('teacher/source_tag.html', form=form, file_records=file_records,
                           courseid=courseid, tags=tags, tagid=tagid,user_names=user_names,file_num=len(file_records))
Example #3
0
def task_files(courseid, taskid,teacherid):
    form = FileForm()
    file_records = File.query.filter(File.task_id==taskid).filter(File.user_id == teacherid).all()


    if form.validate_on_submit():
        for file in request.files.getlist('file'):
            file_record = File()
            file_record.user_id = current_user.id
            file_record.task_id = taskid

            filename = file.filename
            file_record.name = filename

            filetype = filename.split('.')[-1]
            tmpname = str(current_user.id) + '-' + str(time.time())
            file.filename = tmpname + '.' + filetype

            file_record.directory = data_uploader.path('', folder='course/'+str(courseid)+'/teacher/tasks/'+str(taskid))
            file_record.real_name = file.filename

            file_record.path = data_uploader.path(file.filename, folder='course/'+str(courseid)+'/teacher/tasks/'+str(taskid))

            data_uploader.save(file, folder='course/'+str(courseid)+'/teacher/tasks/'+str(taskid))

            db.session.add(file_record)
        db.session.commit()

        return redirect(url_for('teacher.task_files', courseid=courseid, taskid=taskid,teacherid = teacherid))
    return render_template('teacher/task_tabfile.html',form=form, file_records=file_records, courseid=courseid, taskid=taskid)
Example #4
0
def team_download():
    teams = Team.query.filter_by(status=3).all()
    book = xlwt.Workbook()
    
    alignment = xlwt.Alignment()  # Create Alignment
    alignment.horz = xlwt.Alignment.HORZ_CENTER  # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
    alignment.vert = xlwt.Alignment.VERT_CENTER  # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
    style = xlwt.XFStyle()  # Create Style
    style.alignment = alignment  # Add Alignment to Style

    sheet1 = book.add_sheet('团队信息', cell_overwrite_ok=True)
    row0 = ['团队id', '团队名称', '姓名', '学号', '性别', 'Master']
    for i in range(0, len(row0)):
        sheet1.write(0, i, row0[i])

    row_num = 1
    for team in teams:
        turs = TeamUserRelation.query.filter_by(team_id=team.id).all()
        turs_length = len(turs)
        sheet1.write_merge(row_num, row_num + turs_length - 1, 0, 0, team.id, style)
        sheet1.write_merge(row_num, row_num + turs_length - 1, 1, 1, team.name, style)
        for i in range(turs_length):
            if turs[i].is_accepted:
                sheet1.write(row_num+i, 2, turs[i].user.name)
                sheet1.write(row_num + i, 3, turs[i].user.user_id)
                gender = '男' if turs[i].user.gender==False else '女'
                sheet1.write(row_num + i, 4, gender)
                if turs[i].is_master == True:
                    sheet1.write(row_num + i, 5, '√')
        row_num = row_num + turs_length
    filename = 'team_table_' + str(time.time()) + '.xls'
    book.save(os.path.join(data_uploader.path('', folder='tmp'), filename))
    return send_from_directory(data_uploader.path('', folder='tmp'), filename, as_attachment=True)
Example #5
0
def score_download(taskid):
    teamidList = TaskTeamRelation.query.filter_by(task_id=taskid).all()
    teams = []
    for teamid in teamidList:
        team = Team.query.filter_by(id=teamid.team_id).first()
        teams.append(team)
    task = Task.query.filter_by(id=taskid).first()

    book = xlwt.Workbook()

    alignment = xlwt.Alignment()  # Create Alignment
    alignment.horz = xlwt.Alignment.HORZ_CENTER  # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
    alignment.vert = xlwt.Alignment.VERT_CENTER  # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
    style = xlwt.XFStyle()  # Create Style
    style.alignment = alignment  # Add Alignment to Style

    sheet1 = book.add_sheet('本次作业信息('+task.name+')',cell_overwrite_ok=True)
    row0 = ['团队id','团队名称','作业得分']
    for i in range(0,len(row0)):
        sheet1.write(0,i,row0[i], style)
    row_num =1
    for team in teams:
        sheet1.write(row_num,0,team.id,style)
        sheet1.write(row_num,1,team.name,style)
        score = TaskTeamRelation.query.filter(TaskTeamRelation.team_id==team.id).filter(TaskTeamRelation.task_id==taskid).first()
        sheet1.write(row_num,2,score.score,style)
        row_num=row_num+1
    filename = 'score_table_'+ str(time.time()) + '.xls'
    book.save(os.path.join(data_uploader.path('',folder='tmp'),filename))
    return send_from_directory(data_uploader.path('', folder='tmp'), filename, as_attachment=True)
Example #6
0
def task_file_download_zip_source(courseid, taskid):
    tur = TeamUserRelation.query.filter_by(user_id=current_user.id).first()
    teamid = tur.team_id
    foldername = data_uploader.path('', folder='course/'+str(courseid)+'/student/tasks/'
                                                                      +str(taskid)+'/'+str(teamid))
    filename = os.path.join(data_uploader.path('', folder='tmp'), 'taskfiles.zip')
    zip_download = zipfolder(foldername, filename)
    return send_file(filename, as_attachment=True)
Example #7
0
def task_files(courseid, taskid):
    form = FileForm()

    # tur = TeamUserRelation.query.filter_by(user_id=current_user.id).first()
    # teamid = tur.team_id
    # mastersearch = TeamUserRelation.query.filter(TeamUserRelation.team_id == teamid).filter(
    #     TeamUserRelation.is_master == True).first()
    # masterid = mastersearch.user_id

    user_ist = Course.query.filter_by(id=courseid).first().users
    teachers = [user for user in user_ist if user.roleString=='teacher']

    file_records = []
    for teacher in teachers:
        file_list = File.query.filter_by(user_id=teacher.id).all()
        file_records.extend(file_list)

    file_records = [file_record for file_record in file_records if file_record.task_id==int(taskid)]


    if form.validate_on_submit():
        for file in request.files.getlist('file'):
            file_record = File()
            file_record.user_id = current_user.id
            file_record.task_id = taskid

            filename = file.filename
            file_record.name = filename

            filetype = filename.split('.')[-1]
            tmpname = str(current_user.id) + '-' + str(time.time())
            file.filename = tmpname + '.' + filetype

            file_record.directory = data_uploader.path('', folder='course')
            file_record.real_name = file.filename

            file_record.path = data_uploader.path(file.filename, folder='course')

            data_uploader.save(file, folder='course')

            db.session.add(file_record)
        db.session.commit()
        return redirect(url_for('student.task_files', courseid=courseid, taskid=taskid))
    print(file_records)
    return render_template('student/file_manage.html',form=form, file_records=file_records, courseid=courseid, taskid=taskid)
Example #8
0
def task_check_download(courseid):
    book = xlwt.Workbook()
    tasklist = Task.query.filter_by(course_id=courseid).all()

    ttrs_all = []
    for task in tasklist:
        ttrs = TaskTeamRelation.query.filter_by(task_id = task.id).all()
        if ttrs is not None:
            ttrs_all.extend(ttrs)
    teamlist = Team.query.filter_by(course_id = courseid).all()
    ##tasks = Task.query.filter_by(course_id=courseid).all()
    alignment = xlwt.Alignment()  # Create Alignment
    alignment.horz = xlwt.Alignment.HORZ_CENTER  # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
    alignment.vert = xlwt.Alignment.VERT_CENTER  # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
    style = xlwt.XFStyle()  # Create Style
    style.alignment = alignment  # Add Alignment to Style

    sheet1 = book.add_sheet('作业信息', cell_overwrite_ok=True)
    row0 = ['团队id', '团队名称']
    for task in tasklist:
        row0.append(task.name)

    for i in range(0, len(row0)):
        sheet1.write(0, i, row0[i])

    row_num = 1

    for team in teamlist:
        ##turs = TeamUserRelation.query.filter_by(team_id=team.id).all()
        i = 2
        sheet1.write(row_num, 0 , team.id)
        sheet1.write(row_num, 1, team.name)
        for ttrs in ttrs_all:
            if ttrs.team_id == team.id:
                sheet1.write(row_num, i , ttrs.score)
                i = i+1
        ##row_num = row_num + turs_length
        row_num = row_num + 1

    filename = 'task_check_table_' + str(time.time()) + '.xls'
    book.save(os.path.join(data_uploader.path('', folder='tmp'), filename))
    return send_from_directory(data_uploader.path('', folder='tmp'), filename, as_attachment=True)
Example #9
0
def grade_download():
    teams = Team.query.filter_by(status=3).all()
    book = xlwt.Workbook()

    alignment = xlwt.Alignment()  # Create Alignment
    alignment.horz = xlwt.Alignment.HORZ_CENTER  # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
    alignment.vert = xlwt.Alignment.VERT_CENTER  # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
    style = xlwt.XFStyle()  # Create Style
    style.alignment = alignment  # Add Alignment to Style

    sheet1 = book.add_sheet('团队成绩', cell_overwrite_ok=True)
    row0 = ['团队id', '团队名称','成绩']
    for i in range(0, len(row0)):
        sheet1.write(0, i, row0[i])

    row_num = 1
    team_num = len(teams)
    for i in range(0,team_num):
        sheet1.write(i + 1, 0, teams[i].id)
        sheet1.write(i+1,1,teams[i].name)
        sheet1.write(i+1,2,teams[i].score)
    filename = 'team_grade_table_' + str(time.time()) + '.xls'
    book.save(os.path.join(data_uploader.path('', folder='tmp'), filename))
    return send_from_directory(data_uploader.path('', folder='tmp'), filename, as_attachment=True)
Example #10
0
def source_file_download_zip(courseid):
    foldername = data_uploader.path('',folder='course/'+str(courseid)+'/teacher/source')
    filename = os.path.join(data_uploader.path('',folder='tmp'),'sourcefiles.zip')
    zip_download = zipfolder(foldername,filename)
    return send_file(filename,as_attachment=True)
Example #11
0
def source(courseid, taskid):
        form = FileForm()
        flag = 0
        tur = TeamUserRelation.query.filter_by(user_id=current_user.id).first()
        teamid = tur.team_id
        mastersearch = TeamUserRelation.query.filter(TeamUserRelation.team_id==teamid).filter(TeamUserRelation.is_master==True).first()
        masterid = mastersearch.user_id

        ttr = TaskTeamRelation.query.filter(TaskTeamRelation.team_id==teamid).filter(TaskTeamRelation.task_id==taskid).first()
        task = Task.query.filter_by(id=taskid).first()
        submit_time = task.submit_num
        if( ttr!= None ):
            submitted_time = ttr.submit_num
            rest_time = submit_time - submitted_time
        else:
            rest_time = submit_time

        if(tur.is_master==True):
            flag = 1
        else:
            flag = 0

        time_flag = 0
        task_record = Task.query.filter_by(id=taskid).first()
        task_endtime = task_record.end_time
        time_now = datetime.datetime.fromtimestamp(time.time())
        if (time_now > task_endtime):
            time_flag = 1
        else:
            time_flag = 0

        sub_flag = 0
        if (submit_time-ttr.submit_num>0):
            sub_flag = 1
        else:
            sub_flag = 0

        file_records = File.query.filter(File.task_id==taskid).filter(File.user_id==masterid ).all()
        if form.validate_on_submit():
            for file in request.files.getlist('file'):
                file_record = File()
                file_record.user_id = current_user.id
                file_record.task_id = taskid

                filename = file.filename
                file_record.name = filename

                filetype = filename.split('.')[-1]
                tmpname = str(current_user.id) + '-' + str(time.time())
                file.filename = tmpname + '.' + filetype

                file_record.directory = data_uploader.path('', folder='course/'+str(courseid)+'/student/tasks/'
                                                                      +str(taskid)+'/'+str(teamid))
                file_record.real_name = file.filename

                file_record.path = data_uploader.path(file.filename, folder='course/'+str(courseid)+'/student/tasks/'
                                                                      +str(taskid)+'/'+str(teamid))

                data_uploader.save(file, folder='course/'+str(courseid)+'/student/tasks/'
                                                                      +str(taskid)+'/'+str(teamid))

                db.session.add(file_record)
                db.session.commit()

            taskteamrelation = TaskTeamRelation.query.filter(TaskTeamRelation.task_id==taskid).filter(TaskTeamRelation.team_id==teamid).first()
            # taskteamrelation.team_id = teamid
            # taskteamrelation.task_id = taskid
            taskteamrelation.submit_num = ttr.submit_num + 1
            db.session.add(taskteamrelation)
            db.session.commit()

            return redirect(url_for('student.source', courseid=courseid, taskid=taskid))
        return render_template('student/course/task_file_manage.html', form=form, file_records=file_records, courseid=courseid,
                                   taskid=taskid,flag=flag,resttime=rest_time,timeflag=time_flag,sub_flag=sub_flag)
Example #12
0
def former_task_file_download_zip(courseid):
    foldername = data_uploader.path('', folder='course/'+str(courseid)+'/student')
    filename = os.path.join(data_uploader.path('', folder='tmp'), 'taskfiles.zip')
    zip_download = zipfolder(foldername, filename)
    return send_file(filename, as_attachment=True)
Example #13
0
def task_file_download_zip(courseid, taskid):
    foldername = data_uploader.path('', folder='course/'+str(courseid)+'/teacher/tasks/'+str(taskid))
    filename = os.path.join(data_uploader.path('', folder='tmp'), 'taskfiles.zip')
    zip_download = zipfolder(foldername, filename)
    return send_file(filename, as_attachment=True)