Description:
- change testcase data to longtext by limit size - fix bug in new submission
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r631:79a5d1c218ba - - 4 files changed: 30 inserted, 24 deleted

@@ -0,0 +1,6
1 + class ChangeTestcaseSize < ActiveRecord::Migration
2 + def change
3 + change_column :testcases, :input, :text, :limit => 4294967295
4 + change_column :testcases, :sol, :text, :limit => 4294967295
5 + end
6 + end
@@ -1,31 +1,31
1 class HeartbeatController < ApplicationController
1 class HeartbeatController < ApplicationController
2 before_filter :admin_authorization, :only => ['index']
2 before_filter :admin_authorization, :only => ['index']
3
3
4 def edit
4 def edit
5 - @user = User.find_by_login(params[:id])
5 + #@user = User.find_by_login(params[:id])
6 - unless @user
6 + #unless @user
7 - render text: "LOGIN_NOT_FOUND"
7 + # render text: "LOGIN_NOT_FOUND"
8 - return
8 + # return
9 - end
9 + #end
10
10
11 #hb = HeartBeat.where(user_id: @user.id, ip_address: request.remote_ip).first
11 #hb = HeartBeat.where(user_id: @user.id, ip_address: request.remote_ip).first
12 #puts "status = #{params[:status]}"
12 #puts "status = #{params[:status]}"
13 #if hb
13 #if hb
14 # if params[:status]
14 # if params[:status]
15 # hb.status = params[:status]
15 # hb.status = params[:status]
16 # hb.save
16 # hb.save
17 # end
17 # end
18 # hb.touch
18 # hb.touch
19 #else
19 #else
20 # HeartBeat.creae(user_id: @user.id, ip_address: request.remote_ip)
20 # HeartBeat.creae(user_id: @user.id, ip_address: request.remote_ip)
21 #end
21 #end
22 - HeartBeat.create(user_id: @user.id, ip_address: request.remote_ip, status: params[:status])
22 + #HeartBeat.create(user_id: @user.id, ip_address: request.remote_ip, status: params[:status])
23
23
24 render text: (GraderConfiguration['right.heartbeat_response'] || 'OK')
24 render text: (GraderConfiguration['right.heartbeat_response'] || 'OK')
25 end
25 end
26
26
27 def index
27 def index
28 @hb = HeartBeat.where("updated_at >= ?",Time.zone.now-2.hours).includes(:user).order(:user_id).all
28 @hb = HeartBeat.where("updated_at >= ?",Time.zone.now-2.hours).includes(:user).order(:user_id).all
29 @num = HeartBeat.where("updated_at >= ?",Time.zone.now-5.minutes).count(:user_id,distinct: true)
29 @num = HeartBeat.where("updated_at >= ?",Time.zone.now-5.minutes).count(:user_id,distinct: true)
30 end
30 end
31 end
31 end
@@ -1,79 +1,79
1 %h2 Live submit
1 %h2 Live submit
2 %br
2 %br
3
3
4 %textarea#text_haha{style: "display:none"}~ @source
4 %textarea#text_haha{style: "display:none"}~ @source
5 .container
5 .container
6 .row
6 .row
7 .col-md-12
7 .col-md-12
8 .alert.alert-info
8 .alert.alert-info
9 Write your code in the following box, choose language, and click submit button when finished
9 Write your code in the following box, choose language, and click submit button when finished
10 .row
10 .row
11 .col-md-8
11 .col-md-8
12 %div#editor{style: 'height: 500px; border-radius: 7px; font-size: 14px;'}
12 %div#editor{style: 'height: 500px; border-radius: 7px; font-size: 14px;'}
13 .col-md-4
13 .col-md-4
14 = form_tag({controller: :main, :action => 'submit'}, :multipart => true, class: 'form') do
14 = form_tag({controller: :main, :action => 'submit'}, :multipart => true, class: 'form') do
15
15
16 = hidden_field_tag 'editor_text', @source
16 = hidden_field_tag 'editor_text', @source
17 = hidden_field_tag 'submission[problem_id]', @problem.id
17 = hidden_field_tag 'submission[problem_id]', @problem.id
18 .form-group
18 .form-group
19 = label_tag "Task:"
19 = label_tag "Task:"
20 = text_field_tag 'asdf', "#{@problem.long_name}", class: 'form-control', disabled: true
20 = text_field_tag 'asdf', "#{@problem.long_name}", class: 'form-control', disabled: true
21
21
22 .form-group
22 .form-group
23 = label_tag 'Language'
23 = label_tag 'Language'
24 = select_tag 'language_id', options_from_collection_for_select(Language.all, 'id', 'pretty_name', @lang_id || Language.find_by_pretty_name("Python").id || Language.first.id), class: 'form-control select', style: "width: 100px"
24 = select_tag 'language_id', options_from_collection_for_select(Language.all, 'id', 'pretty_name', @lang_id || Language.find_by_pretty_name("Python").id || Language.first.id), class: 'form-control select', style: "width: 100px"
25 .form-group
25 .form-group
26 = submit_tag 'Submit', class: 'btn btn-success', id: 'live_submit',
26 = submit_tag 'Submit', class: 'btn btn-success', id: 'live_submit',
27 data: {confirm: "Submitting this source code for task #{@problem.long_name}?"}
27 data: {confirm: "Submitting this source code for task #{@problem.long_name}?"}
28 .panel.panel-info
28 .panel.panel-info
29 .panel-heading
29 .panel-heading
30 Latest Submission Status
30 Latest Submission Status
31 - = link_to "Refresh",get_latest_submission_status_submissions_path(@submission.user,@problem), class: "btn btn-default btn-sm", remote: true
31 + = link_to "Refresh",get_latest_submission_status_submissions_path(@submission.user,@problem), class: "btn btn-default btn-sm", remote: true if @submission
32 .panel-body
32 .panel-body
33 - if @submission
33 - if @submission
34 = render :partial => 'submission_short',
34 = render :partial => 'submission_short',
35 :locals => {submission: @submission, problem_name: @problem.name, problem_id: @problem.id }
35 :locals => {submission: @submission, problem_name: @problem.name, problem_id: @problem.id }
36 .row
36 .row
37 .col-md-12
37 .col-md-12
38 %h2 Console
38 %h2 Console
39 %textarea#console{style: 'height: 100%; width: 100%;background-color:#000;color:#fff;font-family: consolas, monaco, "Droid Sans Mono";',rows: 20}
39 %textarea#console{style: 'height: 100%; width: 100%;background-color:#000;color:#fff;font-family: consolas, monaco, "Droid Sans Mono";',rows: 20}
40
40
41 :javascript
41 :javascript
42 $(document).ready(function() {
42 $(document).ready(function() {
43 e = ace.edit("editor")
43 e = ace.edit("editor")
44 e.setValue($("#text_haha").val());
44 e.setValue($("#text_haha").val());
45 e.gotoLine(1);
45 e.gotoLine(1);
46 $("#language_id").trigger('change');
46 $("#language_id").trigger('change');
47 brython();
47 brython();
48 });
48 });
49
49
50
50
51 %script#__main__{type:'text/python3'}
51 %script#__main__{type:'text/python3'}
52 :plain
52 :plain
53 import sys
53 import sys
54 import traceback
54 import traceback
55
55
56 from browser import document as doc
56 from browser import document as doc
57 from browser import window, alert, console
57 from browser import window, alert, console
58
58
59 _credits = """ Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
59 _credits = """ Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
60 for supporting Python development. See www.python.org for more information."""
60 for supporting Python development. See www.python.org for more information."""
61
61
62 _copyright = """Copyright (c) 2012, Pierre Quentel pierre.quentel@gmail.com
62 _copyright = """Copyright (c) 2012, Pierre Quentel pierre.quentel@gmail.com
63 All Rights Reserved.
63 All Rights Reserved.
64
64
65 Copyright (c) 2001-2013 Python Software Foundation.
65 Copyright (c) 2001-2013 Python Software Foundation.
66 All Rights Reserved.
66 All Rights Reserved.
67
67
68 Copyright (c) 2000 BeOpen.com.
68 Copyright (c) 2000 BeOpen.com.
69 All Rights Reserved.
69 All Rights Reserved.
70
70
71 Copyright (c) 1995-2001 Corporation for National Research Initiatives.
71 Copyright (c) 1995-2001 Corporation for National Research Initiatives.
72 All Rights Reserved.
72 All Rights Reserved.
73
73
74 Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
74 Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
75 All Rights Reserved."""
75 All Rights Reserved."""
76
76
77 _license = """Copyright (c) 2012, Pierre Quentel pierre.quentel@gmail.com
77 _license = """Copyright (c) 2012, Pierre Quentel pierre.quentel@gmail.com
78 All rights reserved.
78 All rights reserved.
79
79
@@ -1,280 +1,280
1 # encoding: UTF-8
1 # encoding: UTF-8
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: 20161031063337) do
14 + ActiveRecord::Schema.define(version: 20170123162543) 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: 16777215
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
27
27
28 create_table "contests", force: :cascade do |t|
28 create_table "contests", force: :cascade do |t|
29 t.string "title", limit: 255
29 t.string "title", limit: 255
30 t.boolean "enabled"
30 t.boolean "enabled"
31 t.datetime "created_at", null: false
31 t.datetime "created_at", null: false
32 t.datetime "updated_at", null: false
32 t.datetime "updated_at", null: false
33 t.string "name", limit: 255
33 t.string "name", limit: 255
34 end
34 end
35
35
36 create_table "contests_problems", id: false, force: :cascade do |t|
36 create_table "contests_problems", id: false, force: :cascade do |t|
37 t.integer "contest_id", limit: 4
37 t.integer "contest_id", limit: 4
38 t.integer "problem_id", limit: 4
38 t.integer "problem_id", limit: 4
39 end
39 end
40
40
41 create_table "contests_users", id: false, force: :cascade do |t|
41 create_table "contests_users", id: false, force: :cascade do |t|
42 t.integer "contest_id", limit: 4
42 t.integer "contest_id", limit: 4
43 t.integer "user_id", limit: 4
43 t.integer "user_id", limit: 4
44 end
44 end
45
45
46 create_table "countries", force: :cascade do |t|
46 create_table "countries", force: :cascade do |t|
47 t.string "name", limit: 255
47 t.string "name", limit: 255
48 t.datetime "created_at", null: false
48 t.datetime "created_at", null: false
49 t.datetime "updated_at", null: false
49 t.datetime "updated_at", null: false
50 end
50 end
51
51
52 create_table "descriptions", force: :cascade do |t|
52 create_table "descriptions", force: :cascade do |t|
53 - t.text "body", limit: 65535
53 + t.text "body", limit: 16777215
54 t.boolean "markdowned"
54 t.boolean "markdowned"
55 t.datetime "created_at", null: false
55 t.datetime "created_at", null: false
56 t.datetime "updated_at", null: false
56 t.datetime "updated_at", null: false
57 end
57 end
58
58
59 create_table "grader_configurations", force: :cascade do |t|
59 create_table "grader_configurations", force: :cascade do |t|
60 t.string "key", limit: 255
60 t.string "key", limit: 255
61 t.string "value_type", limit: 255
61 t.string "value_type", limit: 255
62 t.string "value", limit: 255
62 t.string "value", limit: 255
63 t.datetime "created_at", null: false
63 t.datetime "created_at", null: false
64 t.datetime "updated_at", null: false
64 t.datetime "updated_at", null: false
65 - t.text "description", limit: 65535
65 + t.text "description", limit: 16777215
66 end
66 end
67
67
68 create_table "grader_processes", force: :cascade do |t|
68 create_table "grader_processes", force: :cascade do |t|
69 t.string "host", limit: 255
69 t.string "host", limit: 255
70 t.integer "pid", limit: 4
70 t.integer "pid", limit: 4
71 t.string "mode", limit: 255
71 t.string "mode", limit: 255
72 t.boolean "active"
72 t.boolean "active"
73 t.datetime "created_at", null: false
73 t.datetime "created_at", null: false
74 t.datetime "updated_at", null: false
74 t.datetime "updated_at", null: false
75 t.integer "task_id", limit: 4
75 t.integer "task_id", limit: 4
76 t.string "task_type", limit: 255
76 t.string "task_type", limit: 255
77 t.boolean "terminated"
77 t.boolean "terminated"
78 end
78 end
79
79
80 add_index "grader_processes", ["host", "pid"], name: "index_grader_processes_on_ip_and_pid", using: :btree
80 add_index "grader_processes", ["host", "pid"], name: "index_grader_processes_on_ip_and_pid", using: :btree
81
81
82 create_table "heart_beats", force: :cascade do |t|
82 create_table "heart_beats", force: :cascade do |t|
83 t.integer "user_id", limit: 4
83 t.integer "user_id", limit: 4
84 t.string "ip_address", limit: 255
84 t.string "ip_address", limit: 255
85 t.datetime "created_at", null: false
85 t.datetime "created_at", null: false
86 t.datetime "updated_at", null: false
86 t.datetime "updated_at", null: false
87 t.string "status", limit: 255
87 t.string "status", limit: 255
88 end
88 end
89
89
90 add_index "heart_beats", ["updated_at"], name: "index_heart_beats_on_updated_at", using: :btree
90 add_index "heart_beats", ["updated_at"], name: "index_heart_beats_on_updated_at", using: :btree
91
91
92 create_table "languages", force: :cascade do |t|
92 create_table "languages", force: :cascade do |t|
93 t.string "name", limit: 10
93 t.string "name", limit: 10
94 t.string "pretty_name", limit: 255
94 t.string "pretty_name", limit: 255
95 t.string "ext", limit: 10
95 t.string "ext", limit: 10
96 t.string "common_ext", limit: 255
96 t.string "common_ext", limit: 255
97 end
97 end
98
98
99 create_table "logins", force: :cascade do |t|
99 create_table "logins", force: :cascade do |t|
100 t.integer "user_id", limit: 4
100 t.integer "user_id", limit: 4
101 t.string "ip_address", limit: 255
101 t.string "ip_address", limit: 255
102 t.datetime "created_at", null: false
102 t.datetime "created_at", null: false
103 t.datetime "updated_at", null: false
103 t.datetime "updated_at", null: false
104 end
104 end
105
105
106 create_table "messages", force: :cascade do |t|
106 create_table "messages", force: :cascade do |t|
107 t.integer "sender_id", limit: 4
107 t.integer "sender_id", limit: 4
108 t.integer "receiver_id", limit: 4
108 t.integer "receiver_id", limit: 4
109 t.integer "replying_message_id", limit: 4
109 t.integer "replying_message_id", limit: 4
110 - t.text "body", limit: 65535
110 + t.text "body", limit: 16777215
111 t.boolean "replied"
111 t.boolean "replied"
112 t.datetime "created_at", null: false
112 t.datetime "created_at", null: false
113 t.datetime "updated_at", null: false
113 t.datetime "updated_at", null: false
114 end
114 end
115
115
116 create_table "problems", force: :cascade do |t|
116 create_table "problems", force: :cascade do |t|
117 t.string "name", limit: 30
117 t.string "name", limit: 30
118 t.string "full_name", limit: 255
118 t.string "full_name", limit: 255
119 t.integer "full_score", limit: 4
119 t.integer "full_score", limit: 4
120 t.date "date_added"
120 t.date "date_added"
121 t.boolean "available"
121 t.boolean "available"
122 t.string "url", limit: 255
122 t.string "url", limit: 255
123 t.integer "description_id", limit: 4
123 t.integer "description_id", limit: 4
124 t.boolean "test_allowed"
124 t.boolean "test_allowed"
125 t.boolean "output_only"
125 t.boolean "output_only"
126 t.string "description_filename", limit: 255
126 t.string "description_filename", limit: 255
127 end
127 end
128
128
129 create_table "rights", force: :cascade do |t|
129 create_table "rights", force: :cascade do |t|
130 t.string "name", limit: 255
130 t.string "name", limit: 255
131 t.string "controller", limit: 255
131 t.string "controller", limit: 255
132 t.string "action", limit: 255
132 t.string "action", limit: 255
133 end
133 end
134
134
135 create_table "rights_roles", id: false, force: :cascade do |t|
135 create_table "rights_roles", id: false, force: :cascade do |t|
136 t.integer "right_id", limit: 4
136 t.integer "right_id", limit: 4
137 t.integer "role_id", limit: 4
137 t.integer "role_id", limit: 4
138 end
138 end
139
139
140 add_index "rights_roles", ["role_id"], name: "index_rights_roles_on_role_id", using: :btree
140 add_index "rights_roles", ["role_id"], name: "index_rights_roles_on_role_id", using: :btree
141
141
142 create_table "roles", force: :cascade do |t|
142 create_table "roles", force: :cascade do |t|
143 t.string "name", limit: 255
143 t.string "name", limit: 255
144 end
144 end
145
145
146 create_table "roles_users", id: false, force: :cascade do |t|
146 create_table "roles_users", id: false, force: :cascade do |t|
147 t.integer "role_id", limit: 4
147 t.integer "role_id", limit: 4
148 t.integer "user_id", limit: 4
148 t.integer "user_id", limit: 4
149 end
149 end
150
150
151 add_index "roles_users", ["user_id"], name: "index_roles_users_on_user_id", using: :btree
151 add_index "roles_users", ["user_id"], name: "index_roles_users_on_user_id", using: :btree
152
152
153 create_table "sessions", force: :cascade do |t|
153 create_table "sessions", force: :cascade do |t|
154 t.string "session_id", limit: 255
154 t.string "session_id", limit: 255
155 - t.text "data", limit: 65535
155 + t.text "data", limit: 16777215
156 t.datetime "updated_at"
156 t.datetime "updated_at"
157 end
157 end
158
158
159 add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", using: :btree
159 add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", using: :btree
160 add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree
160 add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree
161
161
162 create_table "sites", force: :cascade do |t|
162 create_table "sites", force: :cascade do |t|
163 t.string "name", limit: 255
163 t.string "name", limit: 255
164 t.boolean "started"
164 t.boolean "started"
165 t.datetime "start_time"
165 t.datetime "start_time"
166 t.datetime "created_at", null: false
166 t.datetime "created_at", null: false
167 t.datetime "updated_at", null: false
167 t.datetime "updated_at", null: false
168 t.integer "country_id", limit: 4
168 t.integer "country_id", limit: 4
169 t.string "password", limit: 255
169 t.string "password", limit: 255
170 end
170 end
171
171
172 create_table "submission_view_logs", force: :cascade do |t|
172 create_table "submission_view_logs", force: :cascade do |t|
173 t.integer "user_id", limit: 4
173 t.integer "user_id", limit: 4
174 t.integer "submission_id", limit: 4
174 t.integer "submission_id", limit: 4
175 t.datetime "created_at", null: false
175 t.datetime "created_at", null: false
176 t.datetime "updated_at", null: false
176 t.datetime "updated_at", null: false
177 end
177 end
178
178
179 create_table "submissions", force: :cascade do |t|
179 create_table "submissions", force: :cascade do |t|
180 t.integer "user_id", limit: 4
180 t.integer "user_id", limit: 4
181 t.integer "problem_id", limit: 4
181 t.integer "problem_id", limit: 4
182 t.integer "language_id", limit: 4
182 t.integer "language_id", limit: 4
183 - t.text "source", limit: 65535
183 + t.text "source", limit: 16777215
184 t.binary "binary", limit: 65535
184 t.binary "binary", limit: 65535
185 t.datetime "submitted_at"
185 t.datetime "submitted_at"
186 t.datetime "compiled_at"
186 t.datetime "compiled_at"
187 - t.text "compiler_message", limit: 65535
187 + t.text "compiler_message", limit: 16777215
188 t.datetime "graded_at"
188 t.datetime "graded_at"
189 t.integer "points", limit: 4
189 t.integer "points", limit: 4
190 - t.text "grader_comment", limit: 65535
190 + t.text "grader_comment", limit: 16777215
191 t.integer "number", limit: 4
191 t.integer "number", limit: 4
192 t.string "source_filename", limit: 255
192 t.string "source_filename", limit: 255
193 t.float "max_runtime", limit: 24
193 t.float "max_runtime", limit: 24
194 t.integer "peak_memory", limit: 4
194 t.integer "peak_memory", limit: 4
195 t.integer "effective_code_length", limit: 4
195 t.integer "effective_code_length", limit: 4
196 t.string "ip_address", limit: 255
196 t.string "ip_address", limit: 255
197 end
197 end
198
198
199 add_index "submissions", ["user_id", "problem_id", "number"], name: "index_submissions_on_user_id_and_problem_id_and_number", unique: true, using: :btree
199 add_index "submissions", ["user_id", "problem_id", "number"], name: "index_submissions_on_user_id_and_problem_id_and_number", unique: true, using: :btree
200 add_index "submissions", ["user_id", "problem_id"], name: "index_submissions_on_user_id_and_problem_id", using: :btree
200 add_index "submissions", ["user_id", "problem_id"], name: "index_submissions_on_user_id_and_problem_id", using: :btree
201
201
202 create_table "tasks", force: :cascade do |t|
202 create_table "tasks", force: :cascade do |t|
203 t.integer "submission_id", limit: 4
203 t.integer "submission_id", limit: 4
204 t.datetime "created_at"
204 t.datetime "created_at"
205 t.integer "status", limit: 4
205 t.integer "status", limit: 4
206 t.datetime "updated_at"
206 t.datetime "updated_at"
207 end
207 end
208
208
209 create_table "test_pairs", force: :cascade do |t|
209 create_table "test_pairs", force: :cascade do |t|
210 t.integer "problem_id", limit: 4
210 t.integer "problem_id", limit: 4
211 - t.text "input", limit: 16777215
211 + t.text "input", limit: 4294967295
212 - t.text "solution", limit: 16777215
212 + t.text "solution", limit: 4294967295
213 t.datetime "created_at", null: false
213 t.datetime "created_at", null: false
214 t.datetime "updated_at", null: false
214 t.datetime "updated_at", null: false
215 end
215 end
216
216
217 create_table "test_requests", force: :cascade do |t|
217 create_table "test_requests", force: :cascade do |t|
218 t.integer "user_id", limit: 4
218 t.integer "user_id", limit: 4
219 t.integer "problem_id", limit: 4
219 t.integer "problem_id", limit: 4
220 t.integer "submission_id", limit: 4
220 t.integer "submission_id", limit: 4
221 t.string "input_file_name", limit: 255
221 t.string "input_file_name", limit: 255
222 t.string "output_file_name", limit: 255
222 t.string "output_file_name", limit: 255
223 t.string "running_stat", limit: 255
223 t.string "running_stat", limit: 255
224 t.integer "status", limit: 4
224 t.integer "status", limit: 4
225 t.datetime "updated_at", null: false
225 t.datetime "updated_at", null: false
226 t.datetime "submitted_at"
226 t.datetime "submitted_at"
227 t.datetime "compiled_at"
227 t.datetime "compiled_at"
228 - t.text "compiler_message", limit: 65535
228 + t.text "compiler_message", limit: 16777215
229 t.datetime "graded_at"
229 t.datetime "graded_at"
230 t.string "grader_comment", limit: 255
230 t.string "grader_comment", limit: 255
231 t.datetime "created_at", null: false
231 t.datetime "created_at", null: false
232 t.float "running_time", limit: 24
232 t.float "running_time", limit: 24
233 t.string "exit_status", limit: 255
233 t.string "exit_status", limit: 255
234 t.integer "memory_usage", limit: 4
234 t.integer "memory_usage", limit: 4
235 end
235 end
236
236
237 add_index "test_requests", ["user_id", "problem_id"], name: "index_test_requests_on_user_id_and_problem_id", using: :btree
237 add_index "test_requests", ["user_id", "problem_id"], name: "index_test_requests_on_user_id_and_problem_id", using: :btree
238
238
239 create_table "testcases", force: :cascade do |t|
239 create_table "testcases", force: :cascade do |t|
240 t.integer "problem_id", limit: 4
240 t.integer "problem_id", limit: 4
241 t.integer "num", limit: 4
241 t.integer "num", limit: 4
242 t.integer "group", limit: 4
242 t.integer "group", limit: 4
243 t.integer "score", limit: 4
243 t.integer "score", limit: 4
244 - t.text "input", limit: 65535
244 + t.text "input", limit: 4294967295
245 - t.text "sol", limit: 65535
245 + t.text "sol", limit: 4294967295
246 - t.datetime "created_at"
246 + t.datetime "created_at", null: false
247 - t.datetime "updated_at"
247 + t.datetime "updated_at", null: false
248 end
248 end
249
249
250 add_index "testcases", ["problem_id"], name: "index_testcases_on_problem_id", using: :btree
250 add_index "testcases", ["problem_id"], name: "index_testcases_on_problem_id", using: :btree
251
251
252 create_table "user_contest_stats", force: :cascade do |t|
252 create_table "user_contest_stats", force: :cascade do |t|
253 t.integer "user_id", limit: 4
253 t.integer "user_id", limit: 4
254 t.datetime "started_at"
254 t.datetime "started_at"
255 t.datetime "created_at", null: false
255 t.datetime "created_at", null: false
256 t.datetime "updated_at", null: false
256 t.datetime "updated_at", null: false
257 t.boolean "forced_logout"
257 t.boolean "forced_logout"
258 end
258 end
259
259
260 create_table "users", force: :cascade do |t|
260 create_table "users", force: :cascade do |t|
261 t.string "login", limit: 50
261 t.string "login", limit: 50
262 t.string "full_name", limit: 255
262 t.string "full_name", limit: 255
263 t.string "hashed_password", limit: 255
263 t.string "hashed_password", limit: 255
264 t.string "salt", limit: 5
264 t.string "salt", limit: 5
265 t.string "alias", limit: 255
265 t.string "alias", limit: 255
266 t.string "email", limit: 255
266 t.string "email", limit: 255
267 t.integer "site_id", limit: 4
267 t.integer "site_id", limit: 4
268 t.integer "country_id", limit: 4
268 t.integer "country_id", limit: 4
269 t.boolean "activated", default: false
269 t.boolean "activated", default: false
270 t.datetime "created_at"
270 t.datetime "created_at"
271 t.datetime "updated_at"
271 t.datetime "updated_at"
272 + t.string "section", limit: 255
272 t.boolean "enabled", default: true
273 t.boolean "enabled", default: true
273 t.string "remark", limit: 255
274 t.string "remark", limit: 255
274 t.string "last_ip", limit: 255
275 t.string "last_ip", limit: 255
275 - t.string "section", limit: 255
276 end
276 end
277
277
278 add_index "users", ["login"], name: "index_users_on_login", unique: true, using: :btree
278 add_index "users", ["login"], name: "index_users_on_login", unique: true, using: :btree
279
279
280 end
280 end
You need to be logged in to leave comments. Login now