| | |
| | | self.generate_problems() |
| | | |
| | | def generate_problems(self, reorder=True): |
| | | for problem_source in self.problem_source_list: |
| | | self.problem_list.append(Problem(problem_source)) |
| | | for problem in self.problem_source_list: |
| | | shuffle(problem['problems']) |
| | | for i in range(0,problem['amount']): |
| | | self.problem_list.append((problem['problems'][i]['id'], Problem(problem['problems'][i]['parser']))) |
| | | if reorder: |
| | | shuffle(self.problem_list) |
| | | |
| | |
| | | else: |
| | | text = self.template.start_paper(self.student_id[0], self.student_id[1]) |
| | | |
| | | for i, problem in enumerate(self.problem_list): |
| | | for i, (problem_id, problem) in enumerate(self.problem_list): |
| | | text += self.template.put_problem_into_template( |
| | | problem.problem, problem_number=i + 1 |
| | | ) |
| | |
| | | |
| | | def get_answer_matrix(self): |
| | | retval = [] |
| | | for problem in self.problem_list: |
| | | for (problem_id,problem) in self.problem_list: |
| | | for solution in problem.problem["solutions"]: |
| | | retval.append([i[1] for i in solution["shuffled"]]) |
| | | return retval |
| | | |
| | | def get_problem_ids(self): |
| | | retval = [] |
| | | for (problem_id,problem) in self.problem_list: |
| | | retval.append(problem_id) |
| | | return retval |
| | | |
| | | class Exam: |
| | | def __init__( |
| | |
| | | cont = fd.read() |
| | | files.append((i, cont)) |
| | | self.problem_source_list = [] |
| | | for nal in files: |
| | | for i,nal in enumerate(files): |
| | | par = Parser(nal[1]) |
| | | par.parseSections() |
| | | self.problem_source_list.append(ProblemSource(parser=par)) |
| | | self.problem_source_list.append( |
| | | { |
| | | 'amount': 1, |
| | | 'problems': |
| | | [ |
| | | { |
| | | 'id': i, |
| | | 'parser': ProblemSource(parser=par) |
| | | }, |
| | | ] |
| | | }) |
| | | |
| | | def generatePapers(self): |
| | | for i in range(self.paper_start, self.paper_start + self.number_of_papers): |
| | |
| | | paper_matrix=paper.get_answer_matrix() |
| | | retval.append(paper_matrix) |
| | | |
| | | return retval |
| | | return retval |
| | | |
| | | def get_problem_ids(self): |
| | | retval=[] |
| | | for paper in self.paper_list: |
| | | paper_ids=paper.get_problem_ids() |
| | | retval.append(paper_ids) |
| | | return retval |