Description:
fix error message when submission to closed problem
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r797:ebe6e5beb7c4 - - 5 files changed: 75 inserted, 75 deleted

@@ -16,8 +16,8
16 16 else
17 17 @problem = Problem.find_by_id(params[:problem_id])
18 18 if (@problem == nil) or (not @problem.available)
19 - redirect_to main_list_path
20 - flash[:notice] = 'Error: submissions for that problem are not viewable.'
19 + redirect_to list_main_path
20 + flash[:error] = 'Authorization error: You have no right to view submissions for this problem'
21 21 return
22 22 end
23 23 @submissions = Submission.find_all_by_user_problem(@user.id, @problem.id).order(id: :desc)
@@ -27,8 +27,9
27 27 def download
28 28 problem = Problem.find(params[:id])
29 29 unless @current_user.can_view_problem? problem
30 - flash[:notice] = 'You are not authorized to access this file'
31 - redirect_to :action => 'index' and return
30 + flash[:error] = 'You are not authorized to access this file'
31 + redirect_to list_main_path
32 + return
32 33 end
33 34
34 35 base_name = params[:file]
@@ -37,7 +38,8
37 38
38 39 if !FileTest.exists?(filename)
39 40 flash[:notice] = 'File does not exists'
40 - redirect_to :action => 'index' and return
41 + redirect_to list_main_path
42 + return
41 43 end
42 44
43 45 send_file_to_user(filename, base_filename)
@@ -154,7 +154,7
154 154 return if self.user.admin?
155 155
156 156 #check if user has the right to submit the problem
157 - errors.add('problem',"must be valid.") if (!self.user.available_problems.include?(self.problem)) and (self.new_record?)
157 + errors[:base] << "Authorization error: you have no right to submit to this problem" if (!self.user.available_problems.include?(self.problem)) and (self.new_record?)
158 158 end
159 159 end
160 160
@@ -43,5 +43,5
43 43 %tt <tt>{<br/>LANG: Pascal<br/>TASK: mobiles<br/>}</tt>
44 44
45 45 %p
46 - = raw(t('help.ask_questions_at_messages',:message_link_name => (t 'menu.messages'),:url => url_for(:controller => 'messages', :action => 'list')))
46 + = raw(t('help.ask_questions_at_messages',:message_link_name => (t 'menu.messages'),url: messages_path ))
47 47
@@ -12,69 +12,69
12 12
13 13 ActiveRecord::Schema.define(version: 2020_08_13_083020) do
14 14
15 - create_table "announcements", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
15 + create_table "announcements", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
16 16 t.string "author"
17 - t.text "body", limit: 16777215
17 + t.text "body"
18 18 t.boolean "published"
19 - t.datetime "created_at", null: false
20 - t.datetime "updated_at", null: false
19 + t.datetime "created_at"
20 + t.datetime "updated_at"
21 21 t.boolean "frontpage", default: false
22 22 t.boolean "contest_only", default: false
23 23 t.string "title"
24 24 t.string "notes"
25 25 end
26 26
27 - create_table "contests", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
27 + create_table "contests", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
28 28 t.string "title"
29 29 t.boolean "enabled"
30 - t.datetime "created_at", null: false
31 - t.datetime "updated_at", null: false
30 + t.datetime "created_at"
31 + t.datetime "updated_at"
32 32 t.string "name"
33 33 end
34 34
35 - create_table "contests_problems", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
35 + create_table "contests_problems", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
36 36 t.integer "contest_id"
37 37 t.integer "problem_id"
38 38 end
39 39
40 - create_table "contests_users", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
40 + create_table "contests_users", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
41 41 t.integer "contest_id"
42 42 t.integer "user_id"
43 43 end
44 44
45 - create_table "countries", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
45 + create_table "countries", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
46 46 t.string "name"
47 - t.datetime "created_at", null: false
48 - t.datetime "updated_at", null: false
47 + t.datetime "created_at"
48 + t.datetime "updated_at"
49 49 end
50 50
51 - create_table "descriptions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
52 - t.text "body", limit: 16777215
51 + create_table "descriptions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
52 + t.text "body"
53 53 t.boolean "markdowned"
54 - t.datetime "created_at", null: false
55 - t.datetime "updated_at", null: false
54 + t.datetime "created_at"
55 + t.datetime "updated_at"
56 56 end
57 57
58 - create_table "grader_configurations", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
58 + create_table "grader_configurations", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
59 59 t.string "key"
60 60 t.string "value_type"
61 61 t.string "value"
62 - t.datetime "created_at", null: false
63 - t.datetime "updated_at", null: false
64 - t.text "description", limit: 16777215
62 + t.datetime "created_at"
63 + t.datetime "updated_at"
64 + t.text "description"
65 65 end
66 66
67 - create_table "grader_processes", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
67 + create_table "grader_processes", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
68 68 t.string "host"
69 69 t.integer "pid"
70 70 t.string "mode"
71 71 t.boolean "active"
72 - t.datetime "created_at", null: false
73 - t.datetime "updated_at", null: false
72 + t.datetime "created_at"
73 + t.datetime "updated_at"
74 74 t.integer "task_id"
75 75 t.string "task_type"
76 76 t.boolean "terminated"
77 - t.index ["host", "pid"], name: "index_grader_processes_on_ip_and_pid"
77 + t.index ["host", "pid"], name: "index_grader_processes_on_host_and_pid"
78 78 end
79 79
80 80 create_table "groups", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
@@ -89,7 +89,7
89 89 t.index ["group_id", "problem_id"], name: "index_groups_problems_on_group_id_and_problem_id"
90 90 end
91 91
92 - create_table "groups_users", options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
92 + create_table "groups_users", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
93 93 t.integer "group_id", null: false
94 94 t.integer "user_id", null: false
95 95 t.index ["user_id", "group_id"], name: "index_groups_users_on_user_id_and_group_id"
@@ -98,13 +98,13
98 98 create_table "heart_beats", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
99 99 t.integer "user_id"
100 100 t.string "ip_address"
101 - t.datetime "created_at", null: false
102 - t.datetime "updated_at", null: false
101 + t.datetime "created_at"
102 + t.datetime "updated_at"
103 103 t.string "status"
104 104 t.index ["updated_at"], name: "index_heart_beats_on_updated_at"
105 105 end
106 106
107 - create_table "languages", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
107 + create_table "languages", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
108 108 t.string "name", limit: 10
109 109 t.string "pretty_name"
110 110 t.string "ext", limit: 10
@@ -114,23 +114,22
114 114 create_table "logins", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
115 115 t.integer "user_id"
116 116 t.string "ip_address"
117 - t.datetime "created_at", null: false
118 - t.datetime "updated_at", null: false
119 - t.index ["user_id"], name: "index_logins_on_user_id"
117 + t.datetime "created_at"
118 + t.datetime "updated_at"
120 119 end
121 120
122 - create_table "messages", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
121 + create_table "messages", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
123 122 t.integer "sender_id"
124 123 t.integer "receiver_id"
125 124 t.integer "replying_message_id"
126 - t.text "body", limit: 16777215
125 + t.text "body"
127 126 t.boolean "replied"
128 - t.datetime "created_at", null: false
129 - t.datetime "updated_at", null: false
127 + t.datetime "created_at"
128 + t.datetime "updated_at"
130 129 end
131 130
132 - create_table "problems", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
133 - t.string "name", limit: 100
131 + create_table "problems", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
132 + t.string "name", limit: 30
134 133 t.string "full_name"
135 134 t.integer "full_score"
136 135 t.date "date_added"
@@ -151,42 +150,42
151 150 t.index ["tag_id"], name: "index_problems_tags_on_tag_id"
152 151 end
153 152
154 - create_table "rights", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
153 + create_table "rights", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
155 154 t.string "name"
156 155 t.string "controller"
157 156 t.string "action"
158 157 end
159 158
160 - create_table "rights_roles", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
159 + create_table "rights_roles", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
161 160 t.integer "right_id"
162 161 t.integer "role_id"
163 162 t.index ["role_id"], name: "index_rights_roles_on_role_id"
164 163 end
165 164
166 - create_table "roles", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
165 + create_table "roles", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
167 166 t.string "name"
168 167 end
169 168
170 - create_table "roles_users", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
169 + create_table "roles_users", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
171 170 t.integer "role_id"
172 171 t.integer "user_id"
173 172 t.index ["user_id"], name: "index_roles_users_on_user_id"
174 173 end
175 174
176 - create_table "sessions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
175 + create_table "sessions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
177 176 t.string "session_id"
178 - t.text "data", limit: 16777215
177 + t.text "data"
179 178 t.datetime "updated_at"
180 179 t.index ["session_id"], name: "index_sessions_on_session_id"
181 180 t.index ["updated_at"], name: "index_sessions_on_updated_at"
182 181 end
183 182
184 - create_table "sites", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
183 + create_table "sites", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
185 184 t.string "name"
186 185 t.boolean "started"
187 186 t.datetime "start_time"
188 - t.datetime "created_at", null: false
189 - t.datetime "updated_at", null: false
187 + t.datetime "created_at"
188 + t.datetime "updated_at"
190 189 t.integer "country_id"
191 190 t.string "password"
192 191 end
@@ -194,11 +193,11
194 193 create_table "submission_view_logs", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
195 194 t.integer "user_id"
196 195 t.integer "submission_id"
197 - t.datetime "created_at", null: false
198 - t.datetime "updated_at", null: false
196 + t.datetime "created_at"
197 + t.datetime "updated_at"
199 198 end
200 199
201 - create_table "submissions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
200 + create_table "submissions", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
202 201 t.integer "user_id"
203 202 t.integer "problem_id"
204 203 t.integer "language_id"
@@ -206,17 +205,16
206 205 t.binary "binary"
207 206 t.datetime "submitted_at"
208 207 t.datetime "compiled_at"
209 - t.text "compiler_message", limit: 16777215
208 + t.text "compiler_message"
210 209 t.datetime "graded_at"
211 210 t.integer "points"
212 - t.text "grader_comment", limit: 16777215
211 + t.text "grader_comment"
213 212 t.integer "number"
214 213 t.string "source_filename"
215 214 t.float "max_runtime"
216 215 t.integer "peak_memory"
217 216 t.integer "effective_code_length"
218 217 t.string "ip_address"
219 - t.index ["submitted_at"], name: "index_submissions_on_submitted_at"
220 218 t.index ["user_id", "problem_id", "number"], name: "index_submissions_on_user_id_and_problem_id_and_number", unique: true
221 219 t.index ["user_id", "problem_id"], name: "index_submissions_on_user_id_and_problem_id"
222 220 end
@@ -229,7 +227,7
229 227 t.datetime "updated_at", null: false
230 228 end
231 229
232 - create_table "tasks", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
230 + create_table "tasks", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
233 231 t.integer "submission_id"
234 232 t.datetime "created_at"
235 233 t.integer "status"
@@ -237,15 +235,15
237 235 t.index ["submission_id"], name: "index_tasks_on_submission_id"
238 236 end
239 237
240 - create_table "test_pairs", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
238 + create_table "test_pairs", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
241 239 t.integer "problem_id"
242 - t.text "input", limit: 4294967295
243 - t.text "solution", limit: 4294967295
244 - t.datetime "created_at", null: false
245 - t.datetime "updated_at", null: false
240 + t.text "input", limit: 16777215
241 + t.text "solution", limit: 16777215
242 + t.datetime "created_at"
243 + t.datetime "updated_at"
246 244 end
247 245
248 - create_table "test_requests", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
246 + create_table "test_requests", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
249 247 t.integer "user_id"
250 248 t.integer "problem_id"
251 249 t.integer "submission_id"
@@ -253,13 +251,13
253 251 t.string "output_file_name"
254 252 t.string "running_stat"
255 253 t.integer "status"
256 - t.datetime "updated_at", null: false
254 + t.datetime "updated_at"
257 255 t.datetime "submitted_at"
258 256 t.datetime "compiled_at"
259 - t.text "compiler_message", limit: 16777215
257 + t.text "compiler_message"
260 258 t.datetime "graded_at"
261 259 t.string "grader_comment"
262 - t.datetime "created_at", null: false
260 + t.datetime "created_at"
263 261 t.float "running_time"
264 262 t.string "exit_status"
265 263 t.integer "memory_usage"
@@ -273,20 +271,20
273 271 t.integer "score"
274 272 t.text "input", limit: 4294967295
275 273 t.text "sol", limit: 4294967295
276 - t.datetime "created_at", null: false
277 - t.datetime "updated_at", null: false
274 + t.datetime "created_at"
275 + t.datetime "updated_at"
278 276 t.index ["problem_id"], name: "index_testcases_on_problem_id"
279 277 end
280 278
281 - create_table "user_contest_stats", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
279 + create_table "user_contest_stats", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
282 280 t.integer "user_id"
283 281 t.datetime "started_at"
284 - t.datetime "created_at", null: false
285 - t.datetime "updated_at", null: false
282 + t.datetime "created_at"
283 + t.datetime "updated_at"
286 284 t.boolean "forced_logout"
287 285 end
288 286
289 - create_table "users", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
287 + create_table "users", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
290 288 t.string "login", limit: 50
291 289 t.string "full_name"
292 290 t.string "hashed_password"
You need to be logged in to leave comments. Login now