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)
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})
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})
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)
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))