Ejemplo n.º 1
0
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,
    })
Ejemplo n.º 2
0
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 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
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
def applicationView(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 = getScoreTable(re_obj.project).objects.get(re_obj = re_obj)
    context = appManage(request, pid, is_submited)
    file_list = getSingleProjectURLList(re_obj.project)[:1]   
    if request.method == "GET":
        score_form = getScoreForm(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/application.html", context)
    else:
        score_form = getScoreForm(re_obj.project)(request.POST, instance = score_table)
        if score_form.is_valid():
            score_form.save()
            return HttpResponseRedirect("/expert/redirect/?is_first_round=1")
        else:
            context.update({
                'score_form': score_form,
                're_obj': re_obj,
                'file_list': file_list,
                'error': score_form.errors,
                "user": "******",
            })
            return render(request, "expert/application.html", context)
Ejemplo n.º 6
0
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, })
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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,
    })
Ejemplo n.º 10
0
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, })
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
def get_single_project_average_score(project):
    is_first_round = True
    if project.project_status.status == PROJECT_STATUS_FINAL_REVIEW_OVER:
        is_first_round = False

    scoreTableType = getScoreTable(project)
    scoreFormType = getScoreForm(project)
    
    ave_score = 0
    item_count = 0

    for re_obj in Re_Project_Expert.objects.filter(Q(project = project) & Q(is_first_round = is_first_round)):
        table = scoreTableType.objects.get(re_obj = re_obj)
        score_row = scoreFormType(instance = table)
        ave_score += sum(field.value() for field in score_row)
        item_count += 1

    if item_count:
        ave_score /= 1.0 * item_count
    return ave_score
Ejemplo n.º 13
0
def get_single_project_average_score(project):
    is_first_round = True
    if project.project_status.status == PROJECT_STATUS_FINAL_REVIEW_OVER:
        is_first_round = False

    scoreTableType = getScoreTable(project)
    scoreFormType = getScoreForm(project)
    
    ave_score = 0
    item_count = 0

    for re_obj in Re_Project_Expert.objects.filter(Q(project = project) & Q(is_first_round = is_first_round)):
        table = scoreTableType.objects.get(re_obj = re_obj)
        score_row = scoreFormType(instance = table)
        ave_score += sum(field.value() for field in score_row)
        item_count += 1

    if item_count:
        ave_score /= 1.0 * item_count
    return ave_score
Ejemplo n.º 14
0
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,})
Ejemplo n.º 15
0
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, })