Description:
[web] fix problem availability bug git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@155 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

r75:8466e8e886f1 - - 1 file changed: 1 inserted, 1 deleted

@@ -68,63 +68,63
68 if s =~ option
68 if s =~ option
69 words = s.split
69 words = s.split
70 return words[1]
70 return words[1]
71 end
71 end
72 i = i + 1
72 i = i + 1
73 if i==10
73 if i==10
74 return nil
74 return nil
75 end
75 end
76 end
76 end
77 return nil
77 return nil
78 end
78 end
79
79
80 def self.find_language_in_source(source)
80 def self.find_language_in_source(source)
81 langopt = find_option_in_source(/^LANG:/,source)
81 langopt = find_option_in_source(/^LANG:/,source)
82 if language = Language.find_by_name(langopt)
82 if language = Language.find_by_name(langopt)
83 return language
83 return language
84 elsif language = Language.find_by_pretty_name(langopt)
84 elsif language = Language.find_by_pretty_name(langopt)
85 return language
85 return language
86 else
86 else
87 return nil
87 return nil
88 end
88 end
89 end
89 end
90
90
91 def self.find_problem_in_source(source)
91 def self.find_problem_in_source(source)
92 prob_opt = find_option_in_source(/^TASK:/,source)
92 prob_opt = find_option_in_source(/^TASK:/,source)
93 if problem = Problem.find_by_name(prob_opt)
93 if problem = Problem.find_by_name(prob_opt)
94 return problem
94 return problem
95 else
95 else
96 return nil
96 return nil
97 end
97 end
98 end
98 end
99
99
100 # validation codes
100 # validation codes
101 def must_specify_language
101 def must_specify_language
102 return if self.source==nil
102 return if self.source==nil
103 self.language = Submission.find_language_in_source(self.source)
103 self.language = Submission.find_language_in_source(self.source)
104 errors.add_to_base("must specify programming language") unless self.language!=nil
104 errors.add_to_base("must specify programming language") unless self.language!=nil
105 end
105 end
106
106
107 def must_have_valid_problem
107 def must_have_valid_problem
108 return if self.source==nil
108 return if self.source==nil
109 if self.problem_id!=-1
109 if self.problem_id!=-1
110 problem = Problem.find(self.problem_id)
110 problem = Problem.find(self.problem_id)
111 else
111 else
112 problem = Submission.find_problem_in_source(self.source)
112 problem = Submission.find_problem_in_source(self.source)
113 end
113 end
114 if problem==nil
114 if problem==nil
115 errors.add_to_base("must specify problem")
115 errors.add_to_base("must specify problem")
116 - elsif !problem.available
116 + elsif (!problem.available) and (self.new_record?)
117 errors.add_to_base("must specify valid problem")
117 errors.add_to_base("must specify valid problem")
118 else
118 else
119 self.problem = problem
119 self.problem = problem
120 end
120 end
121 end
121 end
122
122
123 # callbacks
123 # callbacks
124 def assign_latest_number_if_new_recond
124 def assign_latest_number_if_new_recond
125 return if !self.new_record?
125 return if !self.new_record?
126 latest = Submission.find_last_by_user_and_problem(self.user_id, self.problem_id)
126 latest = Submission.find_last_by_user_and_problem(self.user_id, self.problem_id)
127 self.number = (latest==nil) ? 1 : latest.number + 1;
127 self.number = (latest==nil) ? 1 : latest.number + 1;
128 end
128 end
129
129
130 end
130 end
You need to be logged in to leave comments. Login now