def admin_addproblem(): form = ProblemForm() error = None if request.method == 'POST' and form.validate(): inputfile = request.files['inputfile'] outputfile = request.files['outputfile'] problem = Problem(form.title.data, form.description.data, form.pinput.data, form.poutput.data, form.sinput.data, form.soutput.data, form.hint.data, form.time_limit.data, form.memory_limit.data) problem.save() inputfile.save( os.path.join(app.config['UPLOAD_FOLDER'], '.'.join([str(problem.pid), 'in']))) outputfile.save( os.path.join(app.config['UPLOAD_FOLDER'], '.'.join([str(problem.pid), 'out']))) print 'upload successfully!' return redirect(url_for('admin_problemset')) error = get_error(form) if error: flash(error) return render_template('admin_addproblem.html', form=form)
def get_problem_info(req, oj, problem_id, index): problem_id = int(problem_id) data = { 'pid': 0, 'title': '', 'index': index, 'new': 0, } try: pinfo = Problem.objects.get(oj=oj, problem_id=problem_id) except: if oj != 'neau': c = Connect() title = c.test_problem(oj, problem_id).decode('UTF-8') if len(title): p = Problem(oj=oj, problem_id=problem_id, judge_type=1) p.save() c = Connect() c.download_problem(oj, problem_id, p.id) data['pid'] = p.id data['title'] = title data['new'] = 1 else: data = { 'pid': pinfo.id, 'title': pinfo.title, 'index': index, 'new': 0 } return JsonResponse(data)
def test(req): p = None if req.method == 'POST': wait = True form = testform(req.POST) if form.is_valid(): ind = form.cleaned_data['ind'] oj = form.cleaned_data['oj'] try: p = Problem.objects.get(oj=oj, problem_id=ind) except: p = Problem(oj=oj, problem_id=ind, judge_type=1) p.save() c = Connect() c.download_problem(oj, ind, p.id) else: if p.defunct <= 0: c = Connect() c.download_problem(oj, ind, p.id) else: wait = False return render_to_response('problem_test.html', { 'form': form, 'path': req.path, 'wait': wait, 'p': p, }, context_instance=RequestContext(req)) else: form = testform() return render_to_response('problem_test.html', { 'form': form, 'path': req.path, 'wait': True, 'p': p, }, context_instance=RequestContext(req))
def add_problem(request, patient_id): role = UserProfile.objects.get(user=request.user).role authenticated = True if (role == 'physician' or role == 'admin') else False if 'problem_name' in request.POST: problem = Problem(patient=User.objects.get(id=patient_id), problem_name=request.POST['problem_name'], concept_id=request.POST['concept_id'], authenticated=authenticated) problem.save() elif 'goal' in request.POST: goal = Goal(patient=User.objects.get(id=patient_id), goal=request.POST['goal']) goal.save() elif 'todo' in request.POST: print 'todo' print request.POST todo = ToDo(patient=User.objects.get(id=patient_id), todo=request.POST['todo']) todo.save() return HttpResponse('added')
def add(req): if req.POST: post = req.POST new = Problem() new.title = post['title'] new.key = post['key'] if req.FILES: uf = ImgForm(post,req.FILES) if uf.is_valid(): if uf.cleaned_data['qimg']: new.qimg = uf.cleaned_data['qimg'] if uf.cleaned_data['aimg']: new.aimg = uf.cleaned_data['aimg'] new.save() return render_to_response('success.html',{},context_instance = RequestContext(req)) else: return render_to_response('add.html',{},context_instance = RequestContext(req))
def create_profile(sender, **kw): user = kw["instance"] base = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if kw["created"]: os.mkdir(os.path.join(base + '/documents/', user.username)) os.mkdir(os.path.join(base + '/documents/' + user.username, 'models')) os.mkdir(os.path.join(base + '/documents/' + user.username, 'logs')) os.mkdir(os.path.join(base + '/documents/' + user.username, 'data')) profile = UserProfile(user=user) profile.save() problem = Problem(title='Problema_' + user.username, status=Problem.EXPECTING_TRAINING_FILE) problem.save() profile.problem = problem profile.save()
def create_problems(request): group = False if request.method == 'POST': # загружаем данные POST из запроса в объект формы form = ProblemsForm(request.POST) # проверяем правильность загруженных данных if not form.is_valid(): # если данные не верны возвращаем форму с сообщением об ошибке return render_to_response("create_problems.html", { 'form': form }) # извлекаем из формы данные в объекты name = form.cleaned_data["name"] engines = form.cleaned_data["engines"] groups = form.cleaned_data["groups"] # формируем список студентов по указанным в форме группам users = [profile.user for group in groups for profile in group.userprofile_set.all()] # равномерно расределяем задачи между студентами engine_names = [engine for engine in islice(cycle(engines), None, len(users))] # если имя группы заданий не задано, то будет использовано значение по умолчанию if not name: name = u"Без названия" # создаем объект группы и сохраняем его problems_group = ProblemGroup(name = name) problems_group.save() print users for user, engine_name in imap(None, users, engine_names): print user, engine_name # извлекаем заданный движок задачи и инстанцируем его ProblemEngine = settings.EngineManager.get_engine(engine_name) engine = ProblemEngine() # генерируем исходные данные задачи и выполняем их корректировку while True: try: engine.randomize_in_params() engine.adjust() engine.calculate() except Exception: pass else: break # создаем объект задания и передаем ему все необходимые данные problem = Problem(user = user, problem_engine = engine_name, problem_in_params = engine.get_store_str(), # передаем в задание исходные данные group = problems_group) problem.save() group = problems_group return render_to_response("create_problems.html", {'form': ProblemsForm(), 'group': group })
def create_problems(problem_group, engines, groups): # создаем ссылки на объекты логера и запроса request = create_problems.request log = create_problems.get_logger() # присваием группе id задания выполняеющего работу problem_group.task_id = request.id problem_group.save() # формируем список студентов по указанным в форме группам users = [profile.user for group in groups for profile in group.userprofile_set.all()] # равномерно расределяем задачи между студентами engine_names = [engine for engine in islice(cycle(engines), None, len(users))] # словарь уникальности заданий uniq_hash = {} for i, (user, engine_name) in enumerate(imap(None, users, engine_names)): # извлекаем заданный движок задачи и инстанцируем его ProblemEngine = settings.EngineManager.get_engine(engine_name) engine = ProblemEngine() # генерируем исходные данные задачи и выполняем их корректировку while True: try: engine.randomize_in_params() engine.adjust() engine.calculate() except Exception: log.debug("Error while createing problem for %s engine." % ProblemEngine.short_name) else: if uniq_hash.get("%s_%s" % (ProblemEngine.short_name, engine.get_store_str()), False): continue else: uniq_hash["%s_%s" % (ProblemEngine.short_name, engine.get_store_str())] = engine.get_store_str() log.debug(u"Сгенерирована задача: %d" % i) break # создаем объект задания и передаем ему все необходимые данные problem = Problem(user = user, problem_engine = engine_name, problem_in_params = engine.get_store_str(), # передаем в задание исходные данные group = problem_group) problem.save() # обновляем состояние задания create_problems.update_state(state = "PROGRESS", meta = {"current": i, "total": len(users) }) problem_group.created = True problem_group.save() return True
def add_problem(request, patient_id): role = UserProfile.objects.get(user=request.user).role authenticated = True if (role == 'physician' or role == 'admin') else False if 'problem_name' in request.POST: problem = Problem(patient=User.objects.get(id=patient_id), problem_name=request.POST['problem_name'], concept_id=request.POST['concept_id'], authenticated=authenticated) problem.save() elif 'goal' in request.POST: goal = Goal(patient=User.objects.get(id=patient_id), goal=request.POST['goal']) goal.save() elif 'todo' in request.POST: # print 'todo' # print request.POST todo = ToDo(patient=User.objects.get(id=patient_id), todo=request.POST['todo']) todo.save() return HttpResponse('added')
def admin_addproblem(): form = ProblemForm() error = None if request.method == 'POST' and form.validate(): inputfile = request.files['inputfile'] outputfile = request.files['outputfile'] problem = Problem(form.title.data, form.description.data, form.pinput.data, form.poutput.data, form.sinput.data, form.soutput.data, form.hint.data, form.time_limit.data, form.memory_limit.data) problem.save() inputfile.save(os.path.join(app.config['UPLOAD_FOLDER'], '.'.join([str(problem.pid),'in']))) outputfile.save(os.path.join(app.config['UPLOAD_FOLDER'], '.'.join([str(problem.pid),'out']))) print 'upload successfully!' return redirect(url_for('admin_problemset')) error = get_error(form) if error: flash(error) return render_template('admin_addproblem.html',form = form)
import re from models import Assignment, Problem file = open("management/commands/sample.tex", "r") data = file.read() m = re.search(r"assignment{(.*)}", data) name = m.group(1) m = re.search(r"duedate{(.*)}", data) due_date = m.group(1) asgt = Assignment(name=name, due_date=due_date) asgt.save() problems = [] problem_locs = [m.end() for m in re.finditer("begin{problem}", data)] for loc in problem_locs: p = Problem() m = re.search(r"\[(.*)\]", data[loc:]) p.name = m.group(1) n = re.search(r"\[(.*)\]", data[loc+m.end():]) p.points = n.group(1) o = re.search(r"([^]]*)\\end{problem}", data[loc + m.end() + n.end():]) p.solution = o.group(1) p.save() asgt.problems.add(p)
def add_problem(request, patient_id): role = UserProfile.objects.get(user=request.user).role authenticated = True if (role == 'physician' or role == 'admin') else False problem = Problem(patient=User.objects.get(id=patient_id), problem_name=request.POST['problem_name'], concept_id=request.POST['concept_id'], authenticated=authenticated) problem.save() return HttpResponse('added')
import re from models import Assignment, Problem file = open("management/commands/sample.tex", "r") data = file.read() m = re.search(r"assignment{(.*)}", data) name = m.group(1) m = re.search(r"duedate{(.*)}", data) due_date = m.group(1) asgt = Assignment(name=name, due_date=due_date) asgt.save() problems = [] problem_locs = [m.end() for m in re.finditer("begin{problem}", data)] for loc in problem_locs: p = Problem() m = re.search(r"\[(.*)\]", data[loc:]) p.name = m.group(1) n = re.search(r"\[(.*)\]", data[loc + m.end():]) p.points = n.group(1) o = re.search(r"([^]]*)\\end{problem}", data[loc + m.end() + n.end():]) p.solution = o.group(1) p.save() asgt.problems.add(p)