def change_member(request, stugroup_form, origin):
    student_id = stugroup_form.cleaned_data["student_id"]
    student_name = stugroup_form.cleaned_data["student_name"]
    try:
        project = ProjectSingle.objects.get(student__user_id=request.user)
    except:
        raise Http404

    group = project.student_group_set
    managerid=StudentProfile.objects.get(id=project.student_id) #得到负责人的信息
    teammanager = User.objects.get(id=managerid.user_id)
    if filter(lambda x:x==student_id, [student.studentId for student in group.all()]):
        return {'status': '1', 'message': u"替换成员已存在队伍中,请选择删除"}

    loginfo(p=teammanager.first_name,label="teammanager.first_name")
    loginfo(p=student_name,label="student_name")    
    for student in group.all():
        if student.studentId == origin:
            # 如果是更改负责人的信息时需要将first_name内容更新
            if  student.studentName == teammanager.first_name:
                teammanager.first_name = student_name
            student.studentName = student_name
            student.studentId = student_id
            student.save()
            table = refresh_member_table(request)
            ret = {'status': '0', 'message': u"人员变更成功", 'table':table}
            break
    else: # new student
        ret = {'status': '1', 'message': u"输入有误,请刷新后重新输入"}
    return ret
Beispiel #2
0
def finalReportView(request, pid, is_submited=False):
    context = finalReportViewWork(request, pid,
                                  is_submited[SUBMIT_STATUS_FINAL])
    loginfo(p=is_submited, label="is_submited")
    # if context['redirect']:
    #     return HttpResponseRedirect('/teacher/finalinfo')
    return render(request, "college/final.html", context)
def MemberChangeInfo(request, form, origin):
    loginfo(p=origin, label="origin")
    try:
        project = ProjectSingle.objects.get(student__user_id=request.user)
    except:
        raise Http404
    stugroup_form = StudentGroupInfoForm(deserialize_form(form))
    loginfo(p=stugroup_form, label="stugroup_form")
    if not stugroup_form.is_valid():
        ret = {'status': '1',
               'message': u"输入有误,请重新输入"}
    else:
        email = stugroup_form.cleaned_data["email"]
        telephone = stugroup_form.cleaned_data["telephone"]
        classInfo = stugroup_form.cleaned_data["classInfo"]
        student_id= stugroup_form.cleaned_data["student_id"]
        group = project.student_group_set
        for student in group.all():
            if student.studentId == origin :
                print "save successfully"
                student.email = email
                student.telephone = telephone
                student.classInfo = classInfo
                student.studentId = student_id
                student.save()
                table = refresh_member_table(request)
                ret = {'status': '0', 'message': u"人员变更成功", 'table':table}
                break
        else:
            ret = {'status': '1', 'message': u"该成员不存在,请刷新页面"}
    return simplejson.dumps(ret)
def fundBudgetView(request,pid,is_submited):
    context = fundBudgetViewWork(request,pid,is_submited[SUBMIT_STATUS_BUDGET])
    if context['redirect']:
	return HttpResponseRedirect('/teacher/finalinfo')
    context['role'] = 'teacher'
    loginfo(is_submited[SUBMIT_STATUS_TASK])
    return render(request,"teacher/fundbudget.html",context)
Beispiel #5
0
def Release_News(request):
    '''
    Release_News
    '''
    unsubjected = False
    subject_list = ProjectSingle.objects.all().order_by('school').exclude(
        school__schoolName=u'测试用学校')
    for project in subject_list:
        if project.project_grade.grade == GRADE_UN:
            unsubjected = False
            break

    if unsubjected:
        release = False
    else:
        html = refresh_member_table(subject_list)
        release = True
        title = datetime.datetime.today().year
        data = News(news_title=title.__str__() + '年创新项目级别汇总',
                    news_content=html,
                    news_category=NewsCategory.objects.get(
                        category=NEWS_CATEGORY_ANNOUNCEMENT))
        data.save()
    loginfo(p=release, label="release")
    return simplejson.dumps({'release': release})
Beispiel #6
0
def FileDeleteConsistence(request, fid):
    """
    Delete files in history file list
    """
    logger.info("sep delete files" + "**" * 10)
    # check mapping relation
    f = get_object_or_404(HomePagePic, id=fid)

    if request.method == "POST":
        try:
            os.remove(f.pic_obj.url)
            f.delete()
            loginfo("delete success")
        except:
            pass
        return simplejson.dumps({
            "is_deleted": True,
            "message": "delete it successfully!",
            "fid": str(fid)
        })
    else:
        return simplejson.dumps({
            "is_deleted": False,
            "message": "Warning! Only POST accepted!"
        })
Beispiel #7
0
def show_index_get_search_context(request, project_page, new_show=False):
    search_school = request.GET.get('search_school') or ""
    search_year = request.GET.get('search_year') or ""
    search_grade = request.GET.get('search_grade') or ""
    search_keywords = request.GET.get('search_keywords') or ""
    pro_type = ShowProjectSingle if new_show else ProjectSingle

    q1 = (search_year and Q(year=search_year)) or None
    q2 = (search_school and Q(school=search_school)) or None
    q3 = (search_grade and Q(project_grade=search_grade)) or None
    q4 = (search_keywords and  (Q(keywords__icontains=search_keywords) | \
            Q(title__icontains=search_keywords) | Q(background__icontains=search_keywords) \
            | Q(result_overview__icontains=search_keywords))) or None
    qset = filter(lambda x: x != None, [q1, q2, q3, q4])
    loginfo(p=q4, label="in q4")
    loginfo(p=qset, label="in qset")
    if qset:
        qset = reduce(lambda x, y: x & y, qset)
        project_list = pro_type.objects.filter(qset)
    else:
        project_list = pro_type.objects.all()

    context = getContext(project_list, project_page, 'project', page_elems=9)
    context["search_school"] = search_school
    context["search_year"] = search_year
    context["search_grade"] = search_grade

    return context
Beispiel #8
0
def change_member(request, stugroup_form, origin):
    student_id = stugroup_form.cleaned_data["student_id"]
    student_name = stugroup_form.cleaned_data["student_name"]
    try:
        project = ProjectSingle.objects.get(student__user_id=request.user)
    except:
        raise Http404

    group = project.student_group_set
    managerid = StudentProfile.objects.get(id=project.student_id)  #得到负责人的信息
    teammanager = User.objects.get(id=managerid.user_id)
    if filter(lambda x: x == student_id,
              [student.studentId for student in group.all()]):
        return {'status': '1', 'message': u"替换成员已存在队伍中,请选择删除"}

    loginfo(p=teammanager.first_name, label="teammanager.first_name")
    loginfo(p=student_name, label="student_name")
    for student in group.all():
        if student.studentId == origin:
            # 如果是更改负责人的信息时需要将first_name内容更新
            if student.studentName == teammanager.first_name:
                teammanager.first_name = student_name
            student.studentName = student_name
            student.studentId = student_id
            student.save()
            table = refresh_member_table(request)
            ret = {'status': '0', 'message': u"人员变更成功", 'table': table}
            break
    else:  # new student
        ret = {'status': '1', 'message': u"输入有误,请刷新后重新输入"}
    return ret
Beispiel #9
0
def fundBudgetViewWork(request,pid,is_submited,redirect=False):
    fundbudget = ProjectFundBudget.objects.get(project_id = pid)
    project = ProjectSingle.objects.get(project_id = pid)
    # if fundbudget.finance_staff:finance_staff=fundbudget.finance_staff
    # else:finance_staff="未填写"
    # if fundbudget.finance_checktime:finance_checktime=fundbudget.finance_checktime
    # else:finance_checktime="未填写"
    if request.method == "POST":
        fundbudget_form = ProFundBudgetForm(request.POST, instance=fundbudget)
        fundbudgetremarkment_form = ProFundBudgetRemarkmentForm(request.POST,instance=fundbudget)
        if fundbudget_form.is_valid() and fundbudgetremarkment_form.is_valid():
            fundbudgetremarkment_form.save()
            fundbudget_form.save()
            # redirect = True
            status_confirm(request,project)
            loginfo(p=project.project_status,label="status")
        else:
            logger.info("ProFundBudgetForm Valid Failed"+"**"*10)
            logger.info(fundbudget_form.errors)
            logger.info(fundbudgetremarkment_form.errors)
    else:
        fundbudget_form = ProFundBudgetForm(instance=fundbudget)
        fundbudgetremarkment_form=ProFundBudgetRemarkmentForm(instance=fundbudget)
    context = {
        'redirect':redirect,
        'fundbudget_form':fundbudget_form,
        'fundbudgetremarkment_form':fundbudgetremarkment_form,
        'pid':pid,
        'is_submited':is_submited,
        'projectbudget':project.project_budget_max,
        'project':project,
        'fundbudget':fundbudget,
        'showseal':project.project_status.status>=PROJECT_STATUS_TASK_FINANCE_OVER,
    }
    return context
Beispiel #10
0
def MemberChangeInfo(request, form, origin):
    loginfo(p=origin, label="origin")
    try:
        project = ProjectSingle.objects.get(student__user_id=request.user)
    except:
        raise Http404
    stugroup_form = StudentGroupInfoForm(deserialize_form(form))
    loginfo(p=stugroup_form, label="stugroup_form")
    if not stugroup_form.is_valid():
        ret = {'status': '1', 'message': u"输入有误,请重新输入"}
    else:
        email = stugroup_form.cleaned_data["email"]
        telephone = stugroup_form.cleaned_data["telephone"]
        classInfo = stugroup_form.cleaned_data["classInfo"]
        student_id = stugroup_form.cleaned_data["student_id"]
        group = project.student_group_set
        for student in group.all():
            if student.studentId == origin:
                print "save successfully"
                student.email = email
                student.telephone = telephone
                student.classInfo = classInfo
                student.studentId = student_id
                student.save()
                table = refresh_member_table(request)
                ret = {'status': '0', 'message': u"人员变更成功", 'table': table}
                break
        else:
            ret = {'status': '1', 'message': u"该成员不存在,请刷新页面"}
    return simplejson.dumps(ret)
Beispiel #11
0
def status_confirm(request, project):
    identity = request.session.get("auth_role", "")
    loginfo('status_confirm' * 50)
    status_dict = PROGRESS_REVIEW_DICT[project.project_status.status]
    # if project.project_special.review_status:
    #     status_dict =  PROGRESS_REVIEW_DICT[project.project_status.status]
    # else:
    #     status_dict =  PROGRESS_NOT_REVIEW_DICT[project.project_status.status]

    loginfo(NEXT_PROGRESS_PERMISSION_DICT[identity])
    print "cat" * 10
    print NEXT_STATUS
    print "dog" * 10
    print status_dict[NEXT_STATUS]
    if status_dict[NEXT_STATUS] in NEXT_PROGRESS_PERMISSION_DICT[identity]:
        project.submit_date = time.strftime('%Y-%m-%d',
                                            time.localtime(time.time()))
        print "insert" * 100
        set_status(project, status_dict[NEXT_STATUS])
        if PROGRESS_FILE_DICT.get(
                project.project_status.status, None) != None and getattr(
                    project,
                    PROGRESS_FILE_DICT[project.project_status.status]):
            status_confirm(request, project)
    print "heheheh" * 100
    print project.project_status.status
    print PROJECT_STATUS_APPLICATION_COMMIT_OVER
    if project.project_special.name == u"引进人才科研专题" and project.project_status.status == PROJECT_STATUS_APPLICATION_COMMIT_OVER:
        status_confirm(request, project)
    return
Beispiel #12
0
def userauth_settings(request):
    """
    The context processor will add user authorities variables
    into all template
    """
    loginfo(request.META['HTTP_USER_AGENT'])
    userauth = {
                "is_adminstaff": False,
                "is_schooler": False,
                "is_colleger":False,
                "is_experter": False,
                "is_teacher": False,
                "is_finance":False,
                }
    auth_choices= {
        "adminStaff":ADMINSTAFF_USER,
        "school":SCHOOL_USER,
        "college":COLLEGE_USER,
        "teacher":TEACHER_USER,
        "expert":EXPERT_USER,
        "finance":FINANCE_USER,
    }
    identity = request.session.get('auth_role', "")
    userauth["user"]=identity
    if identity == ADMINSTAFF_USER and check_auth(user=request.user, authority=ADMINSTAFF_USER):
        userauth["is_adminstaff"] = True
        try:
            userauth["adminstaff"] = AdminStaffProfile.objects.get(userid=request.user)
        except AdminStaffProfile.DoesNotExist, err:
            loginfo(p=err, label="context AdminStaffProfile")
Beispiel #13
0
def ProjInsituteChange(request, cate):
    try:
        project = ProjectSingle.objects.get(student__user=request.user)
        new_cate = InsituteCategory.objects.get(category=cate)
    except Exception, err:
        loginfo(p=err, label="change project insitute")
        raise Http404
def ProjInsituteChange(request, cate):
    try:
        project = ProjectSingle.objects.get(student__user=request.user)
        new_cate = InsituteCategory.objects.get(category=cate)
    except Exception, err:
        loginfo(p=err, label="change project insitute")
        raise Http404
 def __init__(self,*args,**kwargs):
     request  = kwargs.get("request",None)
     if request != None:
         del kwargs['request']
     super(ScheduleBaseForm, self).__init__(*args, **kwargs)
     if request != None:
         identity = request.session.get('auth_role', "")
         if identity == SCHOOL_USER:
             obj_list = Special.objects.filter(school_user__userid = request.user)
             choice_list=[]
             choice_list.append((-1,"专题类型"))
             for obj in obj_list:
                 choice_list.append((obj.id, obj.name))
             obj_choice = tuple(choice_list)
             loginfo(obj_choice)
             self.fields["special"].choices = obj_choice
         elif identity == COLLEGE_USER:
             obj_list = College.objects.filter(college_user__userid = request.user)
             choice_list=[]
             choice_list.append((-1,"学院"))
             for obj in obj_list:
                 choice_list.append((obj.id, obj.name))
             obj_choice = tuple(choice_list)
             self.fields["college"].choices = obj_choice
             college_status_choices=get_status_choice()
             #college_status_choices = tuple( [(-1, u"项目状态")] + college_status_choices)
             self.fields["status"].choices=college_status_choices
def finalReportViewWork(request, pid, is_submited, redirect=False):
    final = FinalSubmit.objects.get(project_id=pid)
    loginfo(pid)
    project = ProjectSingle.objects.get(project_id=pid)
    achivement_list = ProjectAchivement.objects.filter(project_id=pid)
    datastatics_list = ProjectStatistics.objects.filter(project_id=pid)
    projfundsummary = ProjectFundSummary.objects.get(project_id=pid)
    projfundbudget = ProjectFundBudget.objects.get(project_id=pid)
    projachivementform = ProjectAchivementForm()
    projdatastaticsform = ProjectDatastaticsForm()
    profundsummaryform = ProFundSummaryForm(instance=projfundsummary)
    profundsummaryremarkmentform = ProFundSummaryRemarkmentForm(
        instance=projfundsummary)
    profundbudgetform = ProFundBudgetForm(instance=projfundbudget)
    profundbudgetremarkmentform = ProFundBudgetRemarkmentForm(
        instance=projfundbudget)
    reports = ProgressReport.objects.filter(project_id=pid).order_by("-year")
    progress_form = ProgressForm()
    if not projfundbudget.finance_staff:
        projfundbudget.finance_staff = u"未填写"
    if not projfundbudget.finance_checktime:
        projfundbudget.finance_checktime = u"未填写"
    if not projfundsummary.finance_staff:
        projfundsummary.finance_staff = u"未填写"
    if not projfundsummary.finance_checktime:
        projfundsummary.finance_checktime = "未填写"

    final_form = FinalReportForm(instance=final)

    page = request.GET.get('page')
    page2 = request.GET.get('page2')
    if page == None:
        page = 1
    if page2 == None:
        page2 = 1
    loginfo(p=redirect, label="redirect")
    context = {
        'projachivementform': projachivementform,
        'projdatastaticsform': projdatastaticsform,
        'final': final_form,
        'pid': pid,
        'redirect': redirect,
        'achivement_list': achivement_list,
        'datastatics_list': datastatics_list,
        'projfundsummary': projfundsummary,
        'profundsummaryform': profundsummaryform,
        'fundbudget_form': profundbudgetform,
        'fundbudgetremarkment_form': profundbudgetremarkmentform,
        'profundsummaryremarkmentform': profundsummaryremarkmentform,
        'is_submited': is_submited,
        'projectbudget': project.project_budget_max,
        'project': project,
        'reports': reports,
        'progress_form': progress_form,
        'pro': project,
        'page': page,
        'page2': page2,
        'fundbudget': projfundbudget,
    }
    return context
Beispiel #17
0
def refreshObjectAlloc(request, object):

    if object == "special":

        user_special_info = {}
        for i in SchoolProfile.objects.all():
            user_special_info[i] = []
        for i in Special.objects.all():
            if i.school_user:
                user_special_info[i.school_user].append(i.name)
        instance = {
            'object_name':object,    
            'object_chinese_name':'专题',
            'user_object_info':user_special_info,
        }
        return render_to_string("adminStaff/widgets/object_alloc.html", {'instance': instance})
    elif object == "college":
        user_college_info = {}

        for i in CollegeProfile.objects.all():
            user_college_info[i] = []

        for i in College.objects.all():
            if i.college_user:
                user_college_info[i.college_user].append(i.name)
        instance = {
            'object': object,
            'object_chinese_name':'学院',
            'user_object_info':user_college_info,
        }
        return render_to_string("adminStaff/widgets/object_alloc.html", {'instance': instance})

    else:
        loginfo("error in refreshObjectAlloc")
def AllocEmail(request,form,param):
    form = EmailForm(deserialize_form(form),request=request)
    if form.is_valid():
        try:
            if param in TYPE_ALLOC:
                proj_list = ProjectSingle.objects.filter(Q(project_special=form.cleaned_data['special']) & Q(project_status__status = PROJECT_STATUS_APPLICATION_EXPERT_SUBJECT))
            elif param in TYPE_FINAL_ALLOC:
                proj_list = ProjectSingle.objects.filter(Q(project_special=form.cleaned_data['special']) & Q(project_status__status = PROJECT_STATUS_FINAL_EXPERT_SUBJECT))
            else:
                raise ValueError('')
        except:
            return simplejson.dumps({ 'status':'2', 'message':u"发送失败"})
        if 1:
            recipient_list=[]
            expert_group=[]
            for project in proj_list:
                print project
                p_e_group=Re_Project_Expert.objects.filter(project=project)
                expert_group.extend([item.expert for item in p_e_group])
            loginfo(len(expert_group))
            expert_group=list(set(expert_group))
            loginfo(len(expert_group))
            recipient_list.extend([item.userid.email for item in expert_group])
            send_mail(form.cleaned_data["mail_title"],form.cleaned_data["mail_content"],settings.DEFAULT_FROM_EMAIL,recipient_list)
            return simplejson.dumps({ 'status':'1', 'message':u"专家发送完成"})
    else:
        return simplejson.dumps({ 'status':'0', 'message':u"发送失败",'table':refresh_alloc_email_form(form)})
def info_result_xls(request,project_list):
    """
    """
    # def _format_index(i):
    #     i = str(i)
    #     i = '0' * (3-len(i)) + i
    #     return i

    def _format_number(i):
        i = str(i)
        i = '0' * (4-len(i)) + i
        return i

    # name_code = '2013' + request.user.username
    # loginfo(p=teammanager.first_name, label="get first_name")
    # school_prof = SchoolProfile.objects.get(userid=request.user)
    proj_set = project_list
    xls_obj, workbook = info_xls_province_gen()

    # _index = 1
    _number= 1
    for proj_obj in proj_set:
        teammember = get_studentmessage(proj_obj)       

        pro_type = PreSubmit if proj_obj.project_category.category == CATE_INNOVATION else PreSubmitEnterprise
        fin_type = ("15000", "5000", "10000") if proj_obj.financial_category.category == FINANCIAL_CATE_A else ("10000", "0", "10000")
        try:
            innovation = pro_type.objects.get(project_id=proj_obj.project_id)
        except Exception, err:
            loginfo(p=err, label="get innovation")
            loginfo(p=proj_obj.project_category.category, label="project category")
        # if _index==1:
        #     schoolname = proj_obj.school
        #     name_code = get_shcoolcode(schoolname)
        # if schoolname!=proj_obj.school:
        #     _index=1
        #     schoolname = proj_obj.school
        #     name_code = get_shcoolcode(schoolname)   

        row = 4 + _number
        xls_obj.write(row, 0, "%s" % _format_number(_number))
        xls_obj.write(row, 1, unicode(proj_obj.school))
        xls_obj.write(row, 2, unicode(proj_obj.project_code))
        xls_obj.write(row, 3, unicode(proj_obj.title))
        xls_obj.write(row, 4, unicode(proj_obj.financial_category))
        xls_obj.write(row, 5, unicode(proj_obj.project_category))
        xls_obj.write(row, 6, unicode(teammember['manager_name']))# 负责人
        xls_obj.write(row, 7, unicode(teammember['manager_studentid'])) # 学号
        xls_obj.write(row, 8, unicode(teammember['member_number'])) # 学生人数
        xls_obj.write(row, 9, unicode(teammember['othermember'])) # 项目其他成员
        xls_obj.write(row, 10, unicode(proj_obj.inspector))
        xls_obj.write(row, 11, unicode(proj_obj.inspector_title)) # 指导老师职称
        xls_obj.write(row, 12, fin_type[0]) # 经费
        xls_obj.write(row, 13, fin_type[1]) # 经费
        xls_obj.write(row, 14, fin_type[2]) # 经费
        xls_obj.write(row, 15, unicode(proj_obj.insitute))
        xls_obj.write_merge(row, row, 16, 18, unicode(innovation.proj_introduction)) # both enterprise and innovation has innovation attr

        # _index += 1
        _number+= 1
def login_redirect(request, identity):
    """
    When the user login, it will decide to jump the according page, in other
    words, school user will be imported /school/ page, if the user have many
    authorities, the system will jump randomly
    """
    #TODO: I will use reverse function to redirect, like school and expert

    loginfo(identity)
    if check_auth(request.user, identity):
        loginfo(request.user)
        pass
    else:
        try:
            del request.session['auth_role']
        except:
            pass
        logout(request)
        return HttpResponseRedirect('/identityerror')
    if identity == ADMINSTAFF_USER:
        redirect_url = '/' + identity + '/' + "studentmanage"
    else:
        redirect_url = '/' + identity + '/' + "homepage"
    request.session['auth_role'] = identity
    return HttpResponseRedirect(redirect_url)
def show_index_get_search_context(request, project_page,new_show = False):
    search_school = request.GET.get('search_school') or ""
    search_year = request.GET.get('search_year') or ""
    search_grade = request.GET.get('search_grade') or ""
    search_keywords=request.GET.get('search_keywords') or ""
    pro_type = ShowProjectSingle if new_show else ProjectSingle
    
    q1 = (search_year and Q(year=search_year)) or None
    q2 = (search_school and Q(school=search_school)) or None
    q3 = (search_grade and Q(project_grade=search_grade)) or None
    q4 = (search_keywords and  (Q(keywords__icontains=search_keywords) | \
            Q(title__icontains=search_keywords) | Q(background__icontains=search_keywords) \
            | Q(result_overview__icontains=search_keywords))) or None
    qset = filter(lambda x: x != None, [q1, q2, q3,q4])
    loginfo(p=q4, label="in q4")
    loginfo(p=qset, label="in qset")
    if qset:
        qset = reduce(lambda x, y: x & y, qset)
        project_list = pro_type.objects.filter(qset)
    else:
        project_list = pro_type.objects.all()

    context = getContext(project_list, project_page, 'project', page_elems=9)
    context["search_school"] = search_school
    context["search_year"] = search_year
    context["search_grade"] = search_grade

    return context
Beispiel #22
0
def achivementChange(request,form,achivementid,pid,is_submited):

    achivementform = ProjectAchivementForm(deserialize_form(form))
    projectsingle = ProjectSingle.objects.get(project_id=pid)
    finalsubmit = FinalSubmit.objects.get(project_id = projectsingle)
    message=""
    if achivementform.is_valid():
        achivementtitle = achivementform.cleaned_data["achivementtitle"]
        mainmember = achivementform.cleaned_data["mainmember"]
        introduction = achivementform.cleaned_data["introduction"]
        remarks = achivementform.cleaned_data["remarks"]
        achivementtype = achivementform.cleaned_data["achivementtype"]
        achivementtype=AchivementTypeDict.objects.get(achivementtype=achivementtype)
        if achivementid == 0:
            new_achivement = ProjectAchivement(achivementtitle=achivementtitle,mainmember=achivementtitle,introduction=introduction,remarks=remarks,
                achivementtype=achivementtype,project_id=projectsingle)
            new_achivement.save()
            message = u"新的研究成果添加成功"
            loginfo(p=achivementtitle,label="achivementtitle")
        else:
            old_achivement = ProjectAchivement.objects.get(content_id=achivementid)
            old_achivement.achivementtitle = achivementtitle
            old_achivement.mainmember = mainmember
            old_achivement.introduction = introduction
            old_achivement.remarks = remarks
            old_achivement.achivementtype = achivementtype
            old_achivement.save()
            message = u"修改成功"
    else:
        logger.info("achivementform Valid Failed"+"**"*10)
        logger.info(achivementform.errors)
        message = u"数据没有填完整,请重新填写"
    table = refresh_achivement_table(request,pid,is_submited) 
    ret={'table':table,'message':message,}
    return simplejson.dumps(ret)
def login_redirect(request,identity):
    """
    When the user login, it will decide to jump the according page, in other
    words, school user will be imported /school/ page, if the user have many
    authorities, the system will jump randomly
    """
    #TODO: I will use reverse function to redirect, like school and expert

    
    loginfo(identity)
    if check_auth(request.user,identity):
        loginfo(request.user)
        pass
    else:
        try:
            del request.session['auth_role']
        except:
            pass
        logout(request)
        return HttpResponseRedirect('/identityerror')
    if identity==ADMINSTAFF_USER:
        redirect_url = '/'+identity+'/'+"studentmanage"
    else:
        redirect_url = '/'+identity+'/'+"homepage"
    request.session['auth_role'] = identity
    return HttpResponseRedirect(redirect_url)
Beispiel #24
0
 def __init__(self,*args,**kwargs):
     request  = kwargs.get("request",None)
     if request != None:
         del kwargs['request']
     super(ScheduleBaseForm, self).__init__(*args, **kwargs)
     if request != None:
         identity = request.session.get('auth_role', "")
         if identity == SCHOOL_USER:
             obj_list = Special.objects.filter(school_user__userid = request.user)
             choice_list=[]
             choice_list.append((-1,"专题类型"))
             for obj in obj_list:
                 choice_list.append((obj.id, obj.name))
             obj_choice = tuple(choice_list)
             loginfo(obj_choice)
             self.fields["special"].choices = obj_choice
         elif identity == COLLEGE_USER:
             obj_list = College.objects.filter(college_user__userid = request.user)
             choice_list=[]
             choice_list.append((-1,"学院"))
             for obj in obj_list:
                 choice_list.append((obj.id, obj.name))
             obj_choice = tuple(choice_list)
             self.fields["college"].choices = obj_choice
             college_status_choices=get_status_choice()
             college_status_choices = tuple( [(-1, u"项目状态")] + college_status_choices)
             self.fields["status"].choices=college_status_choices
Beispiel #25
0
def login_redirect(request,identity=5):
    """
    When the user login, it will decide to jump the according page, in other
    words, school user will be imported /school/ page, if the user have many
    authorities, the system will jump randomly
    """
    #TODO: I will use reverse function to redirect, like school and expert
    '''
    loginfo(identity)
    if identity == "adminUser":
        if check_auth(request.user,ADMINSTAFF_USER):
            identity = ADMINSTAFF_USER
        elif check_auth(request.user,FINANCE_USER):
            identity = FINANCE_USER
        elif check_auth(request.user,SCHOOL_USER):
            identity = SCHOOL_USER
        else:
            logout(request)
            return render_to_response('registration/logentry_error.html', context_instance=RequestContext(request))
    '''
    if check_auth(request.user,identity):
        loginfo(request.user)
        pass
    else:
        try:
            del request.session['auth_role']
        except:
            pass
        logout(request)
        return render_to_response('registration/logentry_error.html', context_instance=RequestContext(request))
    redirect_url = '/'+identity+'/'
    request.session['auth_role'] = identity
    loginfo(redirect_url)
    return HttpResponseRedirect(redirect_url)
Beispiel #26
0
def allocObject(request, object, user, alloced):

    filter_user = user
    if object == "special":
        user = SchoolProfile.objects.filter(userid__username = filter_user)[0]
    elif object == "college":

        user = CollegeProfile.objects.filter(userid__username = filter_user)[0]
    else:
        loginfo("error in allocObject")

    Object = getObject(object)
    objs = Object.objects.all()
    for o in objs:
        if object == "special":
            if alloced.count(o.name):
                o.school_user = user
            elif o.school_user == user:
                o.school_user = None
            o.save()
        elif object == "college":
            if alloced.count(o.name):
                o.college_user = user
            elif o.college_user == user:
                o.college_user = None
            o.save()
        else:
            loginfo("error in allocObject")


    return simplejson.dumps({'status':'1' ,
        'object_alloc': refreshObjectAlloc(request, object),
        'object_table': refreshObjectTable(request, object),
        })
def fundBudgetViewWork(request,pid,is_submited,redirect=False):
    fundbudget = ProjectFundBudget.objects.get(project_id = pid)
    project = ProjectSingle.objects.get(project_id = pid)
    # if fundbudget.finance_staff:finance_staff=fundbudget.finance_staff
    # else:finance_staff="未填写"
    # if fundbudget.finance_checktime:finance_checktime=fundbudget.finance_checktime
    # else:finance_checktime="未填写"
    if request.method == "POST":
        fundbudget_form = ProFundBudgetForm(request.POST, instance=fundbudget)
        fundbudgetremarkment_form = ProFundBudgetRemarkmentForm(request.POST,instance=fundbudget)
        if fundbudget_form.is_valid() and fundbudgetremarkment_form.is_valid():
            fundbudgetremarkment_form.save()
            fundbudget_form.save()
            # redirect = True
            status_confirm(request,project)
            loginfo(p=project.project_status,label="status")
        else:
            logger.info("ProFundBudgetForm Valid Failed"+"**"*10)
            logger.info(fundbudget_form.errors)
            logger.info(fundbudgetremarkment_form.errors)
    else:
        fundbudget_form = ProFundBudgetForm(instance=fundbudget)
        fundbudgetremarkment_form=ProFundBudgetRemarkmentForm(instance=fundbudget)
    context = {
        'redirect':redirect,
        'fundbudget_form':fundbudget_form,
        'fundbudgetremarkment_form':fundbudgetremarkment_form,
        'pid':pid,
        'is_submited':is_submited,
        'projectbudget':project.project_budget_max,
        'project':project,
        'fundbudget':fundbudget,
        'showseal':project.project_status.status>=PROJECT_STATUS_TASK_FINANCE_OVER,
    }
    return context
Beispiel #28
0
def fileUploadManageView(request, pid, is_submited):
    print "haha"*100
    context = fileUploadManage(request, pid, is_submited)
    context['user'] = "******"
    # is_submited = False
    context['is_submited'] = is_submited
    loginfo(p=context['files'],label="files")
    return render(request, "college/file_upload.html", context)
Beispiel #29
0
def fileUploadManageView(request, pid, is_submited):
    print "haha" * 100
    context = fileUploadManage(request, pid, is_submited)
    context['user'] = "******"
    # is_submited = False
    context['is_submited'] = is_submited
    loginfo(p=context['files'], label="files")
    return render(request, "college/file_upload.html", context)
Beispiel #30
0
def student_view(request):

    try:
        student = get_object_or_404(StudentProfile, user=request.user)
        project = student.projectsingle
    except Exception, err:
        loginfo(p=err, label="student home view")
        raise Http404
Beispiel #31
0
def info_xls(request):
    """
    """
    def _format_index(i):
        i = str(i)
        i = '0' * (4 - len(i)) + i
        return i

    # loginfo(p=teammanager.first_name, label="get first_name")
    school_prof = SchoolProfile.objects.get(userid=request.user)
    proj_set = get_current_project_query_set().filter(
        school=school_prof.school,
        year=get_current_year()).order_by('project_code')
    xls_obj, workbook = info_xls_school_gen(school_prof)

    _index = 1
    for proj_obj in proj_set:
        teammember = get_studentmessage(proj_obj)

        pro_type = PreSubmit if proj_obj.project_category.category == CATE_INNOVATION else PreSubmitEnterprise
        fin_type = (
            "15000", "5000", "10000"
        ) if proj_obj.financial_category.category == FINANCIAL_CATE_A else (
            "10000", "0", "10000")
        try:
            innovation = pro_type.objects.get(project_id=proj_obj.project_id)
        except Exception, err:
            loginfo(p=err, label="get innovation")
            loginfo(p=proj_obj.project_category.category,
                    label="project category")

        row = 4 + _index
        # pro_code = name_code+_format_index(_index)

        #保存项目编号
        # project_temp = ProjectSingle.objects.get(project_id = proj_obj.project_id)
        # project_temp.project_code = pro_code
        # project_temp.save()

        xls_obj.write(row, 0, unicode(proj_obj.project_code))
        xls_obj.write(row, 1, unicode(proj_obj.title))
        xls_obj.write(row, 2, unicode(proj_obj.project_grade))
        xls_obj.write(row, 3, unicode(proj_obj.project_category))
        xls_obj.write(row, 4, unicode(teammember['manager_name']))  # 负责人
        xls_obj.write(row, 5, unicode(teammember['manager_studentid']))  # 学号
        xls_obj.write(row, 6, unicode(teammember['member_number']))  # 学生人数
        xls_obj.write(row, 7, unicode(teammember['othermember']))  # 项目其他成员
        xls_obj.write(row, 8, unicode(proj_obj.inspector))
        xls_obj.write(row, 9, unicode(proj_obj.inspector_title))  # 指导老师职称
        xls_obj.write(row, 10, fin_type[0])  # 经费
        xls_obj.write(row, 11, fin_type[1])  # 经费
        xls_obj.write(row, 12, fin_type[2])  # 经费
        xls_obj.write(row, 13, unicode(proj_obj.insitute))
        xls_obj.write_merge(
            row, row, 14, 17, unicode(innovation.proj_introduction)
        )  # both enterprise and innovation has innovation attr

        _index += 1
Beispiel #32
0
def finalReportViewWork(request,pid,is_submited,redirect=False):
    final = FinalSubmit.objects.get( project_id = pid)
    loginfo(pid)
    project = ProjectSingle.objects.get( project_id = pid)
    achivement_list = ProjectAchivement.objects.filter( project_id = pid )
    datastatics_list = ProjectStatistics.objects.filter( project_id = pid )
    projfundsummary = ProjectFundSummary.objects.get( project_id = pid )
    projfundbudget = ProjectFundBudget.objects.get( project_id = pid)
    projachivementform  = ProjectAchivementForm()
    projdatastaticsform = ProjectDatastaticsForm()
    profundsummaryform = ProFundSummaryForm(instance=projfundsummary)
    profundsummaryremarkmentform = ProFundSummaryRemarkmentForm(instance=projfundsummary)
    profundbudgetform = ProFundBudgetForm( instance =projfundbudget )
    profundbudgetremarkmentform = ProFundBudgetRemarkmentForm(instance = projfundbudget)
    reports = ProgressReport.objects.filter(project_id = pid).order_by("-year")
    progress_form = ProgressForm()
    if not projfundbudget.finance_staff:
        projfundbudget.finance_staff = u"未填写"
    if not projfundbudget.finance_checktime:
        projfundbudget.finance_checktime = u"未填写"
    if not projfundsummary.finance_staff:
        projfundsummary.finance_staff = u"未填写" 
    if not projfundsummary.finance_checktime:
        projfundsummary.finance_checktime="未填写"

    final_form = FinalReportForm(instance=final)

    page = request.GET.get('page')
    page2 = request.GET.get('page2')
    if page == None:
        page = 1
    if page2 == None:
        page2 = 1
    loginfo(p=redirect, label="redirect")
    context = {
        'projachivementform':projachivementform,
        'projdatastaticsform':projdatastaticsform,
        'final': final_form,
        'pid':pid,
        'redirect':redirect,
        'achivement_list':achivement_list,
        'datastatics_list':datastatics_list,
        'projfundsummary':projfundsummary,
        'profundsummaryform':profundsummaryform,
        'fundbudget_form':profundbudgetform,
        'fundbudgetremarkment_form':profundbudgetremarkmentform,
        'profundsummaryremarkmentform':profundsummaryremarkmentform,
        'is_submited':is_submited,
        'projectbudget':project.project_budget_max,
        'project':project,
        'reports': reports,
        'progress_form': progress_form,
        'pro':project,
        'page':page,
        'page2':page2,
        'fundbudget':projfundbudget,
    }
    return context
def get_xls_path(request, exceltype, proj_set, specialname="", eid=""):
    """
        exceltype = EXCELTYPE_DICT 导出表类型
        proj_set 筛选出导出的项目集
        specialtype 基本科研业务经费科研专题项目的
    """

    loginfo(p=proj_set, label="get_xls_path")
    loginfo(p=exceltype, label="exceltype")
    print exceltype
    EXCELTYPE_DICT = EXCELTYPE_DICT_OBJECT()
    if exceltype == EXCELTYPE_DICT.INFO_COLLECTION:
        file_path = xls_info_collection(request, proj_set, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FUNDSUMMARY:
        file_path = xls_info_fundsummay(request, proj_set, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_SUMMARY:
        file_path = xls_info_summary(request, proj_set, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FUNDBUDGET:
        file_path = xls_info_fundbudget(request, proj_set, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_TEACHERINFO:
        file_path = xls_info_teacherinfo(request, eid)
    #初审表
    elif exceltype == EXCELTYPE_DICT.INFO_BASESUMMARYSCIENCE_PREVIEW:
        file_path = xls_info_basesummary_preview(request, proj_set, 1,
                                                 specialname, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FRONT_PREVIEW:
        file_path = xls_info_basesummary_preview(request, proj_set, 2,
                                                 specialname, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_OUTSTANDING_PREVIEW:
        file_path = xls_info_basesummary_preview(request, proj_set, 3,
                                                 specialname, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_HUMANITY_PREVIEW:
        file_path = xls_info_humanity_preview(request, proj_set, eid, 1)
    elif exceltype == EXCELTYPE_DICT.INFO_IMPORTANTPROJECT_PREVIEW:
        file_path = xls_info_importantproject_preivew(request, proj_set, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_LABORATORY_PREVIEW:
        file_path = xls_info_laboratory_preview(request, proj_set, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_BASESUMMARY_PREVIEW:
        file_path = xls_info_humanity_preview(request, proj_set, eid, 2)
    #终审表
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_BASESUMMARY_PREVIEW:
        file_path = xls_info_humanity_preview(request, proj_set, eid, 2)
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_HUMANITY_PREVIEW:
        file_path = xls_info_humanity_preview(request, proj_set, eid, 1)
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_IMPORTANTPROJECT_PREVIEW:
        file_path = xls_info_importantproject_preivew(request, proj_set, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_LABORATORY_PREVIEW:
        file_path = xls_info_laboratory_preview(request, proj_set, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_BASESUMMARYSCIENCE_PREVIEW:
        file_path = xls_info_basesummary_preview(request, proj_set, 1,
                                                 specialname, eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_FRONT_PREVIEW:
        #前沿交叉终审表
        file_path = xls_info_final_front_preview(request, proj_set)
    else:  #EXCELTYPE_DICT.INFO_FINAL_OUTSTANDING_PREVIEW
        file_path = xls_info_basesummary_preview(request, proj_set, 3,
                                                 specialname, eid)
    return MEDIA_URL + "tmp" + file_path[len(TMP_FILES_PATH):]
def create_newproject(request, new_user, managername,financial_cate=FINANCIAL_CATE_UN, pid=None):
    """
    create a new project for this usr, it is student profile
    """
    #TODO: add some necessary decorators

    student = get_object_or_404(StudentProfile, user=new_user)

    try:
        if pid == None:
            pid = uuid.uuid4()
        project = ProjectSingle()
        project.project_id = pid
        project.adminuser = request.user
        project.student = student
        project.school = student.school.school
        project.year = get_current_year()
        project.project_grade = ProjectGrade.objects.get(grade=GRADE_UN)
        project.project_status = ProjectStatus.objects.get(status=STATUS_FIRST)
        project.project_category = ProjectCategory.objects.all()[0]
        project.insitute = InsituteCategory.objects.all()[0]
        project.financial_category= FinancialCategory.objects.get(category=financial_cate)
        project.save()

        #create team manager
        new_student = Student_Group(studentName = managername,
                                    project=project)
        new_student.save()        

        # create presubmit and final report
        pre = PreSubmit()
        pre.content_id = uuid.uuid4()
        pre.project_id = project
        pre.save()

        # create presubmit and final report
        enterpriseTeacher = Teacher_Enterprise()
        enterpriseTeacher.save()
        pre = PreSubmitEnterprise()
        pre.enterpriseTeacher = enterpriseTeacher
        pre.content_id = uuid.uuid4()
        pre.project_id = project
        pre.save()
        
        # create midsubmit
        mid = MidSubmit()
        mid.content_id = uuid.uuid4()
        mid.project_id = project
        mid.save()

        #create final report
        final = FinalSubmit()
        final.content_id = uuid.uuid4()
        final.project_id = project
        final.save()
    except Exception, err:
        loginfo(p=err, label="creat a project for the user")
        return False
Beispiel #35
0
def finalReportView(request,pid,is_submited):
    context = finalReportViewWork(request,pid,is_submited[SUBMIT_STATUS_FINAL])
    context = dict(context, **fileUploadManage(request, pid, is_submited))
    context['is_submited'] = is_submited
    context['user'] = "******"
    loginfo(p=is_submited,label="is_submited")
    if context['redirect']:
		return HttpResponseRedirect('/teacher/finalinfo')
    return render(request,"school/final.html",context)
Beispiel #36
0
def DispatchDelete(request,username,identity,page,search_form):
    user = User.objects.get(username=username)
    loginfo(user)
    if not user.is_active:
        user.delete()
        table = refresh_user_table(request,identity,search_form,page)
        return simplejson.dumps({'status':'1', 'message':u"删除用户成功",'table':table})
    else:
        return simplejson.dumps({'status':'0', 'message':u"用户已激活,不能删除"})
 def wrappered_method(request, *args, **kwargs):
     #check time control
     identity = request.session.get('auth_role', "")
     is_submited = False
     if identity == ADMINSTAFF_USER and check_auth(user=request.user, authority=ADMINSTAFF_USER):
         is_submited={SUBMIT_STATUS_APPLICATION:True,
              SUBMIT_STATUS_TASK:True,
              SUBMIT_STATUS_PROGRESS:True,
              SUBMIT_STATUS_FINAL:True,
              SUBMIT_STATUS_REVIEW:True,
              SUBMIT_STATUS_BUDGET:True,
              SUBMIT_STATUS_AUDITE:True,
             }
     elif identity == FINANCE_USER and check_auth(user=request.user, authority=FINANCE_USER):
         is_submited={SUBMIT_STATUS_APPLICATION:True,
              SUBMIT_STATUS_TASK:True,
              SUBMIT_STATUS_PROGRESS:True,
              SUBMIT_STATUS_FINAL:True,
              SUBMIT_STATUS_REVIEW:True,
              SUBMIT_STATUS_BUDGET:True,
              SUBMIT_STATUS_AUDITE:True,
             }
     elif identity == SCHOOL_USER and check_auth(user=request.user, authority=SCHOOL_USER):
         is_submited={SUBMIT_STATUS_APPLICATION:True,
              SUBMIT_STATUS_TASK:True,
              SUBMIT_STATUS_PROGRESS:True,
              SUBMIT_STATUS_FINAL:True,
              SUBMIT_STATUS_REVIEW:True,
              SUBMIT_STATUS_BUDGET:False,
              SUBMIT_STATUS_AUDITE:False,
             }
     elif identity == COLLEGE_USER and check_auth(user=request.user, authority=COLLEGE_USER):
         is_submited={SUBMIT_STATUS_APPLICATION:True,
              SUBMIT_STATUS_TASK:True,
              SUBMIT_STATUS_PROGRESS:True,
              SUBMIT_STATUS_FINAL:True,
              SUBMIT_STATUS_REVIEW:True,
              SUBMIT_STATUS_BUDGET:False,
              SUBMIT_STATUS_AUDITE:False,
             }
     elif identity == EXPERT_USER and check_auth(user=request.user, authority=EXPERT_USER):
         is_submited={SUBMIT_STATUS_APPLICATION:True,
              SUBMIT_STATUS_TASK:True,
              SUBMIT_STATUS_PROGRESS:True,
              SUBMIT_STATUS_FINAL:True,
              SUBMIT_STATUS_REVIEW:True,
              SUBMIT_STATUS_BUDGET:False,
              SUBMIT_STATUS_AUDITE:False,
             }
     elif identity == TEACHER_USER and check_auth(user=request.user, authority=TEACHER_USER):
         pro = ProjectSingle.objects.get(project_id = kwargs["pid"])
         is_submited = self.get_submit_status(pro);
     loginfo(p=is_submited, label="check_submit_status decorator, is_submited")
     kwargs["is_submited"] = is_submited
     response = method(request, *args, **kwargs)
     return response
Beispiel #38
0
def finalReportView(request, pid, is_submited):
    context = finalReportViewWork(request, pid,
                                  is_submited[SUBMIT_STATUS_FINAL])
    context = dict(context, **fileUploadManage(request, pid, is_submited))
    context['is_submited'] = is_submited
    context['user'] = "******"
    loginfo(p=is_submited, label="is_submited")
    if context['redirect']:
        return HttpResponseRedirect('/teacher/finalinfo')
    return render(request, "school/final.html", context)
Beispiel #39
0
 def __call__(self, request, *args, **kwargs):
     loginfo(p=kwargs, label="only_user_required args")
     pid = kwargs.get("pid", None)
     is_passed = self.check_auth_op(pid, request)
     loginfo(p=is_passed, label="only_user_required decorator")
     if is_passed:
         response = self.method(request, *args, **kwargs)
         return response
     else:
         return HttpResponseRedirect(reverse('school.views.home_view'))
Beispiel #40
0
 def get_established_time(self):
     """
     Get estabilshed time from database
     """
     control = ProjectControl.objects.all()
     loginfo(p=control, label="get_established_time")
     if len(control) == 0:
         return None
     else:
         return control[0]
Beispiel #41
0
 def wrappered_method(request, *args, **kwargs):
     is_passed = self.check_auth_op(request)
     loginfo(p=is_passed, label="authority_required decorator")
     if is_passed:
         response = method(request, *args, **kwargs)
         return response
     else:
         # TODO: add a custom 403 page
         return HttpResponseRedirect(
             reverse('backend.errorviews.error403'))
Beispiel #42
0
def finalReportView(request,pid,is_submited={}):
    print "YYA" * 10
    context = finalReportViewWork(request,pid,is_submited[SUBMIT_STATUS_FINAL])
    context = dict(context, **fileUploadManage(request, pid,is_submited))
    context['is_submited'] = is_submited
    context['user'] = "******"
    loginfo(p=is_submited,label="is_submited")
    # if context['redirect']:
    #     return HttpResponseRedirect('/teacher/finalinfo')
    return render(request,"adminStaff/final.html",context)
Beispiel #43
0
def xls_info_collection(request,proj_set,eid):
    """
    """

    xls_obj, workbook = xls_info_collection_gen()

    _number= 1
    for proj_obj in proj_set:
        try:
            teacher = TeacherProfile.objects.get(id = proj_obj.teacher.id)
            manager = teacher.teacherinfosetting
            projectMembers = ProjectMember.objects.filter(project=proj_obj)
            loginfo(p=manager,label="manager")
            row = 1 + _number
            xls_obj.write(row, 0, unicode(proj_obj.title)) 
            xls_obj.write(row, 1, unicode(proj_obj.project_code)) 
            xls_obj.write(row, 2, unicode(proj_obj.science_type)) 
            xls_obj.write(row, 3, unicode(proj_obj.trade_code).split()[0])
            xls_obj.write(row, 4, unicode(proj_obj.subject).split()[1])
            xls_obj.write(row, 5, unicode(proj_obj.subject).split()[0])  
            xls_obj.write(row, 6, unicode(proj_obj.start_time)) 
            xls_obj.write(row, 7, unicode(proj_obj.end_time))
            xls_obj.write(row, 8, unicode(proj_obj.approval_year))
            xls_obj.write(row, 9, proj_obj.project_status.get_export_str()) 
            xls_obj.write(row, 10, unicode(proj_obj.project_special))
            xls_obj.write(row, 11, unicode(BasisContent.objects.get(project=proj_obj).basis))
            xls_obj.write(row, 12, unicode(manager.name)) 
            xls_obj.write(row, 13, unicode(manager.get_sex_display())) 
            xls_obj.write(row, 14, unicode(manager.birth)) 
            xls_obj.write(row, 15, unicode(manager.get_target_type_display())) 
            xls_obj.write(row, 16, unicode(manager.get_degree_display()))
            xls_obj.write(row, 17, unicode(manager.get_title_display()))  
            xls_obj.write(row, 18, unicode(manager.get_position_display())) 
            xls_obj.write(row, 19, unicode(manager.get_base_type_display()))
            xls_obj.write(row, 20, unicode(manager.base_name))
            if proj_obj.project_status.status >= PROJECT_STATUS_FINAL_SCHOOL_OVER:
                xls_obj.write(row, 25, unicode(proj_obj.finalsubmit.project_summary))
            else:
                try:
                    xls_obj.write(row, 25, unicode(ProgressReport.objects.filter(project_id = proj_obj).order_by("-year")[0].summary))
                except:
                    pass
            for i,member in enumerate(projectMembers):
                xls_obj.write(row+i, 21, unicode(member.name))
                xls_obj.write(row+i, 22, unicode(member.birth_year))
                xls_obj.write(row+i, 23, unicode(member.professional_title))
                xls_obj.write(row+i, 24, unicode(member.executive_position))
            pass
        except:
            pass
        _number+= projectMembers.count() if projectMembers.count()!=0 else 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
Beispiel #44
0
def xls_info_collection(request,proj_set,eid):
    """
    """

    xls_obj, workbook = xls_info_collection_gen()

    _number= 1
    for proj_obj in proj_set:
        try:
            teacher = TeacherProfile.objects.get(id = proj_obj.teacher.id)
            manager = teacher.teacherinfosetting
            projectMembers = ProjectMember.objects.filter(project=proj_obj)
            loginfo(p=manager,label="manager")
            row = 1 + _number
            xls_obj.write(row, 0, unicode(proj_obj.title)) 
            xls_obj.write(row, 1, unicode(proj_obj.project_code)) 
            xls_obj.write(row, 2, unicode(proj_obj.science_type)) 
            xls_obj.write(row, 3, unicode(proj_obj.trade_code).split()[0])
            xls_obj.write(row, 4, unicode(proj_obj.subject).split()[1])
            xls_obj.write(row, 5, unicode(proj_obj.subject).split()[0])  
            xls_obj.write(row, 6, unicode(proj_obj.start_time)) 
            xls_obj.write(row, 7, unicode(proj_obj.end_time))
            xls_obj.write(row, 8, unicode(proj_obj.approval_year))
            xls_obj.write(row, 9, proj_obj.project_status.get_export_str()) 
            xls_obj.write(row, 10, unicode(proj_obj.project_special))
            xls_obj.write(row, 11, unicode(BasisContent.objects.get(project=proj_obj).basis))
            xls_obj.write(row, 12, unicode(manager.name)) 
            xls_obj.write(row, 13, unicode(manager.get_sex_display())) 
            xls_obj.write(row, 14, unicode(manager.birth)) 
            xls_obj.write(row, 15, unicode(manager.get_target_type_display())) 
            xls_obj.write(row, 16, unicode(manager.get_degree_display()))
            xls_obj.write(row, 17, unicode(manager.get_title_display()))  
            xls_obj.write(row, 18, unicode(manager.get_position_display())) 
            xls_obj.write(row, 19, unicode(manager.get_base_type_display()))
            xls_obj.write(row, 20, unicode(manager.base_name))
            if proj_obj.project_status.status >= PROJECT_STATUS_FINAL_SCHOOL_OVER:
                xls_obj.write(row, 25, unicode(proj_obj.finalsubmit.project_summary))
            else:
                try:
                    xls_obj.write(row, 25, unicode(ProgressReport.objects.filter(project_id = proj_obj).order_by("-year")[0].summary))
                except:
                    pass
            for i,member in enumerate(projectMembers):
                xls_obj.write(row+i, 21, unicode(member.name))
                xls_obj.write(row+i, 22, unicode(member.birth_year))
                xls_obj.write(row+i, 23, unicode(member.professional_title))
                xls_obj.write(row+i, 24, unicode(member.executive_position))
            pass
        except:
            pass
        _number+= projectMembers.count() if projectMembers.count()!=0 else 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
Beispiel #45
0
def Send_email_to_student(request, username, person_firstname,password, email, identity, financial_cate=FINANCIAL_CATE_UN):
    #判断用户名是否存在,存在的话直接返回
    loginfo(p=person_firstname, label="person_firstname")
    if not AuthStudentExist(request, email):
        user,send_mail_flag = RegistrationManager().create_inactive_user(
            request,username,person_firstname,password,
            email,identity,send_email=False)
        result = create_newproject(request=request, new_user=user, financial_cate=financial_cate,managername=person_firstname)
        return (True and result and send_mail_flag, '')
    else:
        return (False, u'该邮箱已被激活,请勿重复激活')
Beispiel #46
0
    def check_auth_op(self, pid, request):
        if pid is None:
            return False

        #ISSUE: we should check get operation!
        try:
            project = ProjectSingle.objects.get(project_id=pid)
        except ProjectSingle.DoesNotExist, err:
            loginfo(p=err, label="only_user_required -> get projectsingle")
            project = None
            return False
Beispiel #47
0
        def wrappered_method(request, *args, **kwargs):
            #check time control
            pid = kwargs.get("pid", None)
            is_expired = not self.check_day(pid)
            loginfo(p=is_expired,
                    label="time_controller decorator, is_expired")

            #Here, we should use history view strategy to replace forbidden
            kwargs["is_expired"] = is_expired
            response = method(request, *args, **kwargs)
            return response
Beispiel #48
0
def finalReportView(request, pid, is_submited={}):
    print "YYA" * 10
    context = finalReportViewWork(request, pid,
                                  is_submited[SUBMIT_STATUS_FINAL])
    context = dict(context, **fileUploadManage(request, pid, is_submited))
    context['is_submited'] = is_submited
    context['user'] = "******"
    loginfo(p=is_submited, label="is_submited")
    # if context['redirect']:
    #     return HttpResponseRedirect('/teacher/finalinfo')
    return render(request, "adminStaff/final.html", context)
Beispiel #49
0
def get_finance_serial_year_choices():
    project_group=ProjectSingle.objects.filter(project_status__status__gte = PROJECT_STATUS_APPROVAL)
    year = [('-1',u"财务流水号年度")]
    year_has=[]
    for item in project_group:
        year_has.append(item.approval_year)
    year_has=list(set(year_has))
    for y in year_has:
        loginfo(y)
        year.append((y,y))
    return tuple(year)
def ChangeControlStatus(request,special_id,type_id,type_name):
    special = getSpecial(request).get(id = special_id)
    if special:
        type=(type_id,type_name)
        loginfo(type_id)
        if type in CONTROL_TYPE_CHOICES or type_id=="review":
            bValue = not getattr(special,type_id+"_status")
            setattr(special,type_id+"_status",bValue)
            special.save()
        return simplejson.dumps({'status':'1','type_id':type_id,'type_name':type_name,'value':bValue})
    return simplejson.dumps({'status':'0'})
def check_history_readonly(pid):
    """
    Check whether the project is real current year
    Arguments:
        In: pid, project_id
            history, "current" or "history"
        Out:a tuple
            readonly, True or False
    """
    project = get_object_or_404(ProjectSingle, project_id=pid)
    loginfo(p=project.is_over,label="is_over")
    return project.is_past
def expert_assigned():
    """
    project assigned
    """
    experts = ExpertProfile.objects.filter(numlimit=600)

    loginfo(p="A 600", label="Start")
    assigned_by_category_all(project_category_const[0], experts)

    experts = ExpertProfile.objects.filter(numlimit_b=80)
    loginfo(p="B 60", label="Start")
    assigned_by_category_all(project_category_const[1], experts)
Beispiel #53
0
def get_xls_path(request,exceltype,proj_set,specialname="",eid=""):
    """
        exceltype = EXCELTYPE_DICT 导出表类型
        proj_set 筛选出导出的项目集
        specialtype 基本科研业务经费科研专题项目的
    """

    loginfo(p=proj_set,label="get_xls_path")
    loginfo(p = exceltype,label = "exceltype")
    print exceltype
    EXCELTYPE_DICT = EXCELTYPE_DICT_OBJECT()
    if exceltype == EXCELTYPE_DICT.INFO_COLLECTION:
        file_path = xls_info_collection(request,proj_set,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FUNDSUMMARY:
        file_path = xls_info_fundsummay(request,proj_set,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_SUMMARY:
        file_path = xls_info_summary(request,proj_set,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FUNDBUDGET:
        file_path = xls_info_fundbudget(request,proj_set,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_TEACHERINFO:
        file_path = xls_info_teacherinfo(request,eid)
    #初审表
    elif exceltype == EXCELTYPE_DICT.INFO_BASESUMMARYSCIENCE_PREVIEW:
        file_path = xls_info_basesummary_preview(request,proj_set,1,specialname,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FRONT_PREVIEW:
        file_path = xls_info_basesummary_preview(request,proj_set,2,specialname,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_OUTSTANDING_PREVIEW:
        file_path = xls_info_basesummary_preview(request,proj_set,3,specialname,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_HUMANITY_PREVIEW:
        file_path = xls_info_humanity_preview(request,proj_set,eid,1)
    elif exceltype == EXCELTYPE_DICT.INFO_IMPORTANTPROJECT_PREVIEW:
        file_path = xls_info_importantproject_preivew(request,proj_set,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_LABORATORY_PREVIEW:
        file_path = xls_info_laboratory_preview(request,proj_set,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_BASESUMMARY_PREVIEW:
        file_path = xls_info_humanity_preview(request,proj_set,eid,2)
    #终审表
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_BASESUMMARY_PREVIEW:
        file_path = xls_info_humanity_preview(request,proj_set,eid,2)
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_HUMANITY_PREVIEW:
        file_path = xls_info_humanity_preview(request,proj_set,eid,1)
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_IMPORTANTPROJECT_PREVIEW:
        file_path = xls_info_importantproject_preivew(request,proj_set,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_LABORATORY_PREVIEW:
        file_path = xls_info_laboratory_preview(request,proj_set,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_BASESUMMARYSCIENCE_PREVIEW:
        file_path = xls_info_basesummary_preview(request,proj_set,1,specialname,eid)
    elif exceltype == EXCELTYPE_DICT.INFO_FINAL_FRONT_PREVIEW:
        #前沿交叉终审表
        file_path = xls_info_final_front_preview(request,proj_set)     
    else:#EXCELTYPE_DICT.INFO_FINAL_OUTSTANDING_PREVIEW
        file_path = xls_info_basesummary_preview(request,proj_set,3,specialname,eid)      
    return MEDIA_URL + "tmp" + file_path[len(TMP_FILES_PATH):]
Beispiel #54
0
def get_finance_serial_year_choices():
    project_group = ProjectSingle.objects.filter(
        project_status__status__gte=PROJECT_STATUS_APPROVAL)
    year = [('-1', u"财务流水号年度")]
    year_has = []
    for item in project_group:
        year_has.append(item.approval_year)
    year_has = list(set(year_has))
    for y in year_has:
        loginfo(y)
        year.append((y, y))
    return tuple(year)
def send_mail(subject, message, recipient_list, **kwargs):
    auth_user, auth_password = choice(settings.EMAIL_POOL)
    loginfo(p='Send with ' + auth_user, label='send_mail')
    try:
        flag = _send_mail(
                subject, message, auth_user, recipient_list,
                auth_user=auth_user, auth_password=auth_password,
                **kwargs)
    except Exception as e:
        logger.error(e)
        flag = False
    return flag
Beispiel #56
0
def fundBudget(request, form, remarkmentform,pid,max_budget,projectcode,is_submited = False):
    profundbudget = ProjectFundBudget.objects.get(project_id = pid)
    profundbudgetform = ProFundBudgetForm(deserialize_form(form),instance = profundbudget)
    profundbudgetremarkmentform = ProFundBudgetRemarkmentForm(deserialize_form(remarkmentform),instance = profundbudget)
    project = ProjectSingle.objects.get(project_id = pid )
    flag = False
    identity = request.session.get('auth_role', "")
    accessList = [ADMINSTAFF_USER,SCHOOL_USER,FINANCE_USER]
    if not check_input(max_budget) or not check_input(projectcode):
        message = ""
        if not check_input(max_budget):
            message += u"项目最大预算不能为空 "
        if not check_input(projectcode):
            message += u"项目编号不能为空 "
        #if not check_input(finance_account):
        #   message += u"项目财务编号不能为空 "
        ret = {'message':message,'flag':flag,}
        return simplejson.dumps(ret)
    if identity in accessList:
        project.project_budget_max = max_budget
    project.project_code = projectcode
    #project.finance_account = finance_account
    project.save()
    if profundbudgetform.is_valid():
        total_budget = float(profundbudgetform.cleaned_data["total_budget"])
        if total_budget < 0:
            message = u"数据未填写完整或数据格式不对,保存失败"
        else:
            laborcosts_budget = float(profundbudgetform.cleaned_data["laborcosts_budget"])
            if laborcosts_budget <= total_budget * 0.3:
                if total_budget <= project.project_budget_max:
                    profundbudgetform.save()
                    copyBudgetToFundsummary(pid)
                    if is_submited:
                        if profundbudgetremarkmentform.is_valid():
                            profundbudgetremarkmentform.save()
                            flag = True
                            message=u"保存成功"
                            status_confirm(request,project)
                        else:
                            message="预算说明为必填项"
                    else:
                        message=u"保存成功"
                else:
                    message = u"经费预算表总结额应低于项目最大预算金额,请仔细核实"
            else:
                message = u"劳务费应低于总结额的30%,请仔细核实"
    else:
        loginfo(p=profundbudgetform.errors,label='profundbudgetform.errors')
        message = u"数据未填写完整或数据格式不对,保存失败"
    # table = refresh_fundsummary_table(request,profundsummaryform,pid)
    ret = {'message':message,'flag':flag,'project_code':project.project_code,'project_budget_max':project.project_budget_max,}
    return simplejson.dumps(ret)