def getPagination(request, special, college, page, is_first_round): message = "" expert = ExpertProfile.objects.get(userid = request.user) page = int(page) re_list = Re_Project_Expert.objects.filter(Q(expert = expert) & Q(is_first_round = is_first_round)) if special != "-1": re_list = re_list.filter(project__project_special = special) if college != "-1": re_list = re_list.filter(project__teacher__college = college) re_list = list(re_list) for re_obj in re_list: if is_first_round: re_obj.score = getScoreTable(re_obj.project).objects.get_or_create(re_obj = re_obj)[0].get_total_score() else: re_obj.score = getFinalScoreTable(re_obj.project).objects.get_or_create(re_obj = re_obj)[0].get_total_score() re_list.sort(key = lambda x: x.score) if is_first_round: context = getContext(re_list, page, "item", 0) html = render_to_string("expert/widgets/first_round_project_table.html", context) message = "first round" else: context = getContext(re_list, page, "item2", 0) html = render_to_string("expert/widgets/second_round_project_table.html", context) message = "second round" return simplejson.dumps({"message": message, "html": html, })
def appendAlloc(request, project_id, expert_list, path): message = "" is_first_round = (path == FIRST_ROUND_PATH) if len(expert_list) != 1: message = "error" else: expert = ExpertProfile.objects.get(userid__username=expert_list[0]) project = ProjectSingle.objects.get(project_id=project_id) if Re_Project_Expert.objects.filter( Q(project=project) & Q(expert=expert) & Q(is_first_round=is_first_round)).count() > 0: message = "redundance" else: re_obj = Re_Project_Expert(project=project, expert=expert, is_first_round=is_first_round) re_obj.save() if is_first_round: table = getScoreTable(project) else: table = getFinalScoreTable(project) table(re_obj=re_obj).save() current_site = Site.objects.get_current() site_domain = current_site.domain content = render_to_string('email/email_expert_content.txt', { 'site': site_domain, 'year': datetime.datetime.today().year, }) send_mail(u'大连理工大学基本科研业务经费管理平台专家评审通知', content, settings.DEFAULT_FROM_EMAIL, [expert.userid.email]) message = "ok" return simplejson.dumps({ "message": message, })
def xls_info_basesummary_preview(request, proj_set, specialtype, specialname, eid): """ """ xls_obj, workbook = xls_info_basesummary_preview_gen(request, specialtype) _number = 2 index = 1 for proj_obj in proj_set: teacher = TeacherProfile.objects.get(id=proj_obj.teacher.id) manager = teacher.teacherinfosetting re_project_expert_list = Re_Project_Expert.objects.filter( project_id=proj_obj) row = 1 + _number xls_obj.write(row, 0, unicode(index)) xls_obj.write(row, 1, unicode(proj_obj.title)) xls_obj.write(row, 2, unicode(manager.name)) i = 0 average_score = 0 score_list = [] for re_expert_temp in re_project_expert_list: if eid == TYPE_ALLOC[0]: score_table = getScoreTable( re_expert_temp.project).objects.get_or_create( re_obj=re_expert_temp)[0] if eid == TYPE_FINAL_ALLOC[0]: score_table = getFinalScoreTable( re_expert_temp.project).objects.get_or_create( re_obj=re_expert_temp)[0] if score_table.get_total_score(): if specialtype == 1: score_tmp = score_table.get_total_score() + int( score_table.get_comments()) else: score_tmp = score_table.get_total_score() score_list.append(score_tmp) xls_obj.write(row, 3 + i * 2, unicode(score_table.get_total_score())) xls_obj.write(row, 4 + i * 2, unicode(score_table.get_comments())) i += 1 average_score = average(score_list) xls_obj.write(row, 3 + EXPERT_NUM * 2, unicode(average_score)) _number += 1 index += 1 # write xls file if eid == TYPE_ALLOC[0]: save_path = os.path.join( TMP_FILES_PATH, "%s%s.xls" % (str(datetime.date.today().year), u"年大连理工大学" + specialname + u"专题基本科研业务经费科研专题项目结题验收初审结果汇总表")) if eid == TYPE_FINAL_ALLOC[0]: save_path = os.path.join( TMP_FILES_PATH, "%s%s.xls" % (str(datetime.date.today().year), u"年大连理工大学" + specialname + u"专题基本科研业务经费科研专题项目结题验收终审结果汇总表")) workbook.save(save_path) return save_path
def finalReportView(request, is_submited): re_id = request.GET.get("re_id") re_obj = Re_Project_Expert.objects.get(id = re_id) pid = re_obj.project.project_id score_table ,created= getFinalScoreTable(re_obj.project).objects.get_or_create(re_obj = re_obj) context = finalReportViewWork(request, pid, is_submited[SUBMIT_STATUS_FINAL]) file_list = getSingleProjectURLList(re_obj.project)[1:] context = dict(context, **fileUploadManage(request, pid, is_submited)) if request.method == "GET": score_form = getFinalScoreForm(re_obj.project)(instance = score_table) context.update({ 'score_form': score_form, 're_obj': re_obj, 'file_list': file_list, 'user': '******', }) return render(request,"expert/final.html",context) else: score_form = getFinalScoreForm(re_obj.project)(request.POST, instance = score_table) if score_form.is_valid(): score_form.save() return HttpResponseRedirect("/expert/redirect/?is_first_round=0") else: context.update({ 'score_form': score_form, 're_obj': re_obj, 'file_list': file_list, 'error': score_form.errors, 'user': '******', }) return render(request,"expert/final.html",context)
def homeView(request, is_submited=False): is_first_round = request.GET.get("is_first_round", "1") page = int(request.GET.get("page", "1")) page2 = int(request.GET.get("page2", "1")) expert = ExpertProfile.objects.get(userid = request.user) re_list_1 = list(Re_Project_Expert.objects.filter(Q(expert = expert) & \ Q(is_first_round = True) & \ Q(project__project_status__status = PROJECT_STATUS_APPLICATION_EXPERT_SUBJECT) & \ Q(project__project_special__alloc_status = True))) for re_obj in re_list_1: loginfo(re_obj.project) re_obj.score = getScoreTable(re_obj.project).objects.get_or_create(re_obj = re_obj)[0].get_total_score() re_list_2 = list(Re_Project_Expert.objects.filter(Q(expert = expert) & \ Q(is_first_round = False) & \ Q(project__project_status__status = PROJECT_STATUS_FINAL_EXPERT_SUBJECT) & \ Q(project__project_special__final_alloc_status = True))) for re_obj in re_list_2: loginfo(re_obj.project) re_obj.score = getFinalScoreTable(re_obj.project).objects.get_or_create(re_obj = re_obj)[0].get_total_score() context = {"is_first_round": is_first_round,} re_list_1.sort(key = lambda x: x.score) re_list_2.sort(key = lambda x: x.score) form = ScheduleBaseForm() context.update(getContext(re_list_1, page, "item", 0)) context.update(getContext(re_list_2, page2, "item2", 0)) context.update({"form": form, }) return render(request,"expert/home.html", context)
def xls_info_final_front_preview(request, proj_set, specialtype=""): max_expert_num = -1 for proj_obj in proj_set: re_project_expert_list = Re_Project_Expert.objects.filter( project_id=proj_obj) max_expert_num = max(len(re_project_expert_list), max_expert_num) xls_obj, workbook = xls_info_final_front_preview_gen( request, max_expert_num) _number = 2 index = 1 style = cell_style(horizontal=True, vertical=True) for proj_obj in proj_set: teacher = TeacherProfile.objects.get(id=proj_obj.teacher.id) manager = teacher.teacherinfosetting re_project_expert_list = Re_Project_Expert.objects.filter( project_id=proj_obj) row = 1 + _number xls_obj.write(row, 0, unicode(index), style) xls_obj.write(row, 1, unicode(proj_obj.title), style) xls_obj.write(row, 2, unicode(manager.name), style) xls_obj.write(row, 3, unicode(proj_obj.projectfundsummary.total_budget), style) i = 0 score_list1 = [] score_list2 = [] average_score_1 = 0 average_score_2 = 0 for re_expert_temp in re_project_expert_list: score_table = getFinalScoreTable( re_expert_temp.project).objects.get_or_create( re_obj=re_expert_temp)[0] if score_table.get_total_score(): xls_obj.write(row, 4 + i, unicode(score_table.get_total_score()), style) score_list1.append(score_table.get_total_score()) if score_table.get_comments(): xls_obj.write(row, 5 + i, unicode(score_table.get_comments()), style) score_list2.append(score_table.get_comments()) i += 2 average_score_1 = average(score_list1) average_score_2 = average(score_list2) # if (len(score_list) > 2): # delete_max_and_min(score_list) # average_score_2 = average(score_list) xls_obj.write(row, 4 + max_expert_num * 2, unicode(average_score_1), style) xls_obj.write(row, 5 + max_expert_num * 2, unicode(average_score_2), style) _number += 1 index += 1 # write xls file save_path = os.path.join( TMP_FILES_PATH, "%s%s.xls" % (str( datetime.date.today().year), "年大连理工大学基本科研业务费前沿交叉学科基础科研业务费终审结果汇总表")) workbook.save(save_path) return save_path
def queryAllocedExpert(request, project_id, path): message = "" is_first_round = (path == FIRST_ROUND_PATH) project = ProjectSingle.objects.get(project_id = project_id) if is_first_round: expert_list = [(re_obj.expert, getScoreTable(project).objects.get(re_obj = re_obj).get_total_score()) for re_obj in Re_Project_Expert.objects.filter(Q(project = project) & Q(is_first_round = is_first_round))] else: expert_list = [(re_obj.expert, getFinalScoreTable(project).objects.get(re_obj = re_obj).get_total_score()) for re_obj in Re_Project_Expert.objects.filter(Q(project = project) & Q(is_first_round = is_first_round))] html = render_to_string("school/widgets/project_review_table.html", {"expert_list": expert_list}) return simplejson.dumps({"html": html, })
def xls_info_laboratory_preview(request,proj_set,specialtype="",eid=""): """ """ xls_obj, workbook = xls_info_laboratory_preview_gen(request) _number= 1 index = 1 for proj_obj in proj_set: teacher = TeacherProfile.objects.get(id = proj_obj.teacher.id) manager = teacher.teacherinfosetting re_project_expert_list = Re_Project_Expert.objects.filter(project_id = proj_obj) row = 1 + _number xls_obj.write(row, 0, unicode(index)) xls_obj.write(row, 1, unicode(proj_obj.title)) xls_obj.write(row, 2, unicode(manager.name)) xls_obj.write(row, 3, unicode(proj_obj.projectfundsummary.total_budget)) i = 0 score_list = [] average_score_1 = 0 average_score_2 = 0 average_score_3 = 0 for re_expert_temp in re_project_expert_list: if eid==TYPE_ALLOC[0]: score_table = getScoreTable(re_expert_temp.project).objects.get_or_create(re_obj = re_expert_temp)[0] if eid == TYPE_FINAL_ALLOC[0]: score_table = getFinalScoreTable(re_expert_temp.project).objects.get_or_create(re_obj = re_expert_temp)[0] if score_table.get_total_score(): xls_obj.write(row,4 + i,unicode(score_table.get_total_score())) score_list.append(score_table.get_total_score()) i += 1 average_score_1 = average(score_list) if (len(score_list) > 4): score_list=delete_max_and_min(score_list) average_score_2 = average(score_list) score_list=delete_max_and_min(score_list) average_score_3 = average(score_list) xls_obj.write(row, 4+EXPERT_NUM,unicode(average_score_1)) xls_obj.write(row, 5+EXPERT_NUM,unicode(average_score_2)) xls_obj.write(row, 6+EXPERT_NUM,unicode(average_score_3)) _number+= 1 index += 1 # write xls file if eid==TYPE_ALLOC[0]: save_path = os.path.join(TMP_FILES_PATH, "%s%s.xls" % (str(datetime.date.today().year), "年度大连理工大学基本科研业务费重点实验室科研专题项目申请初审结果汇总表")) if eid == TYPE_FINAL_ALLOC[0]: save_path = os.path.join(TMP_FILES_PATH, "%s%s.xls" % (str(datetime.date.today().year), "年度大连理工大学基本科研业务费重点实验室科研专题项目申请终审结果汇总表")) workbook.save(save_path) return save_path
def getScore(request, pid): message = "" project = ProjectSingle.objects.get(project_id=pid) is_first_round = True if project.project_status.status == PROJECT_STATUS_FINAL_EXPERT_SUBJECT: is_first_round = False if is_first_round: scoreTableType = getScoreTable(project) else: scoreTableType = getFinalScoreTable(project) comments_index = scoreTableType.has_comments() #scoreFormType = getScoreForm(project) if is_first_round: scoreFormType = getScoreForm(project) else: scoreFormType = getFinalScoreForm(project) scoreList = [] ave_score = {} tem = scoreTableType.objects.all() for re_obj in Re_Project_Expert.objects.filter( Q(project=project) & Q(is_first_round=is_first_round)): table = scoreTableType.objects.get_or_create(re_obj=re_obj)[0] score_row = scoreFormType(instance=table) if table.get_total_score() == 0: continue for i, field in enumerate(score_row): if i == comments_index: continue ave_score[i] = ave_score.get(i, 0) + int(field.value()) score_row.expert_name = re_obj.expert score_row.total_score = table.get_total_score() ave_score["total"] = ave_score.get("total", 0) + score_row.total_score score_row.comments = table.get_comments() scoreList.append(score_row) if len(scoreList): for item in ave_score.items(): ave_score[item[0]] = 1.0 * item[1] / len(scoreList) html = render_to_string( "widgets/concluding_data.html", { "scoreList": scoreList, "ave_score": ave_score.values(), "form": scoreFormType, "comments_index": comments_index, }) return simplejson.dumps({ "message": message, "html": html, })
def xls_info_final_front_preview(request,proj_set,specialtype=""): max_expert_num=-1; for proj_obj in proj_set: re_project_expert_list = Re_Project_Expert.objects.filter(project_id = proj_obj) max_expert_num=max(len(re_project_expert_list),max_expert_num) xls_obj,workbook = xls_info_final_front_preview_gen(request,max_expert_num) _number= 2 index = 1 style =cell_style(horizontal=True,vertical=True) for proj_obj in proj_set: teacher = TeacherProfile.objects.get(id = proj_obj.teacher.id) manager = teacher.teacherinfosetting re_project_expert_list = Re_Project_Expert.objects.filter(project_id = proj_obj) row = 1 + _number xls_obj.write(row, 0, unicode(index),style) xls_obj.write(row, 1, unicode(proj_obj.title),style) xls_obj.write(row, 2, unicode(manager.name),style) xls_obj.write(row, 3, unicode(proj_obj.projectfundsummary.total_budget),style) i = 0 score_list1 = [] score_list2 = [] average_score_1 = 0 average_score_2 = 0 for re_expert_temp in re_project_expert_list: score_table = getFinalScoreTable(re_expert_temp.project).objects.get_or_create(re_obj = re_expert_temp)[0] if score_table.get_total_score(): xls_obj.write(row,4 + i,unicode(score_table.get_total_score()),style) score_list1.append(score_table.get_total_score()) if score_table.get_comments(): xls_obj.write(row,5+i,unicode(score_table.get_comments()),style) score_list2.append(score_table.get_comments()) i += 2 average_score_1 = average(score_list1) average_score_2 = average(score_list2) # if (len(score_list) > 2): # delete_max_and_min(score_list) # average_score_2 = average(score_list) xls_obj.write(row, 4+max_expert_num*2,unicode(average_score_1),style) xls_obj.write(row, 5+max_expert_num*2,unicode(average_score_2),style) _number+= 1 index += 1 # write xls file save_path = os.path.join(TMP_FILES_PATH, "%s%s.xls" % (str(datetime.date.today().year), "年大连理工大学基本科研业务费前沿交叉学科基础科研业务费终审结果汇总表")) workbook.save(save_path) return save_path
def allocProjectToExpert(request, project_list, expert_list, path): message = "" is_first_round = (path == FIRST_ROUND_PATH) if len(project_list) == 0 or len(expert_list) == 0: message = "no project" if len(project_list) == 0 else "no expert" return simplejson.dumps({"message": message, }) project_temp=ProjectSingle.objects.get(project_id =project_list[0]) if is_first_round: if project_temp.project_special.expert_review==None: message = "expert_review_none" return simplejson.dumps({"message": message, }) else: if project_temp.project_special.expert_final_review==None: message = "expert_final_review_none" return simplejson.dumps({"message": message, }) if overloadTest(project_list, expert_list, is_first_round) == False: message = "overload" return simplejson.dumps({"message": message, }) expert_list = [ExpertProfile.objects.get(userid__username = user) for user in expert_list] for project_id in project_list: project = ProjectSingle.objects.get(project_id = project_id) for expert in expert_list: try: re_obj = Re_Project_Expert.objects.get(project = project, expert = expert, is_first_round = is_first_round) re_obj.delete() except: pass finally: re_obj = Re_Project_Expert(project = project, expert = expert, is_first_round = is_first_round) re_obj.save() if is_first_round:table=getScoreTable(project) else: table = getFinalScoreTable(project) table(re_obj = re_obj).save() if path == FIRST_ROUND_PATH: project.project_status = ProjectStatus.objects.get(status = PROJECT_STATUS_APPLICATION_EXPERT_SUBJECT) else: project.project_status = ProjectStatus.objects.get(status = PROJECT_STATUS_FINAL_EXPERT_SUBJECT) project.save() message = "ok" return simplejson.dumps({"message": message, })
def xls_info_basesummary_preview(request,proj_set,specialtype,specialname,eid): """ """ xls_obj, workbook = xls_info_basesummary_preview_gen(request,specialtype) _number= 2 index = 1 for proj_obj in proj_set: teacher = TeacherProfile.objects.get(id = proj_obj.teacher.id) manager = teacher.teacherinfosetting re_project_expert_list = Re_Project_Expert.objects.filter(project_id = proj_obj) row = 1 + _number xls_obj.write(row, 0, unicode(index)) xls_obj.write(row, 1, unicode(proj_obj.title)) xls_obj.write(row, 2, unicode(manager.name)) i = 0 average_score = 0 score_list = [] for re_expert_temp in re_project_expert_list: if eid==TYPE_ALLOC[0]: score_table = getScoreTable(re_expert_temp.project).objects.get_or_create(re_obj = re_expert_temp)[0] if eid == TYPE_FINAL_ALLOC[0]: score_table = getFinalScoreTable(re_expert_temp.project).objects.get_or_create(re_obj = re_expert_temp)[0] if score_table.get_total_score(): if specialtype == 1: score_tmp = score_table.get_total_score() + int(score_table.get_comments()) else: score_tmp = score_table.get_total_score() score_list.append(score_tmp) xls_obj.write(row,3 + i*2,unicode(score_table.get_total_score())) xls_obj.write(row,4 + i*2,unicode(score_table.get_comments())) i += 1 average_score = average(score_list) xls_obj.write(row,3+EXPERT_NUM*2,unicode(average_score)) _number+= 1 index += 1 # write xls file if eid==TYPE_ALLOC[0]: save_path = os.path.join(TMP_FILES_PATH, "%s%s.xls" % (str(datetime.date.today().year), u"年大连理工大学"+ specialname +u"专题基本科研业务经费科研专题项目结题验收初审结果汇总表")) if eid == TYPE_FINAL_ALLOC[0]: save_path = os.path.join(TMP_FILES_PATH, "%s%s.xls" % (str(datetime.date.today().year), u"年大连理工大学"+ specialname +u"专题基本科研业务经费科研专题项目结题验收终审结果汇总表")) workbook.save(save_path) return save_path
def getScore(request, pid): message = "" project = ProjectSingle.objects.get(project_id = pid) is_first_round = True if project.project_status.status == PROJECT_STATUS_FINAL_EXPERT_SUBJECT: is_first_round = False if is_first_round:scoreTableType = getScoreTable(project) else:scoreTableType = getFinalScoreTable(project) comments_index = scoreTableType.has_comments() #scoreFormType = getScoreForm(project) if is_first_round:scoreFormType=getScoreForm(project) else: scoreFormType=getFinalScoreForm(project) scoreList = [] ave_score = {} tem = scoreTableType.objects.all() for re_obj in Re_Project_Expert.objects.filter(Q(project = project) & Q(is_first_round = is_first_round)): table = scoreTableType.objects.get_or_create(re_obj = re_obj)[0] score_row = scoreFormType(instance = table) if table.get_total_score() == 0: continue for i, field in enumerate(score_row): if i == comments_index: continue ave_score[i] = ave_score.get(i, 0) + int(field.value()) score_row.expert_name = re_obj.expert score_row.total_score = table.get_total_score() ave_score["total"] = ave_score.get("total", 0) + score_row.total_score score_row.comments = table.get_comments() scoreList.append(score_row) if len(scoreList): for item in ave_score.items(): ave_score[item[0]] = 1.0 * item[1] / len(scoreList) html = render_to_string("widgets/concluding_data.html", {"scoreList": scoreList, "ave_score": ave_score.values(), "form": scoreFormType, "comments_index": comments_index, }) return simplejson.dumps({"message": message, "html": html,})
def appendAlloc(request, project_id, expert_list, path): message = "" is_first_round = (path == FIRST_ROUND_PATH) if len(expert_list) != 1: message = "error" else: expert = ExpertProfile.objects.get(userid__username = expert_list[0]) project = ProjectSingle.objects.get(project_id = project_id) if Re_Project_Expert.objects.filter(Q(project = project) & Q(expert = expert) & Q(is_first_round = is_first_round)).count() > 0: message = "redundance" else: re_obj = Re_Project_Expert(project = project, expert = expert, is_first_round = is_first_round) re_obj.save() if is_first_round: table = getScoreTable(project) else: table = getFinalScoreTable(project) table(re_obj = re_obj).save() current_site = Site.objects.get_current() site_domain =current_site.domain content = render_to_string('email/email_expert_content.txt',{'site':site_domain,'year':datetime.datetime.today().year,}) send_mail(u'大连理工大学基本科研业务经费管理平台专家评审通知',content,settings.DEFAULT_FROM_EMAIL,[expert.userid.email]) message = "ok" return simplejson.dumps({"message": message, })