Description:
Merge pull request #23 from nattee/master
some bug fix
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r768:f22301d0d070 - - 7 files changed: 12 inserted, 5 deleted
@@ -0,0 +1,5 | |||||
|
|
1 | + class ChangeSubmissionSourceSize < ActiveRecord::Migration | ||
|
|
2 | + def change | ||
|
|
3 | + change_column :submissions, :source, :text, :limit => 1.megabyte | ||
|
|
4 | + end | ||
|
|
5 | + end |
@@ -178,25 +178,25 | |||||
|
178 | end |
|
178 | end |
|
179 | @histogram[:summary][:max] = [@histogram[:data].max,1].max |
|
179 | @histogram[:summary][:max] = [@histogram[:data].max,1].max |
|
180 |
|
180 | ||
|
181 | @summary = { attempt: user.count, solve: 0 } |
|
181 | @summary = { attempt: user.count, solve: 0 } |
|
182 | user.each_value { |v| @summary[:solve] += 1 if v == 1 } |
|
182 | user.each_value { |v| @summary[:solve] += 1 if v == 1 } |
|
183 | end |
|
183 | end |
|
184 |
|
184 | ||
|
185 | def manage |
|
185 | def manage |
|
186 | @problems = Problem.order(date_added: :desc) |
|
186 | @problems = Problem.order(date_added: :desc) |
|
187 | end |
|
187 | end |
|
188 |
|
188 | ||
|
189 | def do_manage |
|
189 | def do_manage |
|
190 | - if params.has_key? 'change_date_added' |
|
190 | + if params.has_key? 'change_date_added' and params[:date_added].strip.empty? == false |
|
191 | change_date_added |
|
191 | change_date_added |
|
192 | elsif params.has_key? 'add_to_contest' |
|
192 | elsif params.has_key? 'add_to_contest' |
|
193 | add_to_contest |
|
193 | add_to_contest |
|
194 | elsif params.has_key? 'enable_problem' |
|
194 | elsif params.has_key? 'enable_problem' |
|
195 | set_available(true) |
|
195 | set_available(true) |
|
196 | elsif params.has_key? 'disable_problem' |
|
196 | elsif params.has_key? 'disable_problem' |
|
197 | set_available(false) |
|
197 | set_available(false) |
|
198 | elsif params.has_key? 'add_group' |
|
198 | elsif params.has_key? 'add_group' |
|
199 | group = Group.find(params[:group_id]) |
|
199 | group = Group.find(params[:group_id]) |
|
200 | ok = [] |
|
200 | ok = [] |
|
201 | failed = [] |
|
201 | failed = [] |
|
202 | get_problems_from_params.each do |p| |
|
202 | get_problems_from_params.each do |p| |
@@ -34,25 +34,25 | |||||
|
34 | #process parameters |
|
34 | #process parameters |
|
35 | #problems |
|
35 | #problems |
|
36 | @problems = [] |
|
36 | @problems = [] |
|
37 | if params[:problem_id] |
|
37 | if params[:problem_id] |
|
38 | params[:problem_id].each do |id| |
|
38 | params[:problem_id].each do |id| |
|
39 | next unless id.strip != "" |
|
39 | next unless id.strip != "" |
|
40 | pid = Problem.find_by_id(id.to_i) |
|
40 | pid = Problem.find_by_id(id.to_i) |
|
41 | @problems << pid if pid |
|
41 | @problems << pid if pid |
|
42 | end |
|
42 | end |
|
43 | end |
|
43 | end |
|
44 |
|
44 | ||
|
45 | #users |
|
45 | #users |
|
46 | - @users = if params[:user] == "all" then |
|
46 | + @users = if params[:users] == "all" then |
|
47 | User.includes(:contests).includes(:contest_stat) |
|
47 | User.includes(:contests).includes(:contest_stat) |
|
48 | else |
|
48 | else |
|
49 | User.includes(:contests).includes(:contest_stat).where(enabled: true) |
|
49 | User.includes(:contests).includes(:contest_stat).where(enabled: true) |
|
50 | end |
|
50 | end |
|
51 |
|
51 | ||
|
52 | #set up range from param |
|
52 | #set up range from param |
|
53 | @since_id = params.fetch(:from_id, 0).to_i |
|
53 | @since_id = params.fetch(:from_id, 0).to_i |
|
54 | @until_id = params.fetch(:to_id, 0).to_i |
|
54 | @until_id = params.fetch(:to_id, 0).to_i |
|
55 | @since_id = nil if @since_id == 0 |
|
55 | @since_id = nil if @since_id == 0 |
|
56 | @until_id = nil if @until_id == 0 |
|
56 | @until_id = nil if @until_id == 0 |
|
57 |
|
57 | ||
|
58 | #calculate the routine |
|
58 | #calculate the routine |
@@ -1,23 +1,23 | |||||
|
1 | class Submission < ActiveRecord::Base |
|
1 | class Submission < ActiveRecord::Base |
|
2 |
|
2 | ||
|
3 | belongs_to :language |
|
3 | belongs_to :language |
|
4 | belongs_to :problem |
|
4 | belongs_to :problem |
|
5 | belongs_to :user |
|
5 | belongs_to :user |
|
6 |
|
6 | ||
|
7 | before_validation :assign_problem |
|
7 | before_validation :assign_problem |
|
8 | before_validation :assign_language |
|
8 | before_validation :assign_language |
|
9 |
|
9 | ||
|
10 | validates_presence_of :source |
|
10 | validates_presence_of :source |
|
11 | - validates_length_of :source, :maximum => 100_000, :allow_blank => true, :message => 'too long' |
|
11 | + validates_length_of :source, :maximum => 100_000, :allow_blank => true, :message => 'code too long, the limit is 100,000 bytes' |
|
12 | validates_length_of :source, :minimum => 1, :allow_blank => true, :message => 'too short' |
|
12 | validates_length_of :source, :minimum => 1, :allow_blank => true, :message => 'too short' |
|
13 | validate :must_have_valid_problem |
|
13 | validate :must_have_valid_problem |
|
14 | validate :must_specify_language |
|
14 | validate :must_specify_language |
|
15 |
|
15 | ||
|
16 | has_one :task |
|
16 | has_one :task |
|
17 |
|
17 | ||
|
18 | before_save :assign_latest_number_if_new_recond |
|
18 | before_save :assign_latest_number_if_new_recond |
|
19 |
|
19 | ||
|
20 | def self.find_last_by_user_and_problem(user_id, problem_id) |
|
20 | def self.find_last_by_user_and_problem(user_id, problem_id) |
|
21 | where("user_id = ? AND problem_id = ?",user_id,problem_id).last |
|
21 | where("user_id = ? AND problem_id = ?",user_id,problem_id).last |
|
22 | end |
|
22 | end |
|
23 |
|
23 |
@@ -101,18 +101,19 | |||||
|
101 | %span.label.label-default= t.name |
|
101 | %span.label.label-default= t.name |
|
102 | %td= problem.available |
|
102 | %td= problem.available |
|
103 | %td= problem.date_added |
|
103 | %td= problem.date_added |
|
104 | - if GraderConfiguration.multicontests? |
|
104 | - if GraderConfiguration.multicontests? |
|
105 | %td |
|
105 | %td |
|
106 | - problem.contests.each do |contest| |
|
106 | - problem.contests.each do |contest| |
|
107 | = "(#{contest.name} [#{link_to 'x', :action => 'remove_contest', :id => problem.id, :contest_id => contest.id }])" |
|
107 | = "(#{contest.name} [#{link_to 'x', :action => 'remove_contest', :id => problem.id, :contest_id => contest.id }])" |
|
108 |
|
108 | ||
|
109 | :javascript |
|
109 | :javascript |
|
110 | $('.input-group.date').datetimepicker({ |
|
110 | $('.input-group.date').datetimepicker({ |
|
111 | format: 'DD/MMM/YYYY', |
|
111 | format: 'DD/MMM/YYYY', |
|
112 | showTodayButton: true, |
|
112 | showTodayButton: true, |
|
|
113 | + locale: 'en', | ||
|
113 | widgetPositioning: {horizontal: 'auto', vertical: 'bottom'}, |
|
114 | widgetPositioning: {horizontal: 'auto', vertical: 'bottom'}, |
|
114 |
|
115 | ||
|
115 | }); |
|
116 | }); |
|
116 | $('.datatable').DataTable({ |
|
117 | $('.datatable').DataTable({ |
|
117 | paging: false |
|
118 | paging: false |
|
118 | }); |
|
119 | }); |
@@ -22,15 +22,16 | |||||
|
22 | .actions |
|
22 | .actions |
|
23 | = f.submit "Update", class: 'btn btn-primary' |
|
23 | = f.submit "Update", class: 'btn btn-primary' |
|
24 | .col-md-8 |
|
24 | .col-md-8 |
|
25 |
|
25 | ||
|
26 | = link_to 'Show', @site |
|
26 | = link_to 'Show', @site |
|
27 | | |
|
27 | | |
|
28 | = link_to 'Back', sites_path |
|
28 | = link_to 'Back', sites_path |
|
29 |
|
29 | ||
|
30 |
|
30 | ||
|
31 | :javascript |
|
31 | :javascript |
|
32 | $('.input-group.date').datetimepicker({ |
|
32 | $('.input-group.date').datetimepicker({ |
|
33 | format: 'DD/MMM/YYYY HH:mm', |
|
33 | format: 'DD/MMM/YYYY HH:mm', |
|
|
34 | + locale: 'en', | ||
|
34 | showTodayButton: true, |
|
35 | showTodayButton: true, |
|
35 | }); |
|
36 | }); |
|
36 |
|
37 |
@@ -2,25 +2,25 | |||||
|
2 | # This file is auto-generated from the current state of the database. Instead |
|
2 | # This file is auto-generated from the current state of the database. Instead |
|
3 | # of editing this file, please use the migrations feature of Active Record to |
|
3 | # of editing this file, please use the migrations feature of Active Record to |
|
4 | # incrementally modify your database, and then regenerate this schema definition. |
|
4 | # incrementally modify your database, and then regenerate this schema definition. |
|
5 | # |
|
5 | # |
|
6 | # Note that this schema.rb definition is the authoritative source for your |
|
6 | # Note that this schema.rb definition is the authoritative source for your |
|
7 | # database schema. If you need to create the application database on another |
|
7 | # database schema. If you need to create the application database on another |
|
8 | # system, you should be using db:schema:load, not running all the migrations |
|
8 | # system, you should be using db:schema:load, not running all the migrations |
|
9 | # from scratch. The latter is a flawed and unsustainable approach (the more migrations |
|
9 | # from scratch. The latter is a flawed and unsustainable approach (the more migrations |
|
10 | # you'll amass, the slower it'll run and the greater likelihood for issues). |
|
10 | # you'll amass, the slower it'll run and the greater likelihood for issues). |
|
11 | # |
|
11 | # |
|
12 | # It's strongly recommended that you check this file into your version control system. |
|
12 | # It's strongly recommended that you check this file into your version control system. |
|
13 |
|
13 | ||
|
14 |
- ActiveRecord::Schema.define(version: 201 |
|
14 | + ActiveRecord::Schema.define(version: 20180612102327) do |
|
15 |
|
15 | ||
|
16 | create_table "announcements", force: :cascade do |t| |
|
16 | create_table "announcements", force: :cascade do |t| |
|
17 | t.string "author", limit: 255 |
|
17 | t.string "author", limit: 255 |
|
18 | t.text "body", limit: 65535 |
|
18 | t.text "body", limit: 65535 |
|
19 | t.boolean "published" |
|
19 | t.boolean "published" |
|
20 | t.datetime "created_at", null: false |
|
20 | t.datetime "created_at", null: false |
|
21 | t.datetime "updated_at", null: false |
|
21 | t.datetime "updated_at", null: false |
|
22 | t.boolean "frontpage", default: false |
|
22 | t.boolean "frontpage", default: false |
|
23 | t.boolean "contest_only", default: false |
|
23 | t.boolean "contest_only", default: false |
|
24 | t.string "title", limit: 255 |
|
24 | t.string "title", limit: 255 |
|
25 | t.string "notes", limit: 255 |
|
25 | t.string "notes", limit: 255 |
|
26 | end |
|
26 | end |
@@ -200,25 +200,25 | |||||
|
200 |
|
200 | ||
|
201 | create_table "submission_view_logs", force: :cascade do |t| |
|
201 | create_table "submission_view_logs", force: :cascade do |t| |
|
202 | t.integer "user_id", limit: 4 |
|
202 | t.integer "user_id", limit: 4 |
|
203 | t.integer "submission_id", limit: 4 |
|
203 | t.integer "submission_id", limit: 4 |
|
204 | t.datetime "created_at", null: false |
|
204 | t.datetime "created_at", null: false |
|
205 | t.datetime "updated_at", null: false |
|
205 | t.datetime "updated_at", null: false |
|
206 | end |
|
206 | end |
|
207 |
|
207 | ||
|
208 | create_table "submissions", force: :cascade do |t| |
|
208 | create_table "submissions", force: :cascade do |t| |
|
209 | t.integer "user_id", limit: 4 |
|
209 | t.integer "user_id", limit: 4 |
|
210 | t.integer "problem_id", limit: 4 |
|
210 | t.integer "problem_id", limit: 4 |
|
211 | t.integer "language_id", limit: 4 |
|
211 | t.integer "language_id", limit: 4 |
|
212 |
- t.text "source", limit: |
|
212 | + t.text "source", limit: 16777215 |
|
213 | t.binary "binary", limit: 65535 |
|
213 | t.binary "binary", limit: 65535 |
|
214 | t.datetime "submitted_at" |
|
214 | t.datetime "submitted_at" |
|
215 | t.datetime "compiled_at" |
|
215 | t.datetime "compiled_at" |
|
216 | t.text "compiler_message", limit: 65535 |
|
216 | t.text "compiler_message", limit: 65535 |
|
217 | t.datetime "graded_at" |
|
217 | t.datetime "graded_at" |
|
218 | t.integer "points", limit: 4 |
|
218 | t.integer "points", limit: 4 |
|
219 | t.text "grader_comment", limit: 65535 |
|
219 | t.text "grader_comment", limit: 65535 |
|
220 | t.integer "number", limit: 4 |
|
220 | t.integer "number", limit: 4 |
|
221 | t.string "source_filename", limit: 255 |
|
221 | t.string "source_filename", limit: 255 |
|
222 | t.float "max_runtime", limit: 24 |
|
222 | t.float "max_runtime", limit: 24 |
|
223 | t.integer "peak_memory", limit: 4 |
|
223 | t.integer "peak_memory", limit: 4 |
|
224 | t.integer "effective_code_length", limit: 4 |
|
224 | t.integer "effective_code_length", limit: 4 |
You need to be logged in to leave comments.
Login now