Description:
fixed problem import from validation (thanks Witchakorn Kamolpornwijit)
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r310:6939525421a6 - - 1 file changed: 23 inserted, 17 deleted

@@ -18,10 +18,11
18 end
18 end
19
19
20 def self.create_from_import_form_params(params, old_problem=nil)
20 def self.create_from_import_form_params(params, old_problem=nil)
21 - problem = old_problem || Problem.new
21 + org_problem = old_problem || Problem.new
22 - import_params = Problem.extract_params_and_check(params, problem)
22 + import_params, problem = Problem.extract_params_and_check(params,
23 + org_problem)
23
24
24 - if not problem.valid?
25 + if problem.errors.length!=0
25 return problem, 'Error importing'
26 return problem, 'Error importing'
26 end
27 end
27
28
@@ -57,25 +58,29
57
58
58 def self.to_i_or_default(st, default)
59 def self.to_i_or_default(st, default)
59 if st!=''
60 if st!=''
60 - st.to_i
61 + result = st.to_i
61 - else
62 - default
63 end
62 end
63 + result ||= default
64 + end
65 +
66 + def self.to_f_or_default(st, default)
67 + if st!=''
68 + result = st.to_f
69 + end
70 + result ||= default
64 end
71 end
65
72
66 def self.extract_params_and_check(params, problem)
73 def self.extract_params_and_check(params, problem)
67 - time_limit = Problem.to_i_or_default(params[:time_limit],
74 + time_limit = Problem.to_f_or_default(params[:time_limit],
68 DEFAULT_TIME_LIMIT)
75 DEFAULT_TIME_LIMIT)
69 memory_limit = Problem.to_i_or_default(params[:memory_limit],
76 memory_limit = Problem.to_i_or_default(params[:memory_limit],
70 DEFAULT_MEMORY_LIMIT)
77 DEFAULT_MEMORY_LIMIT)
71
78
72 - if time_limit==0 and time_limit_s!='0'
79 + if time_limit<=0 or time_limit >60
73 - problem.errors.add_to_base('Time limit format errors.')
74 - elsif time_limit<=0 or time_limit >60
75 problem.errors.add_to_base('Time limit out of range.')
80 problem.errors.add_to_base('Time limit out of range.')
76 end
81 end
77
82
78 - if memory_limit==0 and memory_limit_s!='0'
83 + if memory_limit==0 and params[:memory_limit]!='0'
79 problem.errors.add_to_base('Memory limit format errors.')
84 problem.errors.add_to_base('Memory limit format errors.')
80 elsif memory_limit<=0 or memory_limit >512
85 elsif memory_limit<=0 or memory_limit >512
81 problem.errors.add_to_base('Memory limit out of range.')
86 problem.errors.add_to_base('Memory limit out of range.')
@@ -88,7 +93,7
88 file = params[:file]
93 file = params[:file]
89
94
90 if problem.errors.length!=0
95 if problem.errors.length!=0
91 - return problem
96 + return nil, problem
92 end
97 end
93
98
94 problem.name = params[:name]
99 problem.name = params[:name]
@@ -98,11 +103,12
98 problem.full_name = params[:name]
103 problem.full_name = params[:name]
99 end
104 end
100
105
101 - return {
106 + return [{
102 - :time_limit => time_limit,
107 + :time_limit => time_limit,
103 - :memory_limit => memory_limit,
108 + :memory_limit => memory_limit,
104 - :file => file
109 + :file => file
105 - }
110 + },
111 + problem]
106 end
112 end
107
113
108 end
114 end
You need to be logged in to leave comments. Login now