Description:
merge
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r478:489c9011341f - - 4 files changed: 17 inserted, 179 deleted
@@ -0,0 +1,6 | |||
|
1 | + class AddMoreToUsers < ActiveRecord::Migration | |
|
2 | + def change | |
|
3 | + add_column :users, :enabled, :boolean, default: 1 | |
|
4 | + add_column :users, :remark, :string | |
|
5 | + end | |
|
6 | + end |
@@ -1,182 +1,10 | |||
|
1 | - == Welcome to Rails | |
|
2 | - | |
|
3 | - Rails is a web-application and persistence framework that includes everything | |
|
4 | - needed to create database-backed web-applications according to the | |
|
5 | - Model-View-Control pattern of separation. This pattern splits the view (also | |
|
6 | - called the presentation) into "dumb" templates that are primarily responsible | |
|
7 | - for inserting pre-built data in between HTML tags. The model contains the | |
|
8 | - "smart" domain objects (such as Account, Product, Person, Post) that holds all | |
|
9 | - the business logic and knows how to persist themselves to a database. The | |
|
10 | - controller handles the incoming requests (such as Save New Account, Update | |
|
11 | - Product, Show Post) by manipulating the model and directing data to the view. | |
|
12 | - | |
|
13 | - In Rails, the model is handled by what's called an object-relational mapping | |
|
14 | - layer entitled Active Record. This layer allows you to present the data from | |
|
15 | - database rows as objects and embellish these data objects with business logic | |
|
16 | - methods. You can read more about Active Record in | |
|
17 | - link:files/vendor/rails/activerecord/README.html. | |
|
18 | - | |
|
19 | - The controller and view are handled by the Action Pack, which handles both | |
|
20 | - layers by its two parts: Action View and Action Controller. These two layers | |
|
21 | - are bundled in a single package due to their heavy interdependence. This is | |
|
22 | - unlike the relationship between the Active Record and Action Pack that is much | |
|
23 | - more separate. Each of these packages can be used independently outside of | |
|
24 | - Rails. You can read more about Action Pack in | |
|
25 | - link:files/vendor/rails/actionpack/README.html. | |
|
26 | - | |
|
27 | - | |
|
28 | - == Getting started | |
|
29 | - | |
|
30 | - 1. At the command prompt, start a new rails application using the rails command | |
|
31 | - and your application name. Ex: rails myapp | |
|
32 | - (If you've downloaded rails in a complete tgz or zip, this step is already done) | |
|
33 | - 2. Change directory into myapp and start the web server: <tt>script/server</tt> (run with --help for options) | |
|
34 | - 3. Go to http://localhost:3000/ and get "Welcome aboard: You’re riding the Rails!" | |
|
35 | - 4. Follow the guidelines to start developing your application | |
|
36 | - | |
|
37 | - | |
|
38 | - == Web Servers | |
|
39 | - | |
|
40 | - By default, Rails will try to use Mongrel and lighttpd if they are installed, otherwise | |
|
41 | - Rails will use the WEBrick, the webserver that ships with Ruby. When you run script/server, | |
|
42 | - Rails will check if Mongrel exists, then lighttpd and finally fall back to WEBrick. This ensures | |
|
43 | - that you can always get up and running quickly. | |
|
1 | + == cafe grader | |
|
44 | 2 | |
|
45 | - Mongrel is a Ruby-based webserver with a C-component (which requires compilation) that is | |
|
46 | - suitable for development and deployment of Rails applications. If you have Ruby Gems installed, | |
|
47 | - getting up and running with mongrel is as easy as: <tt>gem install mongrel</tt>. | |
|
48 | - More info at: http://mongrel.rubyforge.org | |
|
49 | - | |
|
50 | - If Mongrel is not installed, Rails will look for lighttpd. It's considerably faster than | |
|
51 | - Mongrel and WEBrick and also suited for production use, but requires additional | |
|
52 | - installation and currently only works well on OS X/Unix (Windows users are encouraged | |
|
53 | - to start with Mongrel). We recommend version 1.4.11 and higher. You can download it from | |
|
54 | - http://www.lighttpd.net. | |
|
55 | - | |
|
56 | - And finally, if neither Mongrel or lighttpd are installed, Rails will use the built-in Ruby | |
|
57 | - web server, WEBrick. WEBrick is a small Ruby web server suitable for development, but not | |
|
58 | - for production. | |
|
59 | - | |
|
60 | - But of course its also possible to run Rails on any platform that supports FCGI. | |
|
61 | - Apache, LiteSpeed, IIS are just a few. For more information on FCGI, | |
|
62 | - please visit: http://wiki.rubyonrails.com/rails/pages/FastCGI | |
|
63 | - | |
|
64 | - | |
|
65 | - == Debugging Rails | |
|
66 | - | |
|
67 | - Have "tail -f" commands running on the server.log and development.log. Rails will | |
|
68 | - automatically display debugging and runtime information to these files. Debugging | |
|
69 | - info will also be shown in the browser on requests from 127.0.0.1. | |
|
70 | - | |
|
71 | - | |
|
72 | - == Breakpoints | |
|
73 | - | |
|
74 | - Breakpoint support is available through the script/breakpointer client. This | |
|
75 | - means that you can break out of execution at any point in the code, investigate | |
|
76 | - and change the model, AND then resume execution! Example: | |
|
77 | - | |
|
78 | - class WeblogController < ActionController::Base | |
|
79 | - def index | |
|
80 | - @posts = Post.find(:all) | |
|
81 | - breakpoint "Breaking out from the list" | |
|
82 | - end | |
|
83 | - end | |
|
84 | - | |
|
85 | - So the controller will accept the action, run the first line, then present you | |
|
86 | - with a IRB prompt in the breakpointer window. Here you can do things like: | |
|
87 | - | |
|
88 | - Executing breakpoint "Breaking out from the list" at .../webrick_server.rb:16 in 'breakpoint' | |
|
3 | + cafe grader is a programming contest platform used in Thailand IOI training. | |
|
4 | + The package includes 2 repositories, jittat/cafe-grader-web and jittat/cafe-grader-judge-scripts. | |
|
89 | 5 | |
|
90 | - >> @posts.inspect | |
|
91 | - => "[#<Post:0x14a6be8 @attributes={\"title\"=>nil, \"body\"=>nil, \"id\"=>\"1\"}>, | |
|
92 | - #<Post:0x14a6620 @attributes={\"title\"=>\"Rails you know!\", \"body\"=>\"Only ten..\", \"id\"=>\"2\"}>]" | |
|
93 | - >> @posts.first.title = "hello from a breakpoint" | |
|
94 | - => "hello from a breakpoint" | |
|
95 | - | |
|
96 | - ...and even better is that you can examine how your runtime objects actually work: | |
|
97 | - | |
|
98 | - >> f = @posts.first | |
|
99 | - => #<Post:0x13630c4 @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}> | |
|
100 | - >> f. | |
|
101 | - Display all 152 possibilities? (y or n) | |
|
102 | - | |
|
103 | - Finally, when you're ready to resume execution, you press CTRL-D | |
|
104 | - | |
|
105 | - | |
|
106 | - == Console | |
|
107 | - | |
|
108 | - You can interact with the domain model by starting the console through <tt>script/console</tt>. | |
|
109 | - Here you'll have all parts of the application configured, just like it is when the | |
|
110 | - application is running. You can inspect domain models, change values, and save to the | |
|
111 | - database. Starting the script without arguments will launch it in the development environment. | |
|
112 | - Passing an argument will specify a different environment, like <tt>script/console production</tt>. | |
|
113 | - | |
|
114 | - To reload your controllers and models after launching the console run <tt>reload!</tt> | |
|
115 | - | |
|
116 | - To reload your controllers and models after launching the console run <tt>reload!</tt> | |
|
117 | - | |
|
118 | - | |
|
119 | - | |
|
120 | - == Description of contents | |
|
121 | - | |
|
122 | - app | |
|
123 | - Holds all the code that's specific to this particular application. | |
|
124 | - | |
|
125 | - app/controllers | |
|
126 | - Holds controllers that should be named like weblogs_controller.rb for | |
|
127 | - automated URL mapping. All controllers should descend from ApplicationController | |
|
128 | - which itself descends from ActionController::Base. | |
|
129 | - | |
|
130 | - app/models | |
|
131 | - Holds models that should be named like post.rb. | |
|
132 | - Most models will descend from ActiveRecord::Base. | |
|
6 | + === Installation | |
|
133 | 7 | |
|
134 | - app/views | |
|
135 | - Holds the template files for the view that should be named like | |
|
136 | - weblogs/index.rhtml for the WeblogsController#index action. All views use eRuby | |
|
137 | - syntax. | |
|
138 | - | |
|
139 | - app/views/layouts | |
|
140 | - Holds the template files for layouts to be used with views. This models the common | |
|
141 | - header/footer method of wrapping views. In your views, define a layout using the | |
|
142 | - <tt>layout :default</tt> and create a file named default.rhtml. Inside default.rhtml, | |
|
143 | - call <% yield %> to render the view using this layout. | |
|
144 | - | |
|
145 | - app/helpers | |
|
146 | - Holds view helpers that should be named like weblogs_helper.rb. These are generated | |
|
147 | - for you automatically when using script/generate for controllers. Helpers can be used to | |
|
148 | - wrap functionality for your views into methods. | |
|
149 | - | |
|
150 | - config | |
|
151 | - Configuration files for the Rails environment, the routing map, the database, and other dependencies. | |
|
152 | - | |
|
153 | - components | |
|
154 | - Self-contained mini-applications that can bundle together controllers, models, and views. | |
|
8 | + The system is tested on ubuntu 14.04 LTS. Use the installation script in | |
|
9 | + cafe-grader-judge-scripts/installer/install.sh . See http://theory.cpe.ku.ac.th/wiki/index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87_Cafe_grader for the detail. | |
|
155 | 10 | |
|
156 | - db | |
|
157 | - Contains the database schema in schema.rb. db/migrate contains all | |
|
158 | - the sequence of Migrations for your schema. | |
|
159 | - | |
|
160 | - doc | |
|
161 | - This directory is where your application documentation will be stored when generated | |
|
162 | - using <tt>rake doc:app</tt> | |
|
163 | - | |
|
164 | - lib | |
|
165 | - Application specific libraries. Basically, any kind of custom code that doesn't | |
|
166 | - belong under controllers, models, or helpers. This directory is in the load path. | |
|
167 | - | |
|
168 | - public | |
|
169 | - The directory available for the web server. Contains subdirectories for images, stylesheets, | |
|
170 | - and javascripts. Also contains the dispatchers and the default HTML files. This should be | |
|
171 | - set as the DOCUMENT_ROOT of your web server. | |
|
172 | - | |
|
173 | - script | |
|
174 | - Helper scripts for automation and generation. | |
|
175 | - | |
|
176 | - test | |
|
177 | - Unit and functional tests along with fixtures. When using the script/generate scripts, template | |
|
178 | - test files will be generated for you and placed in this directory. | |
|
179 | - | |
|
180 | - vendor | |
|
181 | - External libraries that the application depends on. Also includes the plugins subdirectory. | |
|
182 | - This directory is in the load path. |
@@ -13,45 +13,47 | |||
|
13 | 13 | %h2= params[:action] == 'user_stat' ? "Show scores from latest submission" : "Show max scores in submission range" |
|
14 | 14 | |
|
15 | 15 | |
|
16 | 16 | - if @problem and @problem.errors |
|
17 | 17 | =error_messages_for 'problem' |
|
18 | 18 | |
|
19 | 19 | = render partial: 'submission_range' |
|
20 | 20 | |
|
21 | 21 | - if params[:action] == 'user_stat' |
|
22 | 22 | %h3 Latest score |
|
23 | 23 | = link_to '[download csv with all problems]', controller: :user_admin, action: :user_stat, commit: 'download csv' |
|
24 | 24 | - else |
|
25 | 25 | %h3 Max score |
|
26 | 26 | = link_to '[Show only latest submissions]', controller: :user_admin, action: :user_stat |
|
27 | 27 | = link_to '[download csv with all problems]', controller: :user_admin, action: :user_stat_max, commit: 'download csv' |
|
28 | 28 | |
|
29 | 29 | %table.tablesorter-cafe#my_table |
|
30 | 30 | %thead |
|
31 | 31 | %tr |
|
32 | 32 | %th User |
|
33 | 33 | %th Name |
|
34 | 34 | %th Activated? |
|
35 | 35 | %th Logged in |
|
36 | 36 | %th Contest(s) |
|
37 | + %th Remark | |
|
37 | 38 | - @problems.each do |p| |
|
38 | 39 | %th= p.name |
|
39 | 40 | %th Total |
|
40 | 41 | %th Passed |
|
41 | 42 | %tbody |
|
42 | 43 | - @scorearray.each do |sc| |
|
43 | 44 | %tr{class: cycle('info-even','info-odd')} |
|
44 | 45 | - total,num_passed = 0,0 |
|
45 | 46 | - sc.each_index do |i| |
|
46 | 47 | - if i == 0 |
|
47 | 48 | %td= link_to sc[i].login, controller: 'users', action: 'profile', id: sc[i] |
|
48 | 49 | %td= sc[i].full_name |
|
49 | 50 | %td= sc[i].activated |
|
50 | 51 | %td= sc[i].try(:contest_stat).try(:started_at)!=nil ? 'yes' : 'no' |
|
51 | 52 | %td= sc[i].contests.collect {|c| c.name}.join(', ') |
|
53 | + %td= sc[i].remark | |
|
52 | 54 | - else |
|
53 | 55 | %td= sc[i][0] |
|
54 | 56 | - total += sc[i][0] |
|
55 | 57 | - num_passed += 1 if sc[i][1] |
|
56 | 58 | %td= total |
|
57 | 59 | %td= num_passed |
@@ -1,38 +1,38 | |||
|
1 | 1 | # encoding: UTF-8 |
|
2 | 2 | # This file is auto-generated from the current state of the database. Instead |
|
3 | 3 | # of editing this file, please use the migrations feature of Active Record to |
|
4 | 4 | # incrementally modify your database, and then regenerate this schema definition. |
|
5 | 5 | # |
|
6 | 6 | # Note that this schema.rb definition is the authoritative source for your |
|
7 | 7 | # database schema. If you need to create the application database on another |
|
8 | 8 | # system, you should be using db:schema:load, not running all the migrations |
|
9 | 9 | # from scratch. The latter is a flawed and unsustainable approach (the more migrations |
|
10 | 10 | # you'll amass, the slower it'll run and the greater likelihood for issues). |
|
11 | 11 | # |
|
12 | 12 | # It's strongly recommended to check this file into your version control system. |
|
13 | 13 | |
|
14 |
- ActiveRecord::Schema.define(:version => 201 |
|
|
14 | + ActiveRecord::Schema.define(:version => 20150203153534) do | |
|
15 | 15 | |
|
16 | 16 | create_table "announcements", :force => true do |t| |
|
17 | 17 | t.string "author" |
|
18 | 18 | t.text "body" |
|
19 | 19 | t.boolean "published" |
|
20 | 20 | t.datetime "created_at", :null => false |
|
21 | 21 | t.datetime "updated_at", :null => false |
|
22 | 22 | t.boolean "frontpage", :default => false |
|
23 | 23 | t.boolean "contest_only", :default => false |
|
24 | 24 | t.string "title" |
|
25 | 25 | t.string "notes" |
|
26 | 26 | end |
|
27 | 27 | |
|
28 | 28 | create_table "contests", :force => true do |t| |
|
29 | 29 | t.string "title" |
|
30 | 30 | t.boolean "enabled" |
|
31 | 31 | t.datetime "created_at", :null => false |
|
32 | 32 | t.datetime "updated_at", :null => false |
|
33 | 33 | t.string "name" |
|
34 | 34 | end |
|
35 | 35 | |
|
36 | 36 | create_table "contests_problems", :id => false, :force => true do |t| |
|
37 | 37 | t.integer "contest_id" |
|
38 | 38 | t.integer "problem_id" |
@@ -218,29 +218,31 | |||
|
218 | 218 | end |
|
219 | 219 | |
|
220 | 220 | add_index "test_requests", ["user_id", "problem_id"], :name => "index_test_requests_on_user_id_and_problem_id" |
|
221 | 221 | |
|
222 | 222 | create_table "user_contest_stats", :force => true do |t| |
|
223 | 223 | t.integer "user_id" |
|
224 | 224 | t.datetime "started_at" |
|
225 | 225 | t.datetime "created_at", :null => false |
|
226 | 226 | t.datetime "updated_at", :null => false |
|
227 | 227 | t.boolean "forced_logout" |
|
228 | 228 | end |
|
229 | 229 | |
|
230 | 230 | create_table "users", :force => true do |t| |
|
231 | 231 | t.string "login", :limit => 50 |
|
232 | 232 | t.string "full_name" |
|
233 | 233 | t.string "hashed_password" |
|
234 | 234 | t.string "salt", :limit => 5 |
|
235 | 235 | t.string "alias" |
|
236 | 236 | t.string "email" |
|
237 | 237 | t.integer "site_id" |
|
238 | 238 | t.integer "country_id" |
|
239 | 239 | t.boolean "activated", :default => false |
|
240 | 240 | t.datetime "created_at" |
|
241 | 241 | t.datetime "updated_at" |
|
242 | + t.boolean "enabled", :default => true | |
|
243 | + t.string "remark" | |
|
242 | 244 | end |
|
243 | 245 | |
|
244 | 246 | add_index "users", ["login"], :name => "index_users_on_login", :unique => true |
|
245 | 247 | |
|
246 | 248 | end |
You need to be logged in to leave comments.
Login now