예제 #1
0
def scored_result(request, forced=False):
    experts = ExpertProfile.objects.filter(group=2017)
    projs = [
        map(lambda y: y.project, x.re_project_expert_set.all())
        for x in experts
    ]
    if not forced:
        for index, projs in enumerate(projs):
            for proj in projs:
                review = proj.re_project_expert_set.all()[0]
                if review.pass_p is False:
                    response = u'项目【{}】未审核,对应专家为:{}\n'.format(
                        proj, review.expert)
                    return simplejson.dumps({
                        'status': 'ERROR',
                        'message': response
                    })
    sorted_project_groups = [
        map(lambda proj: (proj, proj.re_project_expert_set.all()[0].score or \
            not proj.re_project_expert_set.all()[0].pass_p), pg)
        for pg in projs]
    for spg in sorted_project_groups:
        spg.sort(key=lambda x: x[1], reverse=True)
    path = AdminStaffService.get_scored_result_xls_path(
        request, sorted_project_groups)
    return simplejson.dumps({'status': 'SUCCESS', 'path': path})
예제 #2
0
def get_subject_review_list(request, project_id):
    '''
    to get subject evaluate list through project_id
    '''
    #dajax = Dajax()
    review_list = AdminStaffService.GetSubjectReviewList(project_id)
    return simplejson.dumps({'review_list': review_list})
예제 #3
0
def change_subject_grade(request, project_id, changed_grade, page,
                         school_name):
    '''
    change subject grade secretly
    '''

    AdminStaffService.SubjectGradeChange(project_id, changed_grade)
    table = refresh_to_table(page, school_name)
    return simplejson.dumps({'status': '1', 'table': table})
예제 #4
0
def show_result(request):
    message = ""
    path = ""
    try:
        project_list = get_current_project_query_set().filter(
            project_recommend_status__status=RECOMMEND_SECOND_ROUND_PASSED)
        path = AdminStaffService.get_show_result_xls_path(
            request, project_list)
        print project_list.count()
        print path
        message = "ok"
    except:
        message = "fail"

    return simplejson.dumps({"message": message, 'path': path})
예제 #5
0
def NumLimit(request, form):
    dajax = Dajax()
    form = NumLimitForm(deserialize_form(form))
    if form.is_valid():
        school = SchoolDict.objects.get(id=form.cleaned_data["school_name"])
        a_limited_num = form.cleaned_data["a_limited_num"]
        b_limited_num = form.cleaned_data["b_limited_num"]
        try:
            school_obj = SchoolProfile.objects.get(school=school)
            if ProjectPerLimits.objects.filter(school=school_obj).count() == 0:
                projectlimit = ProjectPerLimits(school=school_obj,
                                                number=a_limited_num +
                                                b_limited_num,
                                                a_cate_number=a_limited_num)
                projectlimit.save()
            else:
                object = ProjectPerLimits.objects.get(school=school_obj)
                object.number = a_limited_num + b_limited_num
                object.a_cate_number = a_limited_num
                object.save()

            # num_limit_form = forms.NumLimitForm()
            school_limit_num_list = AdminStaffService.SchoolLimitNumList()
            page = request.GET.get('page')

            context = getContext(school_limit_num_list, page, 'item', 0)
            table = render_to_string(
                "adminStaff/widgets/projectlimitnumsettingsTable.html",
                context)
            return simplejson.dumps({
                'status': '1',
                'table': table,
                'message': u'更新成功'
            })
        except SchoolProfile.DoesNotExist:
            return simplejson.dumps({
                'status': '0',
                'message': u'更新失败,选定的学校没有进行注册'
            })
    else:
        return simplejson.dumps({
            'status': '0',
            'id': form.errors.keys(),
            'message': u'输入错误'
        })
예제 #6
0
def _scored_result(request,
                   group_num=20,
                   expert_per_group=3,
                   project_per_group=134,
                   forced=False):
    experts = ExpertProfile.objects.exclude(Q(group=-1) | Q(group=0))
    expert_groups = [experts.filter(group=i + 1) for i in xrange(group_num)]
    project_groups = [
        map(lambda y: y.project, x[0].re_project_expert_set.all())
        for x in expert_groups
    ]
    if not forced:
        for index, pg in enumerate(project_groups):
            for proj in pg:
                all_scores = proj.re_project_expert_set.all()
                scored_num = all_scores.filter(pass_p=True).count()
                unscored_experts = map(lambda x: x.expert.userid.username,
                                       all_scores.filter(pass_p=False))
                if scored_num != expert_per_group:
                    experts = reduce(lambda x, y: x + '\n' + y,
                                     unscored_experts)
                    response = u'第 %d 组中项目<%s>存在未评分,对应专家为:\n'\
                        % (index+1, proj)
                    response += experts + u'\n请查证。'
                    return simplejson.dumps({
                        'status': 'ERROR',
                        'message': response
                    })
    sorted_project_groups = [
        map(
            lambda proj:
            (proj, proj.re_project_expert_set.all()[0].score,
             proj.re_project_expert_set.all()[1].score,
             proj.re_project_expert_set.all()[2].score,
             reduce(lambda i, j: i + j,
                    map(lambda x: x.score, proj.re_project_expert_set.all()))),
            pg) for pg in project_groups
    ]
    for spg in sorted_project_groups:
        spg.sort(key=lambda x: x[4], reverse=True)
    sorted_project_groups = map(lambda x: x[:50], sorted_project_groups)
    path = AdminStaffService.get_scored_result_xls_path(
        request, sorted_project_groups)
    return simplejson.dumps({'status': 'SUCCESS', 'path': path})
예제 #7
0
def ExpertImport(request, form):
    """
	Import Expert Profile directly without email
	"""
    expert_form = ExpertDispatchForm(deserialize_form(form))
    if expert_form.is_valid():
        password = expert_form.cleaned_data["expert_password"]
        email = expert_form.cleaned_data["expert_email"]
        insitute = expert_form.cleaned_data["expert_insitute"]
        name = email
        person_firstname = expert_form.cleaned_data["person_firstname"]
        if password == "":
            password = email.split('@')[0]
        flag = AdminStaffService.sendemail(request,
                                           name,
                                           person_firstname,
                                           password,
                                           email,
                                           EXPERT_USER,
                                           False,
                                           expert_insitute=insitute)
        if flag:
            message = u"导入成功"
            return simplejson.dumps({
                'field': expert_form.data.keys(),
                'status': '1',
                'message': message
            })
        else:
            message = u"相同权限用户已经存在,中断导入"
            return simplejson.dumps({
                'field': expert_form.data.keys(),
                'status': '1',
                'message': message
            })
    else:
        return simplejson.dumps({
            'field': expert_form.data.keys(),
            'error_id': expert_form.errors.keys(),
            'message': u"输入有误,请检查邮箱的合法性"
        })
예제 #8
0
def SchoolDispatch(request, form):
    #dajax = Dajax()
    school_form = SchoolDispatchForm(deserialize_form(form))
    if school_form.is_valid():
        password = school_form.cleaned_data["school_password"]
        email = school_form.cleaned_data["school_email"]
        name = email.split('@')[0]
        school_name = school_form.cleaned_data["school_name"]
        person_firstname = school_form.cleaned_data["person_firstname"]
        if password == "":
            password = email.split('@')[0]
        flag = AdminStaffService.sendemail(request,
                                           name,
                                           person_firstname,
                                           password,
                                           email,
                                           SCHOOL_USER,
                                           school_name=school_name)
        if flag:
            message = u"发送邮件成功"
            return simplejson.dumps({
                'field': school_form.data.keys(),
                'status': '1',
                'message': message
            })
        else:
            message = u"相同邮件已经发送,中断发送"
            return simplejson.dumps({
                'field': school_form.data.keys(),
                'status': '1',
                'message': message
            })
    else:
        return simplejson.dumps({
            'id': school_form.errors.keys(),
            'message': u"输入有误,请检查邮箱的合法性"
        })
예제 #9
0
def Release_Excel(request):
    path = AdminStaffService.get_xls_path(request)
    return simplejson.dumps({'path': path})