Description:
moved to ror 2.0.2, add user rel to model submission
git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@3 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r1:82d71b81c3b0 - - 7 files changed: 5 inserted, 10 deleted
@@ -1,41 +1,39 | |||||
|
1 | class ProblemsController < ApplicationController |
|
1 | class ProblemsController < ApplicationController |
|
2 |
|
2 | ||
|
3 | before_filter :authenticate, :authorization |
|
3 | before_filter :authenticate, :authorization |
|
4 |
|
4 | ||
|
5 | def index |
|
5 | def index |
|
6 | list |
|
6 | list |
|
7 | render :action => 'list' |
|
7 | render :action => 'list' |
|
8 | end |
|
8 | end |
|
9 |
|
9 | ||
|
10 | # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html) |
|
10 | # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html) |
|
11 | verify :method => :post, :only => [ :destroy, :create, :update ], |
|
11 | verify :method => :post, :only => [ :destroy, :create, :update ], |
|
12 | :redirect_to => { :action => :list } |
|
12 | :redirect_to => { :action => :list } |
|
13 |
|
13 | ||
|
14 | def list |
|
14 | def list |
|
15 | - @problem_pages, @problems = paginate(:problems, |
|
15 | + @problems = Problem.find(:all, :order => 'date_added DESC') |
|
16 | - :per_page => 10, |
|
||
|
17 | - :order => 'date_added DESC') |
|
||
|
18 | end |
|
16 | end |
|
19 |
|
17 | ||
|
20 | def show |
|
18 | def show |
|
21 | @problem = Problem.find(params[:id]) |
|
19 | @problem = Problem.find(params[:id]) |
|
22 | end |
|
20 | end |
|
23 |
|
21 | ||
|
24 | def new |
|
22 | def new |
|
25 | @problem = Problem.new |
|
23 | @problem = Problem.new |
|
26 | end |
|
24 | end |
|
27 |
|
25 | ||
|
28 | def create |
|
26 | def create |
|
29 | @problem = Problem.new(params[:problem]) |
|
27 | @problem = Problem.new(params[:problem]) |
|
30 | if @problem.save |
|
28 | if @problem.save |
|
31 | flash[:notice] = 'Problem was successfully created.' |
|
29 | flash[:notice] = 'Problem was successfully created.' |
|
32 | redirect_to :action => 'list' |
|
30 | redirect_to :action => 'list' |
|
33 | else |
|
31 | else |
|
34 | render :action => 'new' |
|
32 | render :action => 'new' |
|
35 | end |
|
33 | end |
|
36 | end |
|
34 | end |
|
37 |
|
35 | ||
|
38 | def edit |
|
36 | def edit |
|
39 | @problem = Problem.find(params[:id]) |
|
37 | @problem = Problem.find(params[:id]) |
|
40 | end |
|
38 | end |
|
41 |
|
39 |
@@ -1,39 +1,39 | |||||
|
1 | class UserAdminController < ApplicationController |
|
1 | class UserAdminController < ApplicationController |
|
2 |
|
2 | ||
|
3 | before_filter :authenticate, :authorization |
|
3 | before_filter :authenticate, :authorization |
|
4 |
|
4 | ||
|
5 | def index |
|
5 | def index |
|
6 | list |
|
6 | list |
|
7 | render :action => 'list' |
|
7 | render :action => 'list' |
|
8 | end |
|
8 | end |
|
9 |
|
9 | ||
|
10 | # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html) |
|
10 | # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html) |
|
11 | verify :method => :post, :only => [ :destroy, :create, :update ], |
|
11 | verify :method => :post, :only => [ :destroy, :create, :update ], |
|
12 | :redirect_to => { :action => :list } |
|
12 | :redirect_to => { :action => :list } |
|
13 |
|
13 | ||
|
14 | def list |
|
14 | def list |
|
15 | - @user_pages, @users = paginate :users, :per_page => 50 |
|
15 | + @users = User.find(:all) |
|
16 | end |
|
16 | end |
|
17 |
|
17 | ||
|
18 | def show |
|
18 | def show |
|
19 | @user = User.find(params[:id]) |
|
19 | @user = User.find(params[:id]) |
|
20 | end |
|
20 | end |
|
21 |
|
21 | ||
|
22 | def new |
|
22 | def new |
|
23 | @user = User.new |
|
23 | @user = User.new |
|
24 | end |
|
24 | end |
|
25 |
|
25 | ||
|
26 | def create |
|
26 | def create |
|
27 | @user = User.new(params[:user]) |
|
27 | @user = User.new(params[:user]) |
|
28 | if @user.save |
|
28 | if @user.save |
|
29 | flash[:notice] = 'User was successfully created.' |
|
29 | flash[:notice] = 'User was successfully created.' |
|
30 | redirect_to :action => 'list' |
|
30 | redirect_to :action => 'list' |
|
31 | else |
|
31 | else |
|
32 | render :action => 'new' |
|
32 | render :action => 'new' |
|
33 | end |
|
33 | end |
|
34 | end |
|
34 | end |
|
35 |
|
35 | ||
|
36 | def edit |
|
36 | def edit |
|
37 | @user = User.find(params[:id]) |
|
37 | @user = User.find(params[:id]) |
|
38 | end |
|
38 | end |
|
39 |
|
39 |
@@ -1,28 +1,29 | |||||
|
1 | class Submission < ActiveRecord::Base |
|
1 | class Submission < ActiveRecord::Base |
|
2 |
|
2 | ||
|
3 | belongs_to :language |
|
3 | belongs_to :language |
|
4 | belongs_to :problem |
|
4 | belongs_to :problem |
|
|
5 | + belongs_to :user | ||
|
5 |
|
6 | ||
|
6 | def self.find_by_user_and_problem(user_id, problem_id) |
|
7 | def self.find_by_user_and_problem(user_id, problem_id) |
|
7 | subcount = count(:conditions => "user_id = #{user_id} AND problem_id = #{problem_id}") |
|
8 | subcount = count(:conditions => "user_id = #{user_id} AND problem_id = #{problem_id}") |
|
8 | if subcount != 0 |
|
9 | if subcount != 0 |
|
9 | last_sub = find(:first, |
|
10 | last_sub = find(:first, |
|
10 | :conditions => {:user_id => user_id, |
|
11 | :conditions => {:user_id => user_id, |
|
11 | :problem_id => problem_id}, |
|
12 | :problem_id => problem_id}, |
|
12 | :order => 'submitted_at DESC') |
|
13 | :order => 'submitted_at DESC') |
|
13 | else |
|
14 | else |
|
14 | last_sub = nil |
|
15 | last_sub = nil |
|
15 | end |
|
16 | end |
|
16 | return subcount, last_sub |
|
17 | return subcount, last_sub |
|
17 | end |
|
18 | end |
|
18 |
|
19 | ||
|
19 | def self.find_last_by_problem(problem_id) |
|
20 | def self.find_last_by_problem(problem_id) |
|
20 | # need to put in SQL command, maybe there's a better way |
|
21 | # need to put in SQL command, maybe there's a better way |
|
21 | Submission.find_by_sql("SELECT * FROM submissions " + |
|
22 | Submission.find_by_sql("SELECT * FROM submissions " + |
|
22 | "WHERE id = " + |
|
23 | "WHERE id = " + |
|
23 | "(SELECT MAX(id) FROM submissions AS subs " + |
|
24 | "(SELECT MAX(id) FROM submissions AS subs " + |
|
24 | "WHERE subs.user_id = submissions.user_id AND " + |
|
25 | "WHERE subs.user_id = submissions.user_id AND " + |
|
25 | "problem_id = " + problem_id.to_s + " " + |
|
26 | "problem_id = " + problem_id.to_s + " " + |
|
26 | "GROUP BY user_id)") |
|
27 | "GROUP BY user_id)") |
|
27 | end |
|
28 | end |
|
28 |
|
29 |
@@ -4,30 +4,28 | |||||
|
4 | <%= link_to 'Main', :controller => 'main', :action => 'list' %> |
|
4 | <%= link_to 'Main', :controller => 'main', :action => 'list' %> |
|
5 | </div> |
|
5 | </div> |
|
6 |
|
6 | ||
|
7 | <table> |
|
7 | <table> |
|
8 | <tr> |
|
8 | <tr> |
|
9 | <% for column in Problem.content_columns %> |
|
9 | <% for column in Problem.content_columns %> |
|
10 | <th><%= column.human_name %></th> |
|
10 | <th><%= column.human_name %></th> |
|
11 | <% end %> |
|
11 | <% end %> |
|
12 | </tr> |
|
12 | </tr> |
|
13 |
|
13 | ||
|
14 | <% for problem in @problems %> |
|
14 | <% for problem in @problems %> |
|
15 | <tr> |
|
15 | <tr> |
|
16 | <% for column in Problem.content_columns %> |
|
16 | <% for column in Problem.content_columns %> |
|
17 | <td><%=h problem.send(column.name) %></td> |
|
17 | <td><%=h problem.send(column.name) %></td> |
|
18 | <% end %> |
|
18 | <% end %> |
|
19 | <td><%= link_to '[Toggle]', :action => 'toggle_avail', :id => problem.id %></td> |
|
19 | <td><%= link_to '[Toggle]', :action => 'toggle_avail', :id => problem.id %></td> |
|
20 | <td><%= link_to '[Stat]', :action => 'stat', :id => problem.id %></td> |
|
20 | <td><%= link_to '[Stat]', :action => 'stat', :id => problem.id %></td> |
|
21 | <td><%= link_to '[Show]', :action => 'show', :id => problem %></td> |
|
21 | <td><%= link_to '[Show]', :action => 'show', :id => problem %></td> |
|
22 | <td><%= link_to '[Edit]', :action => 'edit', :id => problem %></td> |
|
22 | <td><%= link_to '[Edit]', :action => 'edit', :id => problem %></td> |
|
23 | <td><%= link_to '[Destroy]', { :action => 'destroy', :id => problem }, :confirm => 'Are you sure?', :method => :post %></td> |
|
23 | <td><%= link_to '[Destroy]', { :action => 'destroy', :id => problem }, :confirm => 'Are you sure?', :method => :post %></td> |
|
24 | </tr> |
|
24 | </tr> |
|
25 | <% end %> |
|
25 | <% end %> |
|
26 | </table> |
|
26 | </table> |
|
27 |
|
27 | ||
|
28 | - <%= link_to 'Previous page', { :page => @problem_pages.current.previous } if @problem_pages.current.previous %> |
|
||
|
29 | - <%= link_to 'Next page', { :page => @problem_pages.current.next } if @problem_pages.current.next %> |
|
||
|
30 |
|
28 | ||
|
31 | <br /> |
|
29 | <br /> |
|
32 |
|
30 | ||
|
33 | <%= link_to 'New problem', :action => 'new' %> |
|
31 | <%= link_to 'New problem', :action => 'new' %> |
@@ -26,30 +26,28 | |||||
|
26 | </tr></table> |
|
26 | </tr></table> |
|
27 | <% end %> |
|
27 | <% end %> |
|
28 |
|
28 | ||
|
29 | </div> |
|
29 | </div> |
|
30 |
|
30 | ||
|
31 | <table> |
|
31 | <table> |
|
32 | <tr> |
|
32 | <tr> |
|
33 | <% for column in User.content_columns %> |
|
33 | <% for column in User.content_columns %> |
|
34 | <th><%= column.human_name %></th> |
|
34 | <th><%= column.human_name %></th> |
|
35 | <% end %> |
|
35 | <% end %> |
|
36 | </tr> |
|
36 | </tr> |
|
37 |
|
37 | ||
|
38 | <% for user in @users %> |
|
38 | <% for user in @users %> |
|
39 | <tr> |
|
39 | <tr> |
|
40 | <% for column in User.content_columns %> |
|
40 | <% for column in User.content_columns %> |
|
41 | <td><%=h user.send(column.name) %></td> |
|
41 | <td><%=h user.send(column.name) %></td> |
|
42 | <% end %> |
|
42 | <% end %> |
|
43 | <td><%= link_to 'Show', :action => 'show', :id => user %></td> |
|
43 | <td><%= link_to 'Show', :action => 'show', :id => user %></td> |
|
44 | <td><%= link_to 'Edit', :action => 'edit', :id => user %></td> |
|
44 | <td><%= link_to 'Edit', :action => 'edit', :id => user %></td> |
|
45 | <td><%= link_to 'Destroy', { :action => 'destroy', :id => user }, :confirm => 'Are you sure?', :method => :post %></td> |
|
45 | <td><%= link_to 'Destroy', { :action => 'destroy', :id => user }, :confirm => 'Are you sure?', :method => :post %></td> |
|
46 | </tr> |
|
46 | </tr> |
|
47 | <% end %> |
|
47 | <% end %> |
|
48 | </table> |
|
48 | </table> |
|
49 |
|
49 | ||
|
50 | - <%= link_to 'Previous page', { :page => @user_pages.current.previous } if @user_pages.current.previous %> |
|
||
|
51 | - <%= link_to 'Next page', { :page => @user_pages.current.next } if @user_pages.current.next %> |
|
||
|
52 |
|
50 | ||
|
53 | <br /> |
|
51 | <br /> |
|
54 |
|
52 | ||
|
55 | <%= link_to 'New user', :action => 'new' %> |
|
53 | <%= link_to 'New user', :action => 'new' %> |
@@ -1,32 +1,32 | |||||
|
1 | # Be sure to restart your web server when you modify this file. |
|
1 | # Be sure to restart your web server when you modify this file. |
|
2 |
|
2 | ||
|
3 | # Uncomment below to force Rails into production mode when |
|
3 | # Uncomment below to force Rails into production mode when |
|
4 | # you don't control web/app server and can't set it the proper way |
|
4 | # you don't control web/app server and can't set it the proper way |
|
5 | # ENV['RAILS_ENV'] ||= 'production' |
|
5 | # ENV['RAILS_ENV'] ||= 'production' |
|
6 |
|
6 | ||
|
7 | # Specifies gem version of Rails to use when vendor/rails is not present |
|
7 | # Specifies gem version of Rails to use when vendor/rails is not present |
|
8 |
- RAILS_GEM_VERSION = ' |
|
8 | + RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION |
|
9 |
|
9 | ||
|
10 | # Bootstrap the Rails environment, frameworks, and default configuration |
|
10 | # Bootstrap the Rails environment, frameworks, and default configuration |
|
11 | require File.join(File.dirname(__FILE__), 'boot') |
|
11 | require File.join(File.dirname(__FILE__), 'boot') |
|
12 |
|
12 | ||
|
13 | Rails::Initializer.run do |config| |
|
13 | Rails::Initializer.run do |config| |
|
14 | # Settings in config/environments/* take precedence over those specified here |
|
14 | # Settings in config/environments/* take precedence over those specified here |
|
15 |
|
15 | ||
|
16 | # Skip frameworks you're not going to use (only works if using vendor/rails) |
|
16 | # Skip frameworks you're not going to use (only works if using vendor/rails) |
|
17 | # config.frameworks -= [ :action_web_service, :action_mailer ] |
|
17 | # config.frameworks -= [ :action_web_service, :action_mailer ] |
|
18 |
|
18 | ||
|
19 | # Only load the plugins named here, by default all plugins in vendor/plugins are loaded |
|
19 | # Only load the plugins named here, by default all plugins in vendor/plugins are loaded |
|
20 | # config.plugins = %W( exception_notification ssl_requirement ) |
|
20 | # config.plugins = %W( exception_notification ssl_requirement ) |
|
21 |
|
21 | ||
|
22 | # Add additional load paths for your own custom dirs |
|
22 | # Add additional load paths for your own custom dirs |
|
23 | # config.load_paths += %W( #{RAILS_ROOT}/extras ) |
|
23 | # config.load_paths += %W( #{RAILS_ROOT}/extras ) |
|
24 |
|
24 | ||
|
25 | # Force all environments to use the same logger level |
|
25 | # Force all environments to use the same logger level |
|
26 | # (by default production uses :info, the others :debug) |
|
26 | # (by default production uses :info, the others :debug) |
|
27 | # config.log_level = :debug |
|
27 | # config.log_level = :debug |
|
28 |
|
28 | ||
|
29 | # Use the database for sessions instead of the file system |
|
29 | # Use the database for sessions instead of the file system |
|
30 | # (create the session table with 'rake db:sessions:create') |
|
30 | # (create the session table with 'rake db:sessions:create') |
|
31 | config.action_controller.session_store = :active_record_store |
|
31 | config.action_controller.session_store = :active_record_store |
|
32 |
|
32 |
@@ -1,21 +1,21 | |||||
|
1 | # Settings specified here will take precedence over those in config/environment.rb |
|
1 | # Settings specified here will take precedence over those in config/environment.rb |
|
2 |
|
2 | ||
|
3 | # In the development environment your application's code is reloaded on |
|
3 | # In the development environment your application's code is reloaded on |
|
4 | # every request. This slows down response time but is perfect for development |
|
4 | # every request. This slows down response time but is perfect for development |
|
5 | # since you don't have to restart the webserver when you make code changes. |
|
5 | # since you don't have to restart the webserver when you make code changes. |
|
6 | config.cache_classes = false |
|
6 | config.cache_classes = false |
|
7 |
|
7 | ||
|
8 | # Log error messages when you accidentally call methods on nil. |
|
8 | # Log error messages when you accidentally call methods on nil. |
|
9 | config.whiny_nils = true |
|
9 | config.whiny_nils = true |
|
10 |
|
10 | ||
|
11 | # Enable the breakpoint server that script/breakpointer connects to |
|
11 | # Enable the breakpoint server that script/breakpointer connects to |
|
12 | - config.breakpoint_server = true |
|
12 | + #config.breakpoint_server = true |
|
13 |
|
13 | ||
|
14 | # Show full error reports and disable caching |
|
14 | # Show full error reports and disable caching |
|
15 | config.action_controller.consider_all_requests_local = true |
|
15 | config.action_controller.consider_all_requests_local = true |
|
16 | config.action_controller.perform_caching = false |
|
16 | config.action_controller.perform_caching = false |
|
17 | config.action_view.cache_template_extensions = false |
|
17 | config.action_view.cache_template_extensions = false |
|
18 | config.action_view.debug_rjs = true |
|
18 | config.action_view.debug_rjs = true |
|
19 |
|
19 | ||
|
20 | # Don't care if the mailer can't send |
|
20 | # Don't care if the mailer can't send |
|
21 | config.action_mailer.raise_delivery_errors = false |
|
21 | config.action_mailer.raise_delivery_errors = false |
You need to be logged in to leave comments.
Login now