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)
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))
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)