Beispiel #1
0
def edit(request, *args, **kwargs):
    if not request.session.get(
            'is_login',
            False) or request.session['user_type'] != 'information':
        return redirect("/index")
    error_msg = ''
    page = utils.get_page(args)  # 获取当前页面
    _projects_dict = utils.get_all_projects()
    page_list = utils.get_pages(page, _projects_dict)
    projects_dict, page, project_id = utils.adjust_info(
        _projects_dict, page, 1)
    if request.method == 'POST':
        project_id = int(request.POST.get("project_id"))
        for key, data in projects_dict:
            if key == project_id:
                project_data = data
        data = {
            "name":
            request.POST.get('name'),
            "leader":
            request.POST.get("leader").strip(),
            "teammates":
            request.POST.get("teammates").strip().split(',')
            if request.POST.get("teammates") else None,
            "start":
            request.POST.get("start").strip(),
            "status":
            request.POST.get("status").strip(),
            "process":
            request.POST.get("process").strip(),
            "budget":
            int(request.POST.get("budget").strip()),
            "real":
            int(request.POST.get("real").strip()),
        }
        data, error_msg = utils.check_error(data, budget=False)
        if error_msg:
            return render(
                request, 'Administrators_edit.html', {
                    "project_id": project_id,
                    "project_data": project_data,
                    "error_msg": error_msg,
                    "page": page,
                })
        if request.POST.get('pass'):
            # 立项审核通过
            data['status'] = "审核中..."
            data['left'] = data['budget'] - data['real']
        elif request.POST.get('reject'):
            # 立项审核未通过
            data['status'] = "未通过"
        elif request.POST.get('edit'):
            data['left'] = data['budget'] - data['real']
        with open("database/projects.pk", 'rb') as f:
            _projects_dict = pickle.load(f)
        for _key in data.keys():
            _projects_dict[project_id][_key] = data[_key]
        with open("database/projects.pk", 'wb') as f:
            f.write(pickle.dumps(_projects_dict))
        return redirect("/info/summary&page=%d" % page)
Beispiel #2
0
def process(request, *args, **kwargs):
    if not request.session.get('is_login', False) or request.session['user_type'] != 'accounts':
        return redirect("/index")
    error_msg, page, page_list, projects_dict, project_id = initialize(args, request, True)
    if not project_id:
        return redirect('/account/summary')
    steps = utils.get_steps(project_id)
    step_path = utils.steps_path(utils.get_eva_info(project_id, top=True))
    if request.method == 'GET':
        return render(request, 'user_projectprocess.html',{"projects_dict": projects_dict, "project_id":project_id,
                    "steps":steps, "step_path":step_path, "page_list":page_list, "page":page, 'error_msg':error_msg})
    if request.method == "POST":
        data = {
            "mission" : request.POST.get("mission"),
            "flow": request.POST.get("flow"),
            "start" : request.POST.get("start"),
            "process" : request.POST.get("process"),
            "teammates": request.POST.get("teammates").strip().split(',') if request.POST.get("teammates") else None,
            "end" : request.POST.get("end"),
        }
        data, error_msg = utils.check_error(data, pro_name=False, budget=False)
        if not data.get("mission", None):
            error_msg = '请输入正确的任务名称'
        elif data.get("flow", None) not in ['1','2','3','4','5']:
            error_msg = '请输入正确的任务所属流程'
        # utils.add_steps(project_id, data)
        # return redirect("/account/process&id=%d&page=%d"%(project_id, page))
        if not error_msg:
            utils.add_steps(project_id, data)
            return redirect("/account/process&id=%d&page=%d" % (project_id, page))
        else:
            return render(request, 'user_projectprocess.html',
                          {"projects_dict": projects_dict, "project_id": project_id,
                           "steps": steps, "step_path": step_path, "page_list": page_list, "page": page,
                           'error_msg': error_msg})
Beispiel #3
0
def new(request, *args, **kwargs):
    if not request.session.get('is_login', False) or request.session['user_type'] != 'accounts':
        return redirect("/index")
    error_msg = ''
    if request.method == 'GET':
        return render(request, 'user_projectnew.html', {"error_msg":error_msg})
    if request.method == 'POST':
        data = {
            "name": request.POST.get("name").strip(),
            "leader":request.POST.get("leader").strip(),
            "teammates":request.POST.get("teammates").strip().split(',')  if request.POST.get("teammates") else None,
            "budget":request.POST.get("budget").strip(),
        }
        data, error_msg = utils.check_error(data)
        if not request.FILES.get('file'):
            error_msg = "请上传文件"
        if error_msg:
            return render(request, 'user_projectnew.html', {"error_msg": error_msg})
        else:
            error_msg = '提交成功'
            id = utils.apply_project(data)
            utils.save_file(id, request, save_name="applyingFile",new=True)
            return render(request, 'user_projectnew.html', {"error_msg": error_msg})
Beispiel #4
0
def user_edit(request, *args, **kwargs):
    if not request.session.get('is_login', False) or request.session['user_type'] != 'accounts':
        return redirect("/index")
    error_msg = ''
    page = utils.get_page(args)  # 获取当前页面
    _projects_dict = utils.get_projects(request.session['account'])
    page_list = utils.get_pages(page, _projects_dict)
    projects_dict, page, project_id = utils.adjust_info(_projects_dict, page, 1)
    if request.method == 'POST':
        project_id = int(request.POST.get("project_id"))
        for key, data in projects_dict:
            if key == project_id:
                project_data = data
        data = {
            "name": request.POST.get("name").strip(),
            "leader": request.POST.get("leader").strip(),
            "teammates": request.POST.get("teammates").strip().split(',') if request.POST.get("teammates") else None
        }
        data, error_msg = utils.check_error(data, budget=False)
        if error_msg:
            return render(request, 'user_edit.html', {
                "project_id": project_id,
                "project_data": project_data, "error_msg": error_msg, "page": page,
            })
        else:
            if request.FILES.get('file'):
                utils.save_file(id, request, save_name="applyingFile", new=True)
            project_data['name'] = data['name']
            project_data['leader'] = data['leader']
            project_data['teammates'] = data['teammates']
            with open("database/projects.pk", 'rb') as f:
                _projects_dict = pickle.load(f)
            _projects_dict[project_id] = project_data
            with open("database/projects.pk", 'wb') as f:
                f.write(pickle.dumps(_projects_dict))
            return redirect("/account/summary&page=%d" % page)
Beispiel #5
0
                        x_f: int = 2):
    assert t_1 > t_0
    assert x_f > x_0
    assert tau / h**2 <= 0.5

    m = int((t_1 - t_0) // tau)
    n = int((x_f - x_0) // h)

    alpha = tau / h**2
    beta = 1 - 2 * alpha

    y = np.zeros(shape=(m, n))

    # boundary conditions
    y.T[0] = miu_1(x_0, m)
    y.T[n - 1] = miu_2(x_f, m)
    y[0] = u_zero(t_0, n)

    for i in range(1, n - 1):
        for j in range(m - 2):
            y[j +
              1][i] = alpha * y[j + 1][i + 1] + beta * y[j][i - 1] + tau * f(
                  i, j)
    return y


if __name__ == '__main__':
    approximated = approx_differential(tau=0.001, h=0.1)
    from utils import check_error
    print(check_error(approximated, u_exact))
    y = np.zeros(shape=(m, n))
    y.T[0] = miu_1(x_0, m)
    y.T[n - 1] = miu_2(x_f, m)
    y[0] = u_zero(t_0, n)

    # computing alpha vector
    alpha = np.zeros(shape=n)
    alpha[0] = 0
    for i in range(1, n):
        alpha[i] = gamma / (c - gamma * alpha[i - 1])

    beta = np.zeros(shape=n)

    for j in range(1, m):
        # computing beta given j-th layer
        beta[0] = y[j][n - 1]
        for i in range(1, n):
            _F = -y[j][i - 1] - tau * f(x_0 + (i - 1) * h, t_0 + (j + 1) * tau)
            beta[i] = (gamma * beta[i - 1] - _F) / (c - gamma * alpha[i - 1])

        for i in range(n - 2, 0, -1):
            y[j][i] = alpha[i + 1] * y[j][i + 1] + beta[i + 1]

    return y


if __name__ == '__main__':
    approx = factorization_method(tau=10**(-2), h=10**(-3))
    from utils import check_error
    print(check_error(approx, u_exact))