Description:
added problem_name to TestRequest and moved name_of to protected git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@88 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r40:b5c26b86e7d2 - - 1 file changed: 11 inserted, 4 deleted

@@ -1,23 +1,25
1 1 #
2 2 # A TestRequest is a composition of submission with user's testdata.
3 3 #
4 4 # Note about TestRequest#problem: Usually, A TestRequest has to be
5 5 # associated with a problem, so that execution environment can be
6 6 # determined. However, to be more flexible, we have to ensure that
7 7 # it works as well with problem=nil. In this case, we shall provide
8 8 # a "default" execution environment for it. This can be done
9 - # seamlessly by using TestRequest#name_of when retrieving the name
10 - # of the problem: name_of would return problem.name when
11 - # problem!=nil and it would return "default" when problem=nil.
9 + # seamlessly by using TestRequest#problem_name or
10 + # TestRequest#name_of(problem) when retrieving the name of the
11 + # problem: #name_of would return problem.name when problem!=nil and
12 + # it would return "default" when problem=nil, #problem_name just
13 + # call #name_of.
12 14 #
13 15
14 16 require 'fileutils'
15 17
16 18 class TestRequest < Task
17 19
18 20 set_table_name "test_requests"
19 21
20 22 belongs_to :user
21 23 belongs_to :problem
22 24 belongs_to :submission
23 25
@@ -43,33 +45,38
43 45 problem = Problem.find(params[:problem_id])
44 46 test_request.problem = problem
45 47 test_request.submission =
46 48 Submission.find_by_user_problem_number(user.id,
47 49 problem.id,
48 50 params[:submission_number])
49 51 test_request.input_file_name = save_input_file(params[:input_file], user, problem)
50 52 test_request.submitted_at = Time.new
51 53 test_request.status_inqueue
52 54 test_request
53 55 end
54 56
57 + def problem_name
58 + TestRequest.name_of(self.problem)
59 + end
60 +
61 + protected
62 +
55 63 def self.name_of(problem)
56 64 if problem!=nil
57 65 problem.name
58 66 else
59 67 "default"
60 68 end
61 69 end
62 70
63 - protected
64 71 def self.input_file_name(user,problem)
65 72 problem_name = TestRequest.name_of(problem)
66 73 begin
67 74 tmpname = TEST_REQUEST_INPUT_FILE_DIR + "/#{user.login}/#{problem_name}/#{rand(10000)}"
68 75 end while File.exists?(tmpname)
69 76 tmpname
70 77 end
71 78
72 79 def self.save_input_file(tempfile, user, problem)
73 80 new_file_name = input_file_name(user,problem)
74 81 dirname = File.dirname(new_file_name)
75 82 FileUtils.mkdir_p(File.dirname(new_file_name)) if !File.exists?(dirname)
You need to be logged in to leave comments. Login now