Description:
[web] improving readability of test_interface, re: ticket #10 git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@141 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r64:f6cdb5f921b2 - - 5 files changed: 6 inserted, 5 deleted

@@ -1,34 +1,35
1 class TestController < ApplicationController
1 class TestController < ApplicationController
2
2
3 before_filter :authenticate
3 before_filter :authenticate
4
4
5 verify :method => :post, :only => [:test_submit],
5 verify :method => :post, :only => [:test_submit],
6 :redirect_to => { :action => :index }
6 :redirect_to => { :action => :index }
7
7
8 def index
8 def index
9 @user = User.find(session[:user_id])
9 @user = User.find(session[:user_id])
10 prepare_index_information
10 prepare_index_information
11 + @test_requests = @user.test_requests
11 end
12 end
12
13
13 def submit
14 def submit
14 @user = User.find(session[:user_id])
15 @user = User.find(session[:user_id])
15 test_request = TestRequest.new_from_form_params(@user,params[:test_request])
16 test_request = TestRequest.new_from_form_params(@user,params[:test_request])
16 if test_request.save
17 if test_request.save
17 redirect_to :action => 'index'
18 redirect_to :action => 'index'
18 else
19 else
19 flash[:notice] = 'Error saving your test submission'
20 flash[:notice] = 'Error saving your test submission'
20 redirect_to :action => 'index'
21 redirect_to :action => 'index'
21 end
22 end
22 end
23 end
23
24
24 def read
25 def read
25 user = User.find(session[:user_id])
26 user = User.find(session[:user_id])
26 test_request = TestRequest.find(params[:id])
27 test_request = TestRequest.find(params[:id])
27 if test_request.user_id != user.id
28 if test_request.user_id != user.id
28 flash[:notice] = 'Invalid output'
29 flash[:notice] = 'Invalid output'
29 redirect_to :action => 'index'
30 redirect_to :action => 'index'
30 return
31 return
31 end
32 end
32 if test_request.output_file_name!=nil
33 if test_request.output_file_name!=nil
33 data = File.open(test_request.output_file_name).read(2048)
34 data = File.open(test_request.output_file_name).read(2048)
34 if data==nil
35 if data==nil
@@ -1,31 +1,31
1 require 'digest/sha1'
1 require 'digest/sha1'
2
2
3 class User < ActiveRecord::Base
3 class User < ActiveRecord::Base
4
4
5 has_and_belongs_to_many :roles
5 has_and_belongs_to_many :roles
6
6
7 - has_many :test_requests, :order => "problem_id"
7 + has_many :test_requests, :order => "submitted_at DESC"
8
8
9 validates_presence_of :login
9 validates_presence_of :login
10 validates_presence_of :full_name
10 validates_presence_of :full_name
11 validates_length_of :full_name, :minimum => 1
11 validates_length_of :full_name, :minimum => 1
12
12
13 validates_presence_of :password, :if => :password_required?
13 validates_presence_of :password, :if => :password_required?
14 validates_length_of :password, :within => 4..20, :if => :password_required?
14 validates_length_of :password, :within => 4..20, :if => :password_required?
15 validates_confirmation_of :password, :if => :password_required?
15 validates_confirmation_of :password, :if => :password_required?
16
16
17 attr_accessor :password
17 attr_accessor :password
18
18
19 before_save :encrypt_new_password
19 before_save :encrypt_new_password
20
20
21 def self.authenticate(login, password)
21 def self.authenticate(login, password)
22 user = find_by_login(login)
22 user = find_by_login(login)
23 return user if user && user.authenticated?(password)
23 return user if user && user.authenticated?(password)
24 end
24 end
25
25
26 def authenticated?(password)
26 def authenticated?(password)
27 hashed_password == User.encrypt(password,self.salt)
27 hashed_password == User.encrypt(password,self.salt)
28 end
28 end
29
29
30 def admin?
30 def admin?
31 self.roles.detect {|r| r.name == 'admin' }
31 self.roles.detect {|r| r.name == 'admin' }
@@ -1,11 +1,11
1 %tr{:class => (test_request_counter%2==0) ? "info-even" : "info-odd"}
1 %tr{:class => (test_request_counter%2==0) ? "info-even" : "info-odd"}
2 %td= test_request_counter +1
2 %td= test_request_counter +1
3 %td= test_request.problem.full_name
3 %td= test_request.problem.full_name
4 %td= test_request.submission.number
4 %td= test_request.submission.number
5 %td= test_request.status_str
5 %td= test_request.status_str
6 - %td= test_request.running_stat or ''
6 + %td= simple_format((test_request.running_stat or ''))
7 %td
7 %td
8 - if test_request.output_file_name!=nil
8 - if test_request.output_file_name!=nil
9 = link_to '[output]', :action => 'read', :id => test_request.id
9 = link_to '[output]', :action => 'read', :id => test_request.id
10 %td= test_request.grader_comment or ''
10 %td= test_request.grader_comment or ''
11 - %td= test_request.compiler_message or ''
11 + %td= simple_format((test_request.compiler_message or ''))
@@ -45,29 +45,29
45 <tr>
45 <tr>
46 <td>Input data:</td>
46 <td>Input data:</td>
47 <td><%= f.file_field :input_file %></td>
47 <td><%= f.file_field :input_file %></td>
48 <tr>
48 <tr>
49 <td colspan="2">
49 <td colspan="2">
50 <%= submit_tag 'submit' %>
50 <%= submit_tag 'submit' %>
51 </td>
51 </td>
52 </tr>
52 </tr>
53 </table>
53 </table>
54 <% end %>
54 <% end %>
55
55
56 <h3>Previous requests</h3>
56 <h3>Previous requests</h3>
57
57
58 <table class="info">
58 <table class="info">
59 <tr class="info-head">
59 <tr class="info-head">
60 <th></td>
60 <th></td>
61 <th>problem</th>
61 <th>problem</th>
62 <th>#</th>
62 <th>#</th>
63 <th>status</th>
63 <th>status</th>
64 <th>running stat</th>
64 <th>running stat</th>
65 <th>output (first 2kb)</th>
65 <th>output (first 2kb)</th>
66 <th>grading comment</th>
66 <th>grading comment</th>
67 <th>compiler message</th>
67 <th>compiler message</th>
68 </tr>
68 </tr>
69 - <%= render :partial => 'test_request', :collection => @user.test_requests %>
69 + <%= render :partial => 'test_request', :collection => @test_requests %>
70 </table>
70 </table>
71
71
72 <% end %>
72 <% end %>
73
73
@@ -1,28 +1,28
1
1
2 require File.dirname(__FILE__) + '/../spec_helper'
2 require File.dirname(__FILE__) + '/../spec_helper'
3
3
4 - describe Submission do
4 + describe Submission, "when verifying user submission" do
5
5
6 before(:each) do
6 before(:each) do
7 @submission = Submission.new
7 @submission = Submission.new
8 @submission.source = <<SOURCE
8 @submission.source = <<SOURCE
9 /*
9 /*
10 LANG: C++
10 LANG: C++
11 TASK: testproblem
11 TASK: testproblem
12 */
12 */
13 SOURCE
13 SOURCE
14 end
14 end
15
15
16 it "should find language in source" do
16 it "should find language in source" do
17 langcpp = stub(Language, :name => 'cpp', :ext => 'cpp')
17 langcpp = stub(Language, :name => 'cpp', :ext => 'cpp')
18 Language.should_receive(:find_by_name).with('C++').and_return(langcpp)
18 Language.should_receive(:find_by_name).with('C++').and_return(langcpp)
19 Submission.find_language_in_source(@submission.source).should == langcpp
19 Submission.find_language_in_source(@submission.source).should == langcpp
20 end
20 end
21
21
22 it "should find problem in source, when there is any" do
22 it "should find problem in source, when there is any" do
23 problem = stub(Problem, :name => 'testproblem')
23 problem = stub(Problem, :name => 'testproblem')
24 Problem.should_receive(:find_by_name).with('testproblem').and_return(problem)
24 Problem.should_receive(:find_by_name).with('testproblem').and_return(problem)
25 Submission.find_problem_in_source(@submission.source).should == problem
25 Submission.find_problem_in_source(@submission.source).should == problem
26 end
26 end
27
27
28 it "should return nil when it cannot find problem in source" do
28 it "should return nil when it cannot find problem in source" do
You need to be logged in to leave comments. Login now