Description:
Merge pull request #25 from nattee/master
update outdated gem
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r769:6eb8c22c844a - - 13 files changed: 186 inserted, 158 deleted
@@ -0,0 +1,1 | |||||
|
|
1 | + grader |
@@ -0,0 +1,1 | |||||
|
|
1 | + ruby-2.6.3 |
@@ -8,28 +8,28 | |||||
|
8 | /.bundle |
|
8 | /.bundle |
|
9 |
|
9 | ||
|
10 | # Ignore the default SQLite database. |
|
10 | # Ignore the default SQLite database. |
|
11 | /db/*.sqlite3 |
|
11 | /db/*.sqlite3 |
|
12 |
|
12 | ||
|
13 | # Ignore all logfiles and tempfiles. |
|
13 | # Ignore all logfiles and tempfiles. |
|
14 | /log/*.log |
|
14 | /log/*.log |
|
15 | /tmp |
|
15 | /tmp |
|
16 |
|
16 | ||
|
17 | *~ |
|
17 | *~ |
|
18 |
|
18 | ||
|
19 | /vendor/plugins/rails_upgrade |
|
19 | /vendor/plugins/rails_upgrade |
|
20 |
|
20 | ||
|
21 | #ignore public assets??? |
|
21 | #ignore public assets??? |
|
22 | /public/assets |
|
22 | /public/assets |
|
23 | /public |
|
23 | /public |
|
24 |
|
24 | ||
|
25 | /data |
|
25 | /data |
|
26 |
|
26 | ||
|
27 | #ignore .orig and .swp |
|
27 | #ignore .orig and .swp |
|
28 | *.orig |
|
28 | *.orig |
|
29 | *.swp |
|
29 | *.swp |
|
30 |
|
30 | ||
|
31 | #ignore rvm setting file |
|
31 | #ignore rvm setting file |
|
32 | - .ruby-gemset |
|
32 | + #.ruby-gemset |
|
33 | - .ruby-version |
|
33 | + #.ruby-version |
|
34 |
|
34 | ||
|
35 | /config/secrets.yml |
|
35 | /config/secrets.yml |
@@ -39,49 +39,50 | |||||
|
39 | # Use unicorn as the app server |
|
39 | # Use unicorn as the app server |
|
40 | # gem 'unicorn' |
|
40 | # gem 'unicorn' |
|
41 |
|
41 | ||
|
42 | # Deploy with Capistrano |
|
42 | # Deploy with Capistrano |
|
43 | # gem 'capistrano' |
|
43 | # gem 'capistrano' |
|
44 |
|
44 | ||
|
45 | # To use debugger |
|
45 | # To use debugger |
|
46 | # gem 'debugger' |
|
46 | # gem 'debugger' |
|
47 | # |
|
47 | # |
|
48 |
|
48 | ||
|
49 | #in-place editor |
|
49 | #in-place editor |
|
50 | gem 'best_in_place', '~> 3.0.1' |
|
50 | gem 'best_in_place', '~> 3.0.1' |
|
51 |
|
51 | ||
|
52 | # jquery addition |
|
52 | # jquery addition |
|
53 | gem 'jquery-rails' |
|
53 | gem 'jquery-rails' |
|
54 | gem 'jquery-ui-rails' |
|
54 | gem 'jquery-ui-rails' |
|
55 | gem 'jquery-timepicker-addon-rails' |
|
55 | gem 'jquery-timepicker-addon-rails' |
|
56 | gem 'jquery-tablesorter' |
|
56 | gem 'jquery-tablesorter' |
|
57 | gem 'jquery-countdown-rails' |
|
57 | gem 'jquery-countdown-rails' |
|
58 |
|
58 | ||
|
59 | #syntax highlighter |
|
59 | #syntax highlighter |
|
60 | gem 'rouge' |
|
60 | gem 'rouge' |
|
61 |
|
61 | ||
|
62 | #bootstrap add-ons |
|
62 | #bootstrap add-ons |
|
63 |
- gem 'bootstrap-sass', '~> 3. |
|
63 | + gem 'bootstrap-sass', '~> 3.4.1' |
|
|
64 | + gem 'sassc-rails', '>= 2.1.0' | ||
|
64 | gem 'bootstrap-switch-rails' |
|
65 | gem 'bootstrap-switch-rails' |
|
65 | gem 'bootstrap-toggle-rails' |
|
66 | gem 'bootstrap-toggle-rails' |
|
66 | gem 'autoprefixer-rails' |
|
67 | gem 'autoprefixer-rails' |
|
67 | gem 'momentjs-rails' |
|
68 | gem 'momentjs-rails' |
|
68 | gem 'rails_bootstrap_sortable' |
|
69 | gem 'rails_bootstrap_sortable' |
|
69 | gem 'bootstrap-datepicker-rails' |
|
70 | gem 'bootstrap-datepicker-rails' |
|
70 | gem 'bootstrap3-datetimepicker-rails' |
|
71 | gem 'bootstrap3-datetimepicker-rails' |
|
71 | gem 'jquery-datatables-rails' |
|
72 | gem 'jquery-datatables-rails' |
|
72 |
|
73 | ||
|
73 | #----------- user interface ----------------- |
|
74 | #----------- user interface ----------------- |
|
74 | #select 2 |
|
75 | #select 2 |
|
75 | gem 'select2-rails' |
|
76 | gem 'select2-rails' |
|
76 | #ace editor |
|
77 | #ace editor |
|
77 | gem 'ace-rails-ap' |
|
78 | gem 'ace-rails-ap' |
|
78 | #paginator |
|
79 | #paginator |
|
79 | gem 'will_paginate', '~> 3.0.7' |
|
80 | gem 'will_paginate', '~> 3.0.7' |
|
80 |
|
81 | ||
|
81 | gem 'mail' |
|
82 | gem 'mail' |
|
82 | gem 'rdiscount' |
|
83 | gem 'rdiscount' |
|
83 | gem 'dynamic_form' |
|
84 | gem 'dynamic_form' |
|
84 | gem 'in_place_editing' |
|
85 | gem 'in_place_editing' |
|
85 | gem 'verification', :git => 'https://github.com/sikachu/verification.git' |
|
86 | gem 'verification', :git => 'https://github.com/sikachu/verification.git' |
|
86 |
|
87 | ||
|
87 |
|
88 |
@@ -1,247 +1,267 | |||||
|
1 | GIT |
|
1 | GIT |
|
2 | remote: https://github.com/sikachu/verification.git |
|
2 | remote: https://github.com/sikachu/verification.git |
|
3 | revision: ff31697b940d7b0e2ec65f08764215c96104e76d |
|
3 | revision: ff31697b940d7b0e2ec65f08764215c96104e76d |
|
4 | specs: |
|
4 | specs: |
|
5 | verification (1.0.3) |
|
5 | verification (1.0.3) |
|
6 | actionpack (>= 3.0.0, < 5.1) |
|
6 | actionpack (>= 3.0.0, < 5.1) |
|
7 | activesupport (>= 3.0.0, < 5.1) |
|
7 | activesupport (>= 3.0.0, < 5.1) |
|
8 |
|
8 | ||
|
9 | GEM |
|
9 | GEM |
|
10 | remote: https://rubygems.org/ |
|
10 | remote: https://rubygems.org/ |
|
11 | specs: |
|
11 | specs: |
|
12 | RubyInline (3.12.4) |
|
12 | RubyInline (3.12.4) |
|
13 | ZenTest (~> 4.3) |
|
13 | ZenTest (~> 4.3) |
|
14 |
- ZenTest (4.11. |
|
14 | + ZenTest (4.11.2) |
|
15 |
- ace-rails-ap (4. |
|
15 | + ace-rails-ap (4.2) |
|
16 |
- actionmailer (4.2. |
|
16 | + actionmailer (4.2.11.1) |
|
17 |
- actionpack (= 4.2. |
|
17 | + actionpack (= 4.2.11.1) |
|
18 |
- actionview (= 4.2. |
|
18 | + actionview (= 4.2.11.1) |
|
19 |
- activejob (= 4.2. |
|
19 | + activejob (= 4.2.11.1) |
|
20 | mail (~> 2.5, >= 2.5.4) |
|
20 | mail (~> 2.5, >= 2.5.4) |
|
21 | rails-dom-testing (~> 1.0, >= 1.0.5) |
|
21 | rails-dom-testing (~> 1.0, >= 1.0.5) |
|
22 |
- actionpack (4.2. |
|
22 | + actionpack (4.2.11.1) |
|
23 |
- actionview (= 4.2. |
|
23 | + actionview (= 4.2.11.1) |
|
24 |
- activesupport (= 4.2. |
|
24 | + activesupport (= 4.2.11.1) |
|
25 | rack (~> 1.6) |
|
25 | rack (~> 1.6) |
|
26 | rack-test (~> 0.6.2) |
|
26 | rack-test (~> 0.6.2) |
|
27 | rails-dom-testing (~> 1.0, >= 1.0.5) |
|
27 | rails-dom-testing (~> 1.0, >= 1.0.5) |
|
28 | rails-html-sanitizer (~> 1.0, >= 1.0.2) |
|
28 | rails-html-sanitizer (~> 1.0, >= 1.0.2) |
|
29 |
- actionview (4.2. |
|
29 | + actionview (4.2.11.1) |
|
30 |
- activesupport (= 4.2. |
|
30 | + activesupport (= 4.2.11.1) |
|
31 | builder (~> 3.1) |
|
31 | builder (~> 3.1) |
|
32 | erubis (~> 2.7.0) |
|
32 | erubis (~> 2.7.0) |
|
33 | rails-dom-testing (~> 1.0, >= 1.0.5) |
|
33 | rails-dom-testing (~> 1.0, >= 1.0.5) |
|
34 |
- rails-html-sanitizer (~> 1.0, >= 1.0. |
|
34 | + rails-html-sanitizer (~> 1.0, >= 1.0.3) |
|
35 |
- activejob (4.2. |
|
35 | + activejob (4.2.11.1) |
|
36 |
- activesupport (= 4.2. |
|
36 | + activesupport (= 4.2.11.1) |
|
37 | globalid (>= 0.3.0) |
|
37 | globalid (>= 0.3.0) |
|
38 |
- activemodel (4.2. |
|
38 | + activemodel (4.2.11.1) |
|
39 |
- activesupport (= 4.2. |
|
39 | + activesupport (= 4.2.11.1) |
|
40 | builder (~> 3.1) |
|
40 | builder (~> 3.1) |
|
41 |
- activerecord (4.2. |
|
41 | + activerecord (4.2.11.1) |
|
42 |
- activemodel (= 4.2. |
|
42 | + activemodel (= 4.2.11.1) |
|
43 |
- activesupport (= 4.2. |
|
43 | + activesupport (= 4.2.11.1) |
|
44 | arel (~> 6.0) |
|
44 | arel (~> 6.0) |
|
45 |
- activerecord-session_store (1. |
|
45 | + activerecord-session_store (1.1.3) |
|
46 |
- actionpack (>= 4.0 |
|
46 | + actionpack (>= 4.0) |
|
47 |
- activerecord (>= 4.0 |
|
47 | + activerecord (>= 4.0) |
|
48 | multi_json (~> 1.11, >= 1.11.2) |
|
48 | multi_json (~> 1.11, >= 1.11.2) |
|
49 | rack (>= 1.5.2, < 3) |
|
49 | rack (>= 1.5.2, < 3) |
|
50 |
- railties (>= 4.0 |
|
50 | + railties (>= 4.0) |
|
51 |
- activesupport (4.2. |
|
51 | + activesupport (4.2.11.1) |
|
52 | i18n (~> 0.7) |
|
52 | i18n (~> 0.7) |
|
53 | - json (~> 1.7, >= 1.7.7) |
|
||
|
54 | minitest (~> 5.1) |
|
53 | minitest (~> 5.1) |
|
55 | thread_safe (~> 0.3, >= 0.3.4) |
|
54 | thread_safe (~> 0.3, >= 0.3.4) |
|
56 | tzinfo (~> 1.1) |
|
55 | tzinfo (~> 1.1) |
|
57 | ansi (1.5.0) |
|
56 | ansi (1.5.0) |
|
58 | arel (6.0.4) |
|
57 | arel (6.0.4) |
|
59 |
- autoprefixer-rails ( |
|
58 | + autoprefixer-rails (9.5.1.1) |
|
60 | execjs |
|
59 | execjs |
|
61 | best_in_place (3.0.3) |
|
60 | best_in_place (3.0.3) |
|
62 | actionpack (>= 3.2) |
|
61 | actionpack (>= 3.2) |
|
63 | railties (>= 3.2) |
|
62 | railties (>= 3.2) |
|
64 |
- bootstrap-datepicker-rails (1. |
|
63 | + bootstrap-datepicker-rails (1.8.0.1) |
|
65 | railties (>= 3.0) |
|
64 | railties (>= 3.0) |
|
66 |
- bootstrap-sass (3. |
|
65 | + bootstrap-sass (3.4.1) |
|
67 | - sass (~> 3.2) |
|
66 | + autoprefixer-rails (>= 5.2.1) |
|
68 | - bootstrap-switch-rails (3.3.3) |
|
67 | + sassc (>= 2.0.0) |
|
|
68 | + bootstrap-switch-rails (3.3.4) | ||
|
69 | bootstrap-toggle-rails (2.2.1.0) |
|
69 | bootstrap-toggle-rails (2.2.1.0) |
|
70 | bootstrap3-datetimepicker-rails (4.17.47) |
|
70 | bootstrap3-datetimepicker-rails (4.17.47) |
|
71 | momentjs-rails (>= 2.8.1) |
|
71 | momentjs-rails (>= 2.8.1) |
|
72 |
- builder (3.2. |
|
72 | + builder (3.2.3) |
|
73 |
- coffee-rails (4.2. |
|
73 | + coffee-rails (4.2.2) |
|
74 | coffee-script (>= 2.2.0) |
|
74 | coffee-script (>= 2.2.0) |
|
75 |
- railties (>= 4.0.0 |
|
75 | + railties (>= 4.0.0) |
|
76 | coffee-script (2.4.1) |
|
76 | coffee-script (2.4.1) |
|
77 | coffee-script-source |
|
77 | coffee-script-source |
|
78 | execjs |
|
78 | execjs |
|
79 | coffee-script-source (1.12.2) |
|
79 | coffee-script-source (1.12.2) |
|
80 |
- concurrent-ruby (1. |
|
80 | + concurrent-ruby (1.1.5) |
|
|
81 | + crass (1.0.4) | ||
|
81 | dynamic_form (1.1.4) |
|
82 | dynamic_form (1.1.4) |
|
82 | erubis (2.7.0) |
|
83 | erubis (2.7.0) |
|
83 | execjs (2.7.0) |
|
84 | execjs (2.7.0) |
|
84 | - fuzzy-string-match (1.0.0) |
|
85 | + ffi (1.11.1) |
|
|
86 | + fuzzy-string-match (1.0.1) | ||
|
85 | RubyInline (>= 3.8.6) |
|
87 | RubyInline (>= 3.8.6) |
|
86 |
- globalid (0. |
|
88 | + globalid (0.4.2) |
|
87 |
- activesupport (>= 4. |
|
89 | + activesupport (>= 4.2.0) |
|
88 |
- haml ( |
|
90 | + haml (5.1.0) |
|
|
91 | + temple (>= 0.8.0) | ||
|
89 | tilt |
|
92 | tilt |
|
90 |
- haml-rails ( |
|
93 | + haml-rails (1.0.0) |
|
91 | actionpack (>= 4.0.1) |
|
94 | actionpack (>= 4.0.1) |
|
92 | activesupport (>= 4.0.1) |
|
95 | activesupport (>= 4.0.1) |
|
93 |
- haml (>= 4.0.6, < |
|
96 | + haml (>= 4.0.6, < 6.0) |
|
94 | html2haml (>= 1.0.1) |
|
97 | html2haml (>= 1.0.1) |
|
95 | railties (>= 4.0.1) |
|
98 | railties (>= 4.0.1) |
|
96 |
- html2haml (2. |
|
99 | + html2haml (2.2.0) |
|
97 | erubis (~> 2.7.0) |
|
100 | erubis (~> 2.7.0) |
|
98 |
- haml ( |
|
101 | + haml (>= 4.0, < 6) |
|
99 |
- nokogiri ( |
|
102 | + nokogiri (>= 1.6.0) |
|
100 | ruby_parser (~> 3.5) |
|
103 | ruby_parser (~> 3.5) |
|
101 |
- i18n (0. |
|
104 | + i18n (0.9.5) |
|
|
105 | + concurrent-ruby (~> 1.0) | ||
|
102 | in_place_editing (1.2.0) |
|
106 | in_place_editing (1.2.0) |
|
103 | jquery-countdown-rails (2.0.2) |
|
107 | jquery-countdown-rails (2.0.2) |
|
104 | jquery-datatables-rails (3.4.0) |
|
108 | jquery-datatables-rails (3.4.0) |
|
105 | actionpack (>= 3.1) |
|
109 | actionpack (>= 3.1) |
|
106 | jquery-rails |
|
110 | jquery-rails |
|
107 | railties (>= 3.1) |
|
111 | railties (>= 3.1) |
|
108 | sass-rails |
|
112 | sass-rails |
|
109 |
- jquery-rails (4. |
|
113 | + jquery-rails (4.3.3) |
|
110 | rails-dom-testing (>= 1, < 3) |
|
114 | rails-dom-testing (>= 1, < 3) |
|
111 | railties (>= 4.2.0) |
|
115 | railties (>= 4.2.0) |
|
112 | thor (>= 0.14, < 2.0) |
|
116 | thor (>= 0.14, < 2.0) |
|
113 |
- jquery-tablesorter (1.2 |
|
117 | + jquery-tablesorter (1.26.1) |
|
114 | railties (>= 3.2, < 6) |
|
118 | railties (>= 3.2, < 6) |
|
115 | jquery-timepicker-addon-rails (1.4.1) |
|
119 | jquery-timepicker-addon-rails (1.4.1) |
|
116 | railties (>= 3.1) |
|
120 | railties (>= 3.1) |
|
117 | jquery-ui-rails (6.0.1) |
|
121 | jquery-ui-rails (6.0.1) |
|
118 | railties (>= 3.2.16) |
|
122 | railties (>= 3.2.16) |
|
119 |
- |
|
123 | + loofah (2.2.3) |
|
120 | - loofah (2.0.3) |
|
124 | + crass (~> 1.0.2) |
|
121 | nokogiri (>= 1.5.9) |
|
125 | nokogiri (>= 1.5.9) |
|
122 |
- mail (2. |
|
126 | + mail (2.7.1) |
|
123 |
- mi |
|
127 | + mini_mime (>= 0.1.1) |
|
124 |
- mi |
|
128 | + mini_mime (1.0.1) |
|
125 | - mime-types-data (~> 3.2015) |
|
129 | + mini_portile2 (2.4.0) |
|
126 | - mime-types-data (3.2016.0521) |
|
130 | + minitest (5.11.3) |
|
127 |
- mini |
|
131 | + minitest-reporters (1.3.6) |
|
128 | - minitest (5.10.1) |
|
||
|
129 | - minitest-reporters (1.1.13) |
|
||
|
130 | ansi |
|
132 | ansi |
|
131 | builder |
|
133 | builder |
|
132 | minitest (>= 5.0) |
|
134 | minitest (>= 5.0) |
|
133 | ruby-progressbar |
|
135 | ruby-progressbar |
|
134 |
- momentjs-rails (2. |
|
136 | + momentjs-rails (2.20.1) |
|
135 | railties (>= 3.1) |
|
137 | railties (>= 3.1) |
|
136 |
- multi_json (1.1 |
|
138 | + multi_json (1.13.1) |
|
137 |
- mysql2 (0. |
|
139 | + mysql2 (0.5.2) |
|
138 |
- nokogiri (1. |
|
140 | + nokogiri (1.10.3) |
|
139 |
- mini_portile2 (~> 2. |
|
141 | + mini_portile2 (~> 2.4.0) |
|
140 |
- rack (1.6. |
|
142 | + rack (1.6.11) |
|
141 | rack-test (0.6.3) |
|
143 | rack-test (0.6.3) |
|
142 | rack (>= 1.0) |
|
144 | rack (>= 1.0) |
|
143 |
- rails (4.2. |
|
145 | + rails (4.2.11.1) |
|
144 |
- actionmailer (= 4.2. |
|
146 | + actionmailer (= 4.2.11.1) |
|
145 |
- actionpack (= 4.2. |
|
147 | + actionpack (= 4.2.11.1) |
|
146 |
- actionview (= 4.2. |
|
148 | + actionview (= 4.2.11.1) |
|
147 |
- activejob (= 4.2. |
|
149 | + activejob (= 4.2.11.1) |
|
148 |
- activemodel (= 4.2. |
|
150 | + activemodel (= 4.2.11.1) |
|
149 |
- activerecord (= 4.2. |
|
151 | + activerecord (= 4.2.11.1) |
|
150 |
- activesupport (= 4.2. |
|
152 | + activesupport (= 4.2.11.1) |
|
151 | bundler (>= 1.3.0, < 2.0) |
|
153 | bundler (>= 1.3.0, < 2.0) |
|
152 |
- railties (= 4.2. |
|
154 | + railties (= 4.2.11.1) |
|
153 | sprockets-rails |
|
155 | sprockets-rails |
|
154 | rails-deprecated_sanitizer (1.0.3) |
|
156 | rails-deprecated_sanitizer (1.0.3) |
|
155 | activesupport (>= 4.2.0.alpha) |
|
157 | activesupport (>= 4.2.0.alpha) |
|
156 |
- rails-dom-testing (1.0. |
|
158 | + rails-dom-testing (1.0.9) |
|
157 |
- activesupport (>= 4.2.0 |
|
159 | + activesupport (>= 4.2.0, < 5.0) |
|
158 | nokogiri (~> 1.6) |
|
160 | nokogiri (~> 1.6) |
|
159 | rails-deprecated_sanitizer (>= 1.0.1) |
|
161 | rails-deprecated_sanitizer (>= 1.0.1) |
|
160 |
- rails-html-sanitizer (1.0. |
|
162 | + rails-html-sanitizer (1.0.4) |
|
161 |
- loofah (~> 2. |
|
163 | + loofah (~> 2.2, >= 2.2.2) |
|
162 |
- rails_bootstrap_sortable (2.0. |
|
164 | + rails_bootstrap_sortable (2.0.6) |
|
163 | momentjs-rails (>= 2.8.3) |
|
165 | momentjs-rails (>= 2.8.3) |
|
164 |
- railties (4.2. |
|
166 | + railties (4.2.11.1) |
|
165 |
- actionpack (= 4.2. |
|
167 | + actionpack (= 4.2.11.1) |
|
166 |
- activesupport (= 4.2. |
|
168 | + activesupport (= 4.2.11.1) |
|
167 | rake (>= 0.8.7) |
|
169 | rake (>= 0.8.7) |
|
168 | thor (>= 0.18.1, < 2.0) |
|
170 | thor (>= 0.18.1, < 2.0) |
|
169 |
- rake (12. |
|
171 | + rake (12.3.2) |
|
|
172 | + rb-fsevent (0.10.3) | ||
|
|
173 | + rb-inotify (0.10.0) | ||
|
|
174 | + ffi (~> 1.0) | ||
|
170 | rdiscount (2.2.0.1) |
|
175 | rdiscount (2.2.0.1) |
|
171 |
- rouge ( |
|
176 | + rouge (3.3.0) |
|
172 |
- ruby-progressbar (1. |
|
177 | + ruby-progressbar (1.10.0) |
|
173 |
- ruby_parser (3. |
|
178 | + ruby_parser (3.13.1) |
|
174 |
- sexp_processor (~> 4. |
|
179 | + sexp_processor (~> 4.9) |
|
175 |
- sass (3.4 |
|
180 | + sass (3.7.4) |
|
176 |
- |
|
181 | + sass-listen (~> 4.0.0) |
|
|
182 | + sass-listen (4.0.0) | ||
|
|
183 | + rb-fsevent (~> 0.9, >= 0.9.4) | ||
|
|
184 | + rb-inotify (~> 0.9, >= 0.9.7) | ||
|
|
185 | + sass-rails (5.0.7) | ||
|
177 | railties (>= 4.0.0, < 6) |
|
186 | railties (>= 4.0.0, < 6) |
|
178 | sass (~> 3.1) |
|
187 | sass (~> 3.1) |
|
179 | sprockets (>= 2.8, < 4.0) |
|
188 | sprockets (>= 2.8, < 4.0) |
|
180 | sprockets-rails (>= 2.0, < 4.0) |
|
189 | sprockets-rails (>= 2.0, < 4.0) |
|
181 | tilt (>= 1.1, < 3) |
|
190 | tilt (>= 1.1, < 3) |
|
|
191 | + sassc (2.0.1) | ||
|
|
192 | + ffi (~> 1.9) | ||
|
|
193 | + rake | ||
|
|
194 | + sassc-rails (2.1.1) | ||
|
|
195 | + railties (>= 4.0.0) | ||
|
|
196 | + sassc (>= 2.0) | ||
|
|
197 | + sprockets (> 3.0) | ||
|
|
198 | + sprockets-rails | ||
|
|
199 | + tilt | ||
|
182 | select2-rails (4.0.3) |
|
200 | select2-rails (4.0.3) |
|
183 | thor (~> 0.14) |
|
201 | thor (~> 0.14) |
|
184 |
- sexp_processor (4. |
|
202 | + sexp_processor (4.12.0) |
|
185 |
- sprockets (3.7. |
|
203 | + sprockets (3.7.2) |
|
186 | concurrent-ruby (~> 1.0) |
|
204 | concurrent-ruby (~> 1.0) |
|
187 | rack (> 1, < 3) |
|
205 | rack (> 1, < 3) |
|
188 |
- sprockets-rails (3.2. |
|
206 | + sprockets-rails (3.2.1) |
|
189 | actionpack (>= 4.0) |
|
207 | actionpack (>= 4.0) |
|
190 | activesupport (>= 4.0) |
|
208 | activesupport (>= 4.0) |
|
191 | sprockets (>= 3.0.0) |
|
209 | sprockets (>= 3.0.0) |
|
192 |
- sqlite3 (1. |
|
210 | + sqlite3 (1.4.1) |
|
193 |
- t |
|
211 | + temple (0.8.1) |
|
194 |
- th |
|
212 | + thor (0.20.3) |
|
195 | - tilt (2.0.5) |
|
213 | + thread_safe (0.3.6) |
|
196 |
- t |
|
214 | + tilt (2.0.9) |
|
|
215 | + tzinfo (1.2.5) | ||
|
197 | thread_safe (~> 0.1) |
|
216 | thread_safe (~> 0.1) |
|
198 |
- uglifier ( |
|
217 | + uglifier (4.1.20) |
|
199 | execjs (>= 0.3.0, < 3) |
|
218 | execjs (>= 0.3.0, < 3) |
|
200 | will_paginate (3.0.12) |
|
219 | will_paginate (3.0.12) |
|
201 |
- yaml_db (0. |
|
220 | + yaml_db (0.7.0) |
|
202 |
- rails (>= 3.0 |
|
221 | + rails (>= 3.0) |
|
203 | rake (>= 0.8.7) |
|
222 | rake (>= 0.8.7) |
|
204 |
|
223 | ||
|
205 | PLATFORMS |
|
224 | PLATFORMS |
|
206 | ruby |
|
225 | ruby |
|
207 |
|
226 | ||
|
208 | DEPENDENCIES |
|
227 | DEPENDENCIES |
|
209 | ace-rails-ap |
|
228 | ace-rails-ap |
|
210 | activerecord-session_store |
|
229 | activerecord-session_store |
|
211 | autoprefixer-rails |
|
230 | autoprefixer-rails |
|
212 | best_in_place (~> 3.0.1) |
|
231 | best_in_place (~> 3.0.1) |
|
213 | bootstrap-datepicker-rails |
|
232 | bootstrap-datepicker-rails |
|
214 |
- bootstrap-sass (~> 3. |
|
233 | + bootstrap-sass (~> 3.4.1) |
|
215 | bootstrap-switch-rails |
|
234 | bootstrap-switch-rails |
|
216 | bootstrap-toggle-rails |
|
235 | bootstrap-toggle-rails |
|
217 | bootstrap3-datetimepicker-rails |
|
236 | bootstrap3-datetimepicker-rails |
|
218 | coffee-rails |
|
237 | coffee-rails |
|
219 | dynamic_form |
|
238 | dynamic_form |
|
220 | fuzzy-string-match |
|
239 | fuzzy-string-match |
|
221 | haml |
|
240 | haml |
|
222 | haml-rails |
|
241 | haml-rails |
|
223 | in_place_editing |
|
242 | in_place_editing |
|
224 | jquery-countdown-rails |
|
243 | jquery-countdown-rails |
|
225 | jquery-datatables-rails |
|
244 | jquery-datatables-rails |
|
226 | jquery-rails |
|
245 | jquery-rails |
|
227 | jquery-tablesorter |
|
246 | jquery-tablesorter |
|
228 | jquery-timepicker-addon-rails |
|
247 | jquery-timepicker-addon-rails |
|
229 | jquery-ui-rails |
|
248 | jquery-ui-rails |
|
230 |
|
249 | ||
|
231 | minitest-reporters |
|
250 | minitest-reporters |
|
232 | momentjs-rails |
|
251 | momentjs-rails |
|
233 | mysql2 |
|
252 | mysql2 |
|
234 | rails (~> 4.2.0) |
|
253 | rails (~> 4.2.0) |
|
235 | rails_bootstrap_sortable |
|
254 | rails_bootstrap_sortable |
|
236 | rdiscount |
|
255 | rdiscount |
|
237 | rouge |
|
256 | rouge |
|
238 | sass-rails |
|
257 | sass-rails |
|
|
258 | + sassc-rails (>= 2.1.0) | ||
|
239 | select2-rails |
|
259 | select2-rails |
|
240 | sqlite3 |
|
260 | sqlite3 |
|
241 | uglifier |
|
261 | uglifier |
|
242 | verification! |
|
262 | verification! |
|
243 | will_paginate (~> 3.0.7) |
|
263 | will_paginate (~> 3.0.7) |
|
244 | yaml_db |
|
264 | yaml_db |
|
245 |
|
265 | ||
|
246 | BUNDLED WITH |
|
266 | BUNDLED WITH |
|
247 |
- 1.1 |
|
267 | + 1.17.2 |
@@ -30,51 +30,49 | |||||
|
30 |
|
30 | ||
|
31 | mysql> flush privileges; |
|
31 | mysql> flush privileges; |
|
32 | Query OK, 0 rows affected (0.00 sec) |
|
32 | Query OK, 0 rows affected (0.00 sec) |
|
33 |
|
33 | ||
|
34 | === 2. Install RVM |
|
34 | === 2. Install RVM |
|
35 |
|
35 | ||
|
36 | Since Ubuntu has dedicated package for RVM we will use that. Just follow instruction given in https://github.com/rvm/ubuntu_rvm. For your convenience, the step are reproduced here. |
|
36 | Since Ubuntu has dedicated package for RVM we will use that. Just follow instruction given in https://github.com/rvm/ubuntu_rvm. For your convenience, the step are reproduced here. |
|
37 |
|
37 | ||
|
38 | First, we install necessary package for installing RVM. |
|
38 | First, we install necessary package for installing RVM. |
|
39 |
|
39 | ||
|
40 | cafe@grader:~$ sudo apt install software-properties-common |
|
40 | cafe@grader:~$ sudo apt install software-properties-common |
|
41 |
|
41 | ||
|
42 | Second, we add the custom PPA, update the system and install RVM. |
|
42 | Second, we add the custom PPA, update the system and install RVM. |
|
43 |
|
43 | ||
|
44 | cafe@grader:~$ sudo apt-add-repository -y ppa:rael-gc/rvm |
|
44 | cafe@grader:~$ sudo apt-add-repository -y ppa:rael-gc/rvm |
|
45 | cafe@grader:~$ sudo apt-get update |
|
45 | cafe@grader:~$ sudo apt-get update |
|
46 | cafe@grader:~$ sudo apt-get install rvm |
|
46 | cafe@grader:~$ sudo apt-get install rvm |
|
47 |
|
47 | ||
|
48 | This is very important. You have to logout and login again since RVM change a lots of system. |
|
48 | This is very important. You have to logout and login again since RVM change a lots of system. |
|
49 |
|
49 | ||
|
50 | If you are using GUI version of Ubuntu, be sure to have Gnome Terminal (or any other terminal you are using) perform login every time. This can be done by mark the check box "Run command as a login shell" in Gnome terminal or by adding --login to bash. |
|
50 | If you are using GUI version of Ubuntu, be sure to have Gnome Terminal (or any other terminal you are using) perform login every time. This can be done by mark the check box "Run command as a login shell" in Gnome terminal or by adding --login to bash. |
|
51 |
|
51 | ||
|
52 | === 3. Install necessary package |
|
52 | === 3. Install necessary package |
|
53 |
|
53 | ||
|
54 |
- cafe@grader:~$ sudo apt install libmysqlclient-dev default-jdk unzip nodejs php |
|
54 | + cafe@grader:~$ sudo apt install libmysqlclient-dev default-jdk unzip nodejs php-cli apache2 dirmngr gnupg apache2-dev |
|
55 | - |
|
||
|
56 | - curl build-essential |
|
||
|
57 |
|
55 | ||
|
58 | === 4. Install cafe-grader |
|
56 | === 4. Install cafe-grader |
|
59 |
|
57 | ||
|
60 | First, ensure that RVM is installed correctly. |
|
58 | First, ensure that RVM is installed correctly. |
|
61 |
|
59 | ||
|
62 | cafe@grader:~$ rvm |
|
60 | cafe@grader:~$ rvm |
|
63 |
|
61 | ||
|
64 | If you get a result similar to this. |
|
62 | If you get a result similar to this. |
|
65 |
|
63 | ||
|
66 | Command 'rvm' not found, but there are 21 similar ones. |
|
64 | Command 'rvm' not found, but there are 21 similar ones. |
|
67 |
|
65 | ||
|
68 | It is very likely that you have not re-login or you are using bash without --login. Please do so and re-read the installation of RVM on Ubuntu https://github.com/rvm/ubuntu_rvm again. |
|
66 | It is very likely that you have not re-login or you are using bash without --login. Please do so and re-read the installation of RVM on Ubuntu https://github.com/rvm/ubuntu_rvm again. |
|
69 |
|
67 | ||
|
70 | Next, we will let the install script do the work of installing cafe-grader. Please prepare the DATABASENAME, USERNAME and PASSWORD as the script will ask for that. Make sure that you run the script from the home directory of the user. |
|
68 | Next, we will let the install script do the work of installing cafe-grader. Please prepare the DATABASENAME, USERNAME and PASSWORD as the script will ask for that. Make sure that you run the script from the home directory of the user. |
|
71 |
|
69 | ||
|
72 | cafe@grader:~$ wget https://github.com/cafe-grader-team/cafe-grader-judge-scripts/raw/master/installer/install.sh |
|
70 | cafe@grader:~$ wget https://github.com/cafe-grader-team/cafe-grader-judge-scripts/raw/master/installer/install.sh |
|
73 | cafe@grader:~$ . ./install.sh |
|
71 | cafe@grader:~$ . ./install.sh |
|
74 |
|
72 | ||
|
75 | After installation is finished, grader is ready to run in development mode via WEBrick. We will try that by the following command which will start a grader accessible via http://localhost:3000/. You can try logging in to the system and verify that it is actually work. |
|
73 | After installation is finished, grader is ready to run in development mode via WEBrick. We will try that by the following command which will start a grader accessible via http://localhost:3000/. You can try logging in to the system and verify that it is actually work. |
|
76 |
|
74 | ||
|
77 | cafe@grader:~/cafe_grader/web$ rails s |
|
75 | cafe@grader:~/cafe_grader/web$ rails s |
|
78 |
|
76 | ||
|
79 | If Everything is OK, stop the WEBrick by Ctrl-C. |
|
77 | If Everything is OK, stop the WEBrick by Ctrl-C. |
|
80 |
|
78 |
@@ -283,28 +283,28 | |||||
|
283 | problems = get_problems_from_params |
|
283 | problems = get_problems_from_params |
|
284 | problems.each do |p| |
|
284 | problems.each do |p| |
|
285 | p.available = avail |
|
285 | p.available = avail |
|
286 | p.save |
|
286 | p.save |
|
287 | end |
|
287 | end |
|
288 | end |
|
288 | end |
|
289 |
|
289 | ||
|
290 | def get_problems_from_params |
|
290 | def get_problems_from_params |
|
291 | problems = [] |
|
291 | problems = [] |
|
292 | params.keys.each do |k| |
|
292 | params.keys.each do |k| |
|
293 | if k.index('prob-')==0 |
|
293 | if k.index('prob-')==0 |
|
294 | name, id, order = k.split('-') |
|
294 | name, id, order = k.split('-') |
|
295 | problems << Problem.find(id) |
|
295 | problems << Problem.find(id) |
|
296 | end |
|
296 | end |
|
297 | end |
|
297 | end |
|
298 | problems |
|
298 | problems |
|
299 | end |
|
299 | end |
|
300 |
|
300 | ||
|
301 | def get_problems_stat |
|
301 | def get_problems_stat |
|
302 | end |
|
302 | end |
|
303 |
|
303 | ||
|
304 | private |
|
304 | private |
|
305 |
|
305 | ||
|
306 | def problem_params |
|
306 | def problem_params |
|
307 | - params.require(:problem).permit(:name, :full_name, :full_score, :date_added, :available, :test_allowed,:output_only, :url, :description, tag_ids:[]) |
|
307 | + params.require(:problem).permit(:name, :full_name, :full_score, :change_date_added, :date_added, :available, :test_allowed,:output_only, :url, :description, tag_ids:[]) |
|
308 | end |
|
308 | end |
|
309 |
|
309 | ||
|
310 | end |
|
310 | end |
@@ -1,39 +1,41 | |||||
|
1 | class Problem < ActiveRecord::Base |
|
1 | class Problem < ActiveRecord::Base |
|
2 |
|
2 | ||
|
3 | belongs_to :description |
|
3 | belongs_to :description |
|
4 | has_and_belongs_to_many :contests, :uniq => true |
|
4 | has_and_belongs_to_many :contests, :uniq => true |
|
5 |
|
5 | ||
|
6 | #has_and_belongs_to_many :groups |
|
6 | #has_and_belongs_to_many :groups |
|
7 | has_many :groups_problems, class_name: GroupProblem |
|
7 | has_many :groups_problems, class_name: GroupProblem |
|
8 | has_many :groups, :through => :groups_problems |
|
8 | has_many :groups, :through => :groups_problems |
|
9 |
|
9 | ||
|
10 | has_many :problems_tags, class_name: ProblemTag |
|
10 | has_many :problems_tags, class_name: ProblemTag |
|
11 | has_many :tags, through: :problems_tags |
|
11 | has_many :tags, through: :problems_tags |
|
12 |
|
12 | ||
|
13 | has_many :test_pairs, :dependent => :delete_all |
|
13 | has_many :test_pairs, :dependent => :delete_all |
|
14 | has_many :testcases, :dependent => :destroy |
|
14 | has_many :testcases, :dependent => :destroy |
|
15 |
|
15 | ||
|
|
16 | + has_many :submissions | ||
|
|
17 | + | ||
|
16 | validates_presence_of :name |
|
18 | validates_presence_of :name |
|
17 | validates_format_of :name, :with => /\A\w+\z/ |
|
19 | validates_format_of :name, :with => /\A\w+\z/ |
|
18 | validates_presence_of :full_name |
|
20 | validates_presence_of :full_name |
|
19 |
|
21 | ||
|
20 | scope :available, -> { where(available: true) } |
|
22 | scope :available, -> { where(available: true) } |
|
21 |
|
23 | ||
|
22 | DEFAULT_TIME_LIMIT = 1 |
|
24 | DEFAULT_TIME_LIMIT = 1 |
|
23 | DEFAULT_MEMORY_LIMIT = 32 |
|
25 | DEFAULT_MEMORY_LIMIT = 32 |
|
24 |
|
26 | ||
|
25 | def self.available_problems |
|
27 | def self.available_problems |
|
26 | available.order(date_added: :desc).order(:name) |
|
28 | available.order(date_added: :desc).order(:name) |
|
27 | #Problem.available.all(:order => "date_added DESC, name ASC") |
|
29 | #Problem.available.all(:order => "date_added DESC, name ASC") |
|
28 | end |
|
30 | end |
|
29 |
|
31 | ||
|
30 | def self.create_from_import_form_params(params, old_problem=nil) |
|
32 | def self.create_from_import_form_params(params, old_problem=nil) |
|
31 | org_problem = old_problem || Problem.new |
|
33 | org_problem = old_problem || Problem.new |
|
32 | import_params, problem = Problem.extract_params_and_check(params, |
|
34 | import_params, problem = Problem.extract_params_and_check(params, |
|
33 | org_problem) |
|
35 | org_problem) |
|
34 |
|
36 | ||
|
35 | if !problem.errors.empty? |
|
37 | if !problem.errors.empty? |
|
36 | return problem, 'Error importing' |
|
38 | return problem, 'Error importing' |
|
37 | end |
|
39 | end |
|
38 |
|
40 | ||
|
39 | problem.full_score = 100 |
|
41 | problem.full_score = 100 |
@@ -1,28 +1,30 | |||||
|
1 | - if submission.nil? |
|
1 | - if submission.nil? |
|
2 | = "-" |
|
2 | = "-" |
|
3 | - else |
|
3 | - else |
|
4 | %strong= "Submission ID:" |
|
4 | %strong= "Submission ID:" |
|
5 | = submission.id |
|
5 | = submission.id |
|
6 | %br |
|
6 | %br |
|
7 | - unless submission.graded_at |
|
7 | - unless submission.graded_at |
|
8 | %strong= t 'main.submitted_at:' |
|
8 | %strong= t 'main.submitted_at:' |
|
9 | = format_full_time_ago(submission.submitted_at.localtime) |
|
9 | = format_full_time_ago(submission.submitted_at.localtime) |
|
10 | - else |
|
10 | - else |
|
11 | %strong= t 'main.graded_at:' |
|
11 | %strong= t 'main.graded_at:' |
|
12 | = format_full_time_ago(submission.graded_at.localtime) |
|
12 | = format_full_time_ago(submission.graded_at.localtime) |
|
13 | %br |
|
13 | %br |
|
14 | - if GraderConfiguration['ui.show_score'] |
|
14 | - if GraderConfiguration['ui.show_score'] |
|
15 | %strong=t 'main.score' |
|
15 | %strong=t 'main.score' |
|
16 | = "#{(submission.points*100/submission.problem.full_score).to_i} " |
|
16 | = "#{(submission.points*100/submission.problem.full_score).to_i} " |
|
17 | = " [" |
|
17 | = " [" |
|
18 | %tt |
|
18 | %tt |
|
19 | = submission.grader_comment |
|
19 | = submission.grader_comment |
|
20 | = "]" |
|
20 | = "]" |
|
21 | %br |
|
21 | %br |
|
22 | %strong View: |
|
22 | %strong View: |
|
23 | - if GraderConfiguration.show_grading_result |
|
23 | - if GraderConfiguration.show_grading_result |
|
24 | = link_to '[detailed result]', :action => 'result', :id => submission.id |
|
24 | = link_to '[detailed result]', :action => 'result', :id => submission.id |
|
25 | - = link_to "#{t 'main.cmp_msg'}", {:action => 'compiler_msg', :id => submission.id}, {popup: true,class: 'btn btn-xs btn-info'} if submission.graded_at |
|
25 | + - if submission.graded_at |
|
|
26 | + %button.btn.btn-info.btn-xs{type: 'button', data: {toggle: 'modal', target: '#compiler'}} | ||
|
|
27 | + =t 'main.cmp_msg' | ||
|
26 | = link_to "#{t 'main.src_link'}", download_submission_path(submission.id), class: 'btn btn-xs btn-info' |
|
28 | = link_to "#{t 'main.src_link'}", download_submission_path(submission.id), class: 'btn btn-xs btn-info' |
|
27 | = link_to "#{t 'main.submissions_link'}", problem_submissions_path(problem_id), class: 'btn btn-xs btn-info' |
|
29 | = link_to "#{t 'main.submissions_link'}", problem_submissions_path(problem_id), class: 'btn btn-xs btn-info' |
|
28 |
|
30 |
@@ -30,48 +30,60 | |||||
|
30 | .input-group |
|
30 | .input-group |
|
31 | %span.input-group-btn |
|
31 | %span.input-group-btn |
|
32 | %span.btn.btn-default.btn-file |
|
32 | %span.btn.btn-default.btn-file |
|
33 | Browse |
|
33 | Browse |
|
34 | = file_field_tag 'load_file' |
|
34 | = file_field_tag 'load_file' |
|
35 | = text_field_tag '' , nil, {readonly: true, class: 'form-control'} |
|
35 | = text_field_tag '' , nil, {readonly: true, class: 'form-control'} |
|
36 | .form-group |
|
36 | .form-group |
|
37 | = submit_tag 'Submit', class: 'btn btn-success', id: 'live_submit', |
|
37 | = submit_tag 'Submit', class: 'btn btn-success', id: 'live_submit', |
|
38 | data: {confirm: "Submitting this source code for task #{@problem.long_name}?"} |
|
38 | data: {confirm: "Submitting this source code for task #{@problem.long_name}?"} |
|
39 | - # latest submission status |
|
39 | - # latest submission status |
|
40 | .panel{class: (@submission && @submission.graded_at) ? "panel-info" : "panel-warning"} |
|
40 | .panel{class: (@submission && @submission.graded_at) ? "panel-info" : "panel-warning"} |
|
41 | .panel-heading |
|
41 | .panel-heading |
|
42 | Latest Submission Status |
|
42 | Latest Submission Status |
|
43 | = link_to "Refresh",get_latest_submission_status_submissions_path(@submission.user,@problem), class: "btn btn-default btn-sm", remote: true if @submission |
|
43 | = link_to "Refresh",get_latest_submission_status_submissions_path(@submission.user,@problem), class: "btn btn-default btn-sm", remote: true if @submission |
|
44 | .panel-body |
|
44 | .panel-body |
|
45 | %div#latest_status |
|
45 | %div#latest_status |
|
46 | - if @submission |
|
46 | - if @submission |
|
47 | = render :partial => 'submission_short', |
|
47 | = render :partial => 'submission_short', |
|
48 | :locals => {submission: @submission, problem_name: @problem.name, problem_id: @problem.id } |
|
48 | :locals => {submission: @submission, problem_name: @problem.name, problem_id: @problem.id } |
|
49 | .row |
|
49 | .row |
|
50 | .col-md-12 |
|
50 | .col-md-12 |
|
51 | %h2 Console |
|
51 | %h2 Console |
|
52 | %textarea#console{style: 'height: 100%; width: 100%;background-color:#000;color:#fff;font-family: consolas, monaco, "Droid Sans Mono";',rows: 20} |
|
52 | %textarea#console{style: 'height: 100%; width: 100%;background-color:#000;color:#fff;font-family: consolas, monaco, "Droid Sans Mono";',rows: 20} |
|
53 |
|
53 | ||
|
|
54 | + .modal.fade#compiler{tabindex: -1,role: 'dialog'} | ||
|
|
55 | + .modal-dialog.modal-lg{role:'document'} | ||
|
|
56 | + .modal-content | ||
|
|
57 | + .modal-header | ||
|
|
58 | + %button.close{type: 'button', data: {dismissed: :modal}, aria: {label: 'close'}} | ||
|
|
59 | + %span{aria: {hidden: 'true'}, data: {dismiss: 'modal'}} × | ||
|
|
60 | + %h4 Compiler message | ||
|
|
61 | + .modal-body | ||
|
|
62 | + %pre#compiler_msg= @submission.compiler_message | ||
|
|
63 | + .modal-footer | ||
|
|
64 | + %button.btn.btn-default{type: 'button', data: {dismiss: 'modal'}} Close | ||
|
|
65 | + | ||
|
54 | :javascript |
|
66 | :javascript |
|
55 | $(document).ready(function() { |
|
67 | $(document).ready(function() { |
|
56 | e = ace.edit("editor") |
|
68 | e = ace.edit("editor") |
|
57 | e.setValue($("#text_sourcecode").val()); |
|
69 | e.setValue($("#text_sourcecode").val()); |
|
58 | e.gotoLine(1); |
|
70 | e.gotoLine(1); |
|
59 | $("#language_id").trigger('change'); |
|
71 | $("#language_id").trigger('change'); |
|
60 |
|
72 | ||
|
61 | $("#load_file").on('change',function(evt) { |
|
73 | $("#load_file").on('change',function(evt) { |
|
62 | var file = evt.target.files[0]; |
|
74 | var file = evt.target.files[0]; |
|
63 | var reader = new FileReader(); |
|
75 | var reader = new FileReader(); |
|
64 | reader.onload = function(theFile) { |
|
76 | reader.onload = function(theFile) { |
|
65 | var e = ace.edit("editor") |
|
77 | var e = ace.edit("editor") |
|
66 | e.setValue(theFile.target.result); |
|
78 | e.setValue(theFile.target.result); |
|
67 | e.gotoLine(1); |
|
79 | e.gotoLine(1); |
|
68 | }; |
|
80 | }; |
|
69 | reader.readAsText(file) |
|
81 | reader.readAsText(file) |
|
70 | }); |
|
82 | }); |
|
71 |
|
83 | ||
|
72 | //brython(); |
|
84 | //brython(); |
|
73 | }); |
|
85 | }); |
|
74 |
|
86 | ||
|
75 |
|
87 | ||
|
76 |
|
88 | ||
|
77 |
|
89 |
@@ -1,35 +1,36 | |||||
|
1 | = user_title_bar(@user) |
|
1 | = user_title_bar(@user) |
|
2 |
|
2 | ||
|
3 | %h1 Your account settings |
|
3 | %h1 Your account settings |
|
4 |
|
4 | ||
|
5 | -#%p |
|
5 | -#%p |
|
6 | -#You can edit your alias and e-mails. Just click on the text and edit it. |
|
6 | -#You can edit your alias and e-mails. Just click on the text and edit it. |
|
7 |
|
7 | ||
|
8 | - %table.uinfo |
|
8 | + %table.table.table-bordered{:style => "width:30%"} |
|
9 | %tr |
|
9 | %tr |
|
10 |
- %th |
|
10 | + %th Login |
|
11 |
- %td |
|
11 | + %td= @user.login |
|
12 | %tr |
|
12 | %tr |
|
13 |
- %th |
|
13 | + %th Full name |
|
14 |
- %td |
|
14 | + %td= @user.full_name |
|
15 | -#%tr |
|
15 | -#%tr |
|
16 | -#%th.uinfo Alias |
|
16 | -#%th.uinfo Alias |
|
17 | -#%td.uinfo= in_place_editor_field :user, 'alias_for_editing', {}, :rows => 1 |
|
17 | -#%td.uinfo= in_place_editor_field :user, 'alias_for_editing', {}, :rows => 1 |
|
18 | -#%tr |
|
18 | -#%tr |
|
19 | -#%th.uinfo E-mail |
|
19 | -#%th.uinfo E-mail |
|
20 | -#%td.uinfo= in_place_editor_field :user, 'email_for_editing', {}, :rows => 1 |
|
20 | -#%td.uinfo= in_place_editor_field :user, 'email_for_editing', {}, :rows => 1 |
|
21 | %tr |
|
21 | %tr |
|
22 |
- %th |
|
22 | + %th Password |
|
23 |
- %td |
|
23 | + %td |
|
24 | = form_tag :action => 'chg_passwd', :method => 'post' do |
|
24 | = form_tag :action => 'chg_passwd', :method => 'post' do |
|
25 | %table |
|
25 | %table |
|
26 | %tr |
|
26 | %tr |
|
27 | - %td= password_field_tag 'passwd' |
|
27 | + %td |
|
|
28 | + %input{:type => "password", :class => "form-control", :name => "passwd", :id => "passwd"} | ||
|
28 | %td (new) |
|
29 | %td (new) |
|
29 | %tr |
|
30 | %tr |
|
30 | - %td= password_field_tag 'passwd_verify' |
|
31 | + %td |
|
|
32 | + %input{:type => "password", :class => "form-control", :name => "passwd_verify", :id => "passwd_verify"} | ||
|
31 | %td (verify) |
|
33 | %td (verify) |
|
32 | %tr |
|
34 | %tr |
|
33 | %td{:colspan => "2"} |
|
35 | %td{:colspan => "2"} |
|
34 | - = submit_tag 'change password' |
|
36 | + %input{:type => "button", :class => "btn btn-default", :name => "commit", :value => "Change Password"} |
|
35 | - |
|
@@ -1,156 +1,156 | |||||
|
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: 20180612102327) do |
|
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" |
|
21 | - t.datetime "updated_at", null: false |
|
21 | + t.datetime "updated_at" |
|
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" |
|
31 | + t.datetime "created_at" |
|
32 |
- t.datetime "updated_at" |
|
32 | + t.datetime "updated_at" |
|
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" |
|
48 | + t.datetime "created_at" |
|
49 |
- t.datetime "updated_at" |
|
49 | + t.datetime "updated_at" |
|
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: 65535 |
|
54 | t.boolean "markdowned" |
|
54 | t.boolean "markdowned" |
|
55 |
- t.datetime "created_at" |
|
55 | + t.datetime "created_at" |
|
56 |
- t.datetime "updated_at" |
|
56 | + t.datetime "updated_at" |
|
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" |
|
63 | + t.datetime "created_at" |
|
64 |
- t.datetime "updated_at" |
|
64 | + t.datetime "updated_at" |
|
65 | t.text "description", limit: 65535 |
|
65 | t.text "description", limit: 65535 |
|
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" |
|
73 | + t.datetime "created_at" |
|
74 |
- t.datetime "updated_at" |
|
74 | + t.datetime "updated_at" |
|
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_ |
|
80 | + add_index "grader_processes", ["host", "pid"], name: "index_grader_processes_on_host_and_pid", using: :btree |
|
81 |
|
81 | ||
|
82 | create_table "groups", force: :cascade do |t| |
|
82 | create_table "groups", force: :cascade do |t| |
|
83 | t.string "name", limit: 255 |
|
83 | t.string "name", limit: 255 |
|
84 | t.string "description", limit: 255 |
|
84 | t.string "description", limit: 255 |
|
85 | end |
|
85 | end |
|
86 |
|
86 | ||
|
87 | create_table "groups_problems", id: false, force: :cascade do |t| |
|
87 | create_table "groups_problems", id: false, force: :cascade do |t| |
|
88 | t.integer "problem_id", limit: 4, null: false |
|
88 | t.integer "problem_id", limit: 4, null: false |
|
89 | t.integer "group_id", limit: 4, null: false |
|
89 | t.integer "group_id", limit: 4, null: false |
|
90 | end |
|
90 | end |
|
91 |
|
91 | ||
|
92 | add_index "groups_problems", ["group_id", "problem_id"], name: "index_groups_problems_on_group_id_and_problem_id", using: :btree |
|
92 | add_index "groups_problems", ["group_id", "problem_id"], name: "index_groups_problems_on_group_id_and_problem_id", using: :btree |
|
93 |
|
93 | ||
|
94 | create_table "groups_users", id: false, force: :cascade do |t| |
|
94 | create_table "groups_users", id: false, force: :cascade do |t| |
|
95 | t.integer "group_id", limit: 4, null: false |
|
95 | t.integer "group_id", limit: 4, null: false |
|
96 | t.integer "user_id", limit: 4, null: false |
|
96 | t.integer "user_id", limit: 4, null: false |
|
97 | end |
|
97 | end |
|
98 |
|
98 | ||
|
99 | add_index "groups_users", ["user_id", "group_id"], name: "index_groups_users_on_user_id_and_group_id", using: :btree |
|
99 | add_index "groups_users", ["user_id", "group_id"], name: "index_groups_users_on_user_id_and_group_id", using: :btree |
|
100 |
|
100 | ||
|
101 | create_table "heart_beats", force: :cascade do |t| |
|
101 | create_table "heart_beats", force: :cascade do |t| |
|
102 | t.integer "user_id", limit: 4 |
|
102 | t.integer "user_id", limit: 4 |
|
103 | t.string "ip_address", limit: 255 |
|
103 | t.string "ip_address", limit: 255 |
|
104 |
- t.datetime "created_at" |
|
104 | + t.datetime "created_at" |
|
105 |
- t.datetime "updated_at" |
|
105 | + t.datetime "updated_at" |
|
106 | t.string "status", limit: 255 |
|
106 | t.string "status", limit: 255 |
|
107 | end |
|
107 | end |
|
108 |
|
108 | ||
|
109 | add_index "heart_beats", ["updated_at"], name: "index_heart_beats_on_updated_at", using: :btree |
|
109 | add_index "heart_beats", ["updated_at"], name: "index_heart_beats_on_updated_at", using: :btree |
|
110 |
|
110 | ||
|
111 | create_table "languages", force: :cascade do |t| |
|
111 | create_table "languages", force: :cascade do |t| |
|
112 | t.string "name", limit: 10 |
|
112 | t.string "name", limit: 10 |
|
113 | t.string "pretty_name", limit: 255 |
|
113 | t.string "pretty_name", limit: 255 |
|
114 | t.string "ext", limit: 10 |
|
114 | t.string "ext", limit: 10 |
|
115 | t.string "common_ext", limit: 255 |
|
115 | t.string "common_ext", limit: 255 |
|
116 | end |
|
116 | end |
|
117 |
|
117 | ||
|
118 | create_table "logins", force: :cascade do |t| |
|
118 | create_table "logins", force: :cascade do |t| |
|
119 | t.integer "user_id", limit: 4 |
|
119 | t.integer "user_id", limit: 4 |
|
120 | t.string "ip_address", limit: 255 |
|
120 | t.string "ip_address", limit: 255 |
|
121 |
- t.datetime "created_at" |
|
121 | + t.datetime "created_at" |
|
122 |
- t.datetime "updated_at" |
|
122 | + t.datetime "updated_at" |
|
123 | end |
|
123 | end |
|
124 |
|
124 | ||
|
125 | create_table "messages", force: :cascade do |t| |
|
125 | create_table "messages", force: :cascade do |t| |
|
126 | t.integer "sender_id", limit: 4 |
|
126 | t.integer "sender_id", limit: 4 |
|
127 | t.integer "receiver_id", limit: 4 |
|
127 | t.integer "receiver_id", limit: 4 |
|
128 | t.integer "replying_message_id", limit: 4 |
|
128 | t.integer "replying_message_id", limit: 4 |
|
129 | t.text "body", limit: 65535 |
|
129 | t.text "body", limit: 65535 |
|
130 | t.boolean "replied" |
|
130 | t.boolean "replied" |
|
131 |
- t.datetime "created_at" |
|
131 | + t.datetime "created_at" |
|
132 |
- t.datetime "updated_at" |
|
132 | + t.datetime "updated_at" |
|
133 | end |
|
133 | end |
|
134 |
|
134 | ||
|
135 | create_table "problems", force: :cascade do |t| |
|
135 | create_table "problems", force: :cascade do |t| |
|
136 | t.string "name", limit: 30 |
|
136 | t.string "name", limit: 30 |
|
137 | t.string "full_name", limit: 255 |
|
137 | t.string "full_name", limit: 255 |
|
138 | t.integer "full_score", limit: 4 |
|
138 | t.integer "full_score", limit: 4 |
|
139 | t.date "date_added" |
|
139 | t.date "date_added" |
|
140 | t.boolean "available" |
|
140 | t.boolean "available" |
|
141 | t.string "url", limit: 255 |
|
141 | t.string "url", limit: 255 |
|
142 | t.integer "description_id", limit: 4 |
|
142 | t.integer "description_id", limit: 4 |
|
143 | t.boolean "test_allowed" |
|
143 | t.boolean "test_allowed" |
|
144 | t.boolean "output_only" |
|
144 | t.boolean "output_only" |
|
145 | t.string "description_filename", limit: 255 |
|
145 | t.string "description_filename", limit: 255 |
|
146 | t.boolean "view_testcase" |
|
146 | t.boolean "view_testcase" |
|
147 | end |
|
147 | end |
|
148 |
|
148 | ||
|
149 | create_table "problems_tags", force: :cascade do |t| |
|
149 | create_table "problems_tags", force: :cascade do |t| |
|
150 | t.integer "problem_id", limit: 4 |
|
150 | t.integer "problem_id", limit: 4 |
|
151 | t.integer "tag_id", limit: 4 |
|
151 | t.integer "tag_id", limit: 4 |
|
152 | end |
|
152 | end |
|
153 |
|
153 | ||
|
154 | add_index "problems_tags", ["problem_id", "tag_id"], name: "index_problems_tags_on_problem_id_and_tag_id", unique: true, using: :btree |
|
154 | add_index "problems_tags", ["problem_id", "tag_id"], name: "index_problems_tags_on_problem_id_and_tag_id", unique: true, using: :btree |
|
155 | add_index "problems_tags", ["problem_id"], name: "index_problems_tags_on_problem_id", using: :btree |
|
155 | add_index "problems_tags", ["problem_id"], name: "index_problems_tags_on_problem_id", using: :btree |
|
156 | add_index "problems_tags", ["tag_id"], name: "index_problems_tags_on_tag_id", using: :btree |
|
156 | add_index "problems_tags", ["tag_id"], name: "index_problems_tags_on_tag_id", using: :btree |
@@ -171,151 +171,151 | |||||
|
171 | create_table "roles", force: :cascade do |t| |
|
171 | create_table "roles", force: :cascade do |t| |
|
172 | t.string "name", limit: 255 |
|
172 | t.string "name", limit: 255 |
|
173 | end |
|
173 | end |
|
174 |
|
174 | ||
|
175 | create_table "roles_users", id: false, force: :cascade do |t| |
|
175 | create_table "roles_users", id: false, force: :cascade do |t| |
|
176 | t.integer "role_id", limit: 4 |
|
176 | t.integer "role_id", limit: 4 |
|
177 | t.integer "user_id", limit: 4 |
|
177 | t.integer "user_id", limit: 4 |
|
178 | end |
|
178 | end |
|
179 |
|
179 | ||
|
180 | add_index "roles_users", ["user_id"], name: "index_roles_users_on_user_id", using: :btree |
|
180 | add_index "roles_users", ["user_id"], name: "index_roles_users_on_user_id", using: :btree |
|
181 |
|
181 | ||
|
182 | create_table "sessions", force: :cascade do |t| |
|
182 | create_table "sessions", force: :cascade do |t| |
|
183 | t.string "session_id", limit: 255 |
|
183 | t.string "session_id", limit: 255 |
|
184 | t.text "data", limit: 65535 |
|
184 | t.text "data", limit: 65535 |
|
185 | t.datetime "updated_at" |
|
185 | t.datetime "updated_at" |
|
186 | end |
|
186 | end |
|
187 |
|
187 | ||
|
188 | add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", using: :btree |
|
188 | add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", using: :btree |
|
189 | add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree |
|
189 | add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree |
|
190 |
|
190 | ||
|
191 | create_table "sites", force: :cascade do |t| |
|
191 | create_table "sites", force: :cascade do |t| |
|
192 | t.string "name", limit: 255 |
|
192 | t.string "name", limit: 255 |
|
193 | t.boolean "started" |
|
193 | t.boolean "started" |
|
194 | t.datetime "start_time" |
|
194 | t.datetime "start_time" |
|
195 |
- t.datetime "created_at" |
|
195 | + t.datetime "created_at" |
|
196 |
- t.datetime "updated_at" |
|
196 | + t.datetime "updated_at" |
|
197 | t.integer "country_id", limit: 4 |
|
197 | t.integer "country_id", limit: 4 |
|
198 | t.string "password", limit: 255 |
|
198 | t.string "password", limit: 255 |
|
199 | end |
|
199 | end |
|
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" |
|
204 | + t.datetime "created_at" |
|
205 |
- t.datetime "updated_at" |
|
205 | + t.datetime "updated_at" |
|
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: 16777215 |
|
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 |
|
225 | t.string "ip_address", limit: 255 |
|
225 | t.string "ip_address", limit: 255 |
|
226 | end |
|
226 | end |
|
227 |
|
227 | ||
|
228 | add_index "submissions", ["user_id", "problem_id", "number"], name: "index_submissions_on_user_id_and_problem_id_and_number", unique: true, using: :btree |
|
228 | add_index "submissions", ["user_id", "problem_id", "number"], name: "index_submissions_on_user_id_and_problem_id_and_number", unique: true, using: :btree |
|
229 | add_index "submissions", ["user_id", "problem_id"], name: "index_submissions_on_user_id_and_problem_id", using: :btree |
|
229 | add_index "submissions", ["user_id", "problem_id"], name: "index_submissions_on_user_id_and_problem_id", using: :btree |
|
230 |
|
230 | ||
|
231 | create_table "tags", force: :cascade do |t| |
|
231 | create_table "tags", force: :cascade do |t| |
|
232 | t.string "name", limit: 255, null: false |
|
232 | t.string "name", limit: 255, null: false |
|
233 | t.text "description", limit: 65535 |
|
233 | t.text "description", limit: 65535 |
|
234 | t.boolean "public" |
|
234 | t.boolean "public" |
|
235 | t.datetime "created_at", null: false |
|
235 | t.datetime "created_at", null: false |
|
236 | t.datetime "updated_at", null: false |
|
236 | t.datetime "updated_at", null: false |
|
237 | end |
|
237 | end |
|
238 |
|
238 | ||
|
239 | create_table "tasks", force: :cascade do |t| |
|
239 | create_table "tasks", force: :cascade do |t| |
|
240 | t.integer "submission_id", limit: 4 |
|
240 | t.integer "submission_id", limit: 4 |
|
241 | t.datetime "created_at" |
|
241 | t.datetime "created_at" |
|
242 | t.integer "status", limit: 4 |
|
242 | t.integer "status", limit: 4 |
|
243 | t.datetime "updated_at" |
|
243 | t.datetime "updated_at" |
|
244 | end |
|
244 | end |
|
245 |
|
245 | ||
|
246 | add_index "tasks", ["submission_id"], name: "index_tasks_on_submission_id", using: :btree |
|
246 | add_index "tasks", ["submission_id"], name: "index_tasks_on_submission_id", using: :btree |
|
247 |
|
247 | ||
|
248 | create_table "test_pairs", force: :cascade do |t| |
|
248 | create_table "test_pairs", force: :cascade do |t| |
|
249 | t.integer "problem_id", limit: 4 |
|
249 | t.integer "problem_id", limit: 4 |
|
250 | t.text "input", limit: 16777215 |
|
250 | t.text "input", limit: 16777215 |
|
251 | t.text "solution", limit: 16777215 |
|
251 | t.text "solution", limit: 16777215 |
|
252 |
- t.datetime "created_at" |
|
252 | + t.datetime "created_at" |
|
253 |
- t.datetime "updated_at" |
|
253 | + t.datetime "updated_at" |
|
254 | end |
|
254 | end |
|
255 |
|
255 | ||
|
256 | create_table "test_requests", force: :cascade do |t| |
|
256 | create_table "test_requests", force: :cascade do |t| |
|
257 | t.integer "user_id", limit: 4 |
|
257 | t.integer "user_id", limit: 4 |
|
258 | t.integer "problem_id", limit: 4 |
|
258 | t.integer "problem_id", limit: 4 |
|
259 | t.integer "submission_id", limit: 4 |
|
259 | t.integer "submission_id", limit: 4 |
|
260 | t.string "input_file_name", limit: 255 |
|
260 | t.string "input_file_name", limit: 255 |
|
261 | t.string "output_file_name", limit: 255 |
|
261 | t.string "output_file_name", limit: 255 |
|
262 | t.string "running_stat", limit: 255 |
|
262 | t.string "running_stat", limit: 255 |
|
263 | t.integer "status", limit: 4 |
|
263 | t.integer "status", limit: 4 |
|
264 |
- t.datetime "updated_at" |
|
264 | + t.datetime "updated_at" |
|
265 | t.datetime "submitted_at" |
|
265 | t.datetime "submitted_at" |
|
266 | t.datetime "compiled_at" |
|
266 | t.datetime "compiled_at" |
|
267 | t.text "compiler_message", limit: 65535 |
|
267 | t.text "compiler_message", limit: 65535 |
|
268 | t.datetime "graded_at" |
|
268 | t.datetime "graded_at" |
|
269 | t.string "grader_comment", limit: 255 |
|
269 | t.string "grader_comment", limit: 255 |
|
270 |
- t.datetime "created_at" |
|
270 | + t.datetime "created_at" |
|
271 | t.float "running_time", limit: 24 |
|
271 | t.float "running_time", limit: 24 |
|
272 | t.string "exit_status", limit: 255 |
|
272 | t.string "exit_status", limit: 255 |
|
273 | t.integer "memory_usage", limit: 4 |
|
273 | t.integer "memory_usage", limit: 4 |
|
274 | end |
|
274 | end |
|
275 |
|
275 | ||
|
276 | add_index "test_requests", ["user_id", "problem_id"], name: "index_test_requests_on_user_id_and_problem_id", using: :btree |
|
276 | add_index "test_requests", ["user_id", "problem_id"], name: "index_test_requests_on_user_id_and_problem_id", using: :btree |
|
277 |
|
277 | ||
|
278 | create_table "testcases", force: :cascade do |t| |
|
278 | create_table "testcases", force: :cascade do |t| |
|
279 | t.integer "problem_id", limit: 4 |
|
279 | t.integer "problem_id", limit: 4 |
|
280 | t.integer "num", limit: 4 |
|
280 | t.integer "num", limit: 4 |
|
281 | t.integer "group", limit: 4 |
|
281 | t.integer "group", limit: 4 |
|
282 | t.integer "score", limit: 4 |
|
282 | t.integer "score", limit: 4 |
|
283 | t.text "input", limit: 4294967295 |
|
283 | t.text "input", limit: 4294967295 |
|
284 | t.text "sol", limit: 4294967295 |
|
284 | t.text "sol", limit: 4294967295 |
|
285 | t.datetime "created_at" |
|
285 | t.datetime "created_at" |
|
286 | t.datetime "updated_at" |
|
286 | t.datetime "updated_at" |
|
287 | end |
|
287 | end |
|
288 |
|
288 | ||
|
289 | add_index "testcases", ["problem_id"], name: "index_testcases_on_problem_id", using: :btree |
|
289 | add_index "testcases", ["problem_id"], name: "index_testcases_on_problem_id", using: :btree |
|
290 |
|
290 | ||
|
291 | create_table "user_contest_stats", force: :cascade do |t| |
|
291 | create_table "user_contest_stats", force: :cascade do |t| |
|
292 | t.integer "user_id", limit: 4 |
|
292 | t.integer "user_id", limit: 4 |
|
293 | t.datetime "started_at" |
|
293 | t.datetime "started_at" |
|
294 |
- t.datetime "created_at" |
|
294 | + t.datetime "created_at" |
|
295 |
- t.datetime "updated_at" |
|
295 | + t.datetime "updated_at" |
|
296 | t.boolean "forced_logout" |
|
296 | t.boolean "forced_logout" |
|
297 | end |
|
297 | end |
|
298 |
|
298 | ||
|
299 | create_table "users", force: :cascade do |t| |
|
299 | create_table "users", force: :cascade do |t| |
|
300 | t.string "login", limit: 50 |
|
300 | t.string "login", limit: 50 |
|
301 | t.string "full_name", limit: 255 |
|
301 | t.string "full_name", limit: 255 |
|
302 | t.string "hashed_password", limit: 255 |
|
302 | t.string "hashed_password", limit: 255 |
|
303 | t.string "salt", limit: 5 |
|
303 | t.string "salt", limit: 5 |
|
304 | t.string "alias", limit: 255 |
|
304 | t.string "alias", limit: 255 |
|
305 | t.string "email", limit: 255 |
|
305 | t.string "email", limit: 255 |
|
306 | t.integer "site_id", limit: 4 |
|
306 | t.integer "site_id", limit: 4 |
|
307 | t.integer "country_id", limit: 4 |
|
307 | t.integer "country_id", limit: 4 |
|
308 | t.boolean "activated", default: false |
|
308 | t.boolean "activated", default: false |
|
309 | t.datetime "created_at" |
|
309 | t.datetime "created_at" |
|
310 | t.datetime "updated_at" |
|
310 | t.datetime "updated_at" |
|
|
311 | + t.string "section", limit: 255 | ||
|
311 | t.boolean "enabled", default: true |
|
312 | t.boolean "enabled", default: true |
|
312 | t.string "remark", limit: 255 |
|
313 | t.string "remark", limit: 255 |
|
313 | t.string "last_ip", limit: 255 |
|
314 | t.string "last_ip", limit: 255 |
|
314 | - t.string "section", limit: 255 |
|
||
|
315 | end |
|
315 | end |
|
316 |
|
316 | ||
|
317 | add_index "users", ["login"], name: "index_users_on_login", unique: true, using: :btree |
|
317 | add_index "users", ["login"], name: "index_users_on_login", unique: true, using: :btree |
|
318 |
|
318 | ||
|
319 | add_foreign_key "problems_tags", "problems" |
|
319 | add_foreign_key "problems_tags", "problems" |
|
320 | add_foreign_key "problems_tags", "tags" |
|
320 | add_foreign_key "problems_tags", "tags" |
|
321 | end |
|
321 | end |
deleted file |
You need to be logged in to leave comments.
Login now