Description:
[web] fix nil problem in various place, some styling git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@259 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

r129:adeb816b0bb6 - - 4 files changed: 10 inserted, 11 deleted

@@ -13,66 +13,65
13 end
13 end
14 return @@configurations[key]
14 return @@configurations[key]
15 end
15 end
16
16
17 def self.[](key)
17 def self.[](key)
18 self.get(key)
18 self.get(key)
19 end
19 end
20
20
21 def self.reload
21 def self.reload
22 self.read_config
22 self.read_config
23 end
23 end
24
24
25 def self.clear
25 def self.clear
26 @@configurations = nil
26 @@configurations = nil
27 end
27 end
28
28
29 #
29 #
30 # View decision
30 # View decision
31 #
31 #
32 def self.show_submitbox_to?(user)
32 def self.show_submitbox_to?(user)
33 mode = get(SYSTEM_MODE_CONF_KEY)
33 mode = get(SYSTEM_MODE_CONF_KEY)
34 return false if mode=='analysis'
34 return false if mode=='analysis'
35 if (mode=='contest')
35 if (mode=='contest')
36 return false if (user.site!=nil) and
36 return false if (user.site!=nil) and
37 - ((user.site.started==false) or (user.site.finished?))
37 + ((user.site.started!=true) or (user.site.finished?))
38 end
38 end
39 return true
39 return true
40 end
40 end
41
41
42 def self.show_tasks_to?(user)
42 def self.show_tasks_to?(user)
43 mode = get(SYSTEM_MODE_CONF_KEY)
43 mode = get(SYSTEM_MODE_CONF_KEY)
44 if (mode=='contest')
44 if (mode=='contest')
45 - return false if (user.site!=nil) and (user.site.started==false)
45 + return false if (user.site!=nil) and (user.site.started!=true)
46 end
46 end
47 return true
47 return true
48 end
48 end
49
49
50 def self.allow_test_request(user)
50 def self.allow_test_request(user)
51 mode = get(SYSTEM_MODE_CONF_KEY)
51 mode = get(SYSTEM_MODE_CONF_KEY)
52 if (mode=='contest')
52 if (mode=='contest')
53 - return false if (user.site!=nil) and ((user.site.started==false) or
53 + return false if (user.site!=nil) and ((user.site.started!=true) or (user.site.time_left < 30.minutes))
54 - (user.site.time_left < 30.minutes))
55 end
54 end
56 return false if mode=='analysis'
55 return false if mode=='analysis'
57 return true
56 return true
58 end
57 end
59
58
60 protected
59 protected
61 def self.read_config
60 def self.read_config
62 @@configurations = {}
61 @@configurations = {}
63 Configuration.find(:all).each do |conf|
62 Configuration.find(:all).each do |conf|
64 key = conf.key
63 key = conf.key
65 val = conf.value
64 val = conf.value
66 case conf.value_type
65 case conf.value_type
67 when 'string'
66 when 'string'
68 @@configurations[key] = val
67 @@configurations[key] = val
69
68
70 when 'integer'
69 when 'integer'
71 @@configurations[key] = val.to_i
70 @@configurations[key] = val.to_i
72
71
73 when 'boolean'
72 when 'boolean'
74 @@configurations[key] = (val=='true')
73 @@configurations[key] = (val=='true')
75 end
74 end
76 end
75 end
77 end
76 end
78
77
@@ -1,42 +1,47
1 class Site < ActiveRecord::Base
1 class Site < ActiveRecord::Base
2
2
3 belongs_to :country
3 belongs_to :country
4 has_many :users
4 has_many :users
5
5
6 def clear_start_time_if_not_started
6 def clear_start_time_if_not_started
7 if !self.started
7 if !self.started
8 self.start_time = nil
8 self.start_time = nil
9 end
9 end
10 end
10 end
11
11
12 def time_left
12 def time_left
13 contest_time = Configuration['contest.time_limit']
13 contest_time = Configuration['contest.time_limit']
14 if tmatch = /(\d+):(\d+)/.match(contest_time)
14 if tmatch = /(\d+):(\d+)/.match(contest_time)
15 h = tmatch[1].to_i
15 h = tmatch[1].to_i
16 m = tmatch[2].to_i
16 m = tmatch[2].to_i
17 +
18 + current_time = Time.now.gmtime
19 + if self.start_time!=nil
17 finish_time = self.start_time + h.hour + m.minute
20 finish_time = self.start_time + h.hour + m.minute
18 - current_time = Time.now.gmtime
21 + else
22 + finish_time = current_time + h.hour + m.minute
23 + end
19
24
20 if current_time > finish_time
25 if current_time > finish_time
21 return current_time - current_time
26 return current_time - current_time
22 else
27 else
23 finish_time - current_time
28 finish_time - current_time
24 end
29 end
25 else
30 else
26 nil
31 nil
27 end
32 end
28 end
33 end
29
34
30 def finished?
35 def finished?
31 if !self.started
36 if !self.started
32 return false
37 return false
33 end
38 end
34
39
35 contest_time = Configuration['contest.time_limit']
40 contest_time = Configuration['contest.time_limit']
36 if tmatch = /(\d+):(\d+)/.match(contest_time)
41 if tmatch = /(\d+):(\d+)/.match(contest_time)
37 h = tmatch[1].to_i
42 h = tmatch[1].to_i
38 m = tmatch[2].to_i
43 m = tmatch[2].to_i
39 return Time.now.gmtime > (self.start_time + h.hour + m.minute)
44 return Time.now.gmtime > (self.start_time + h.hour + m.minute)
40 else
45 else
41 false
46 false
42 end
47 end
@@ -4,29 +4,24
4 .announcementbox
4 .announcementbox
5 %span{:class => 'title'}
5 %span{:class => 'title'}
6 Announcements
6 Announcements
7 = render :partial => 'announcement', :collection => @announcements
7 = render :partial => 'announcement', :collection => @announcements
8
8
9 - if Configuration.show_submitbox_to?(@user)
9 - if Configuration.show_submitbox_to?(@user)
10 .submitbox
10 .submitbox
11 = error_messages_for 'submission'
11 = error_messages_for 'submission'
12 = render :partial => 'submission_box'
12 = render :partial => 'submission_box'
13
13
14
14
15 %hr/
15 %hr/
16
16
17 - if Configuration.show_tasks_to?(@user)
17 - if Configuration.show_tasks_to?(@user)
18 %table.info
18 %table.info
19 %tr.info-head
19 %tr.info-head
20 %th
20 %th
21 %th Tasks
21 %th Tasks
22 %th # of sub(s)
22 %th # of sub(s)
23 %th Results
23 %th Results
24 = render :partial => 'problem', :collection => @problems
24 = render :partial => 'problem', :collection => @problems
25
25
26 %hr/
26 %hr/
27
27
28 - %p
29 - %b Note:
30 - We currently have problems synchronizing
31 - the time stamps between grading machines.
32 - You will see weird time stamps during the practice session.
@@ -56,49 +56,49
56 <td>
56 <td>
57 <%= select(:test_request,
57 <%= select(:test_request,
58 :submission_number,
58 :submission_number,
59 ((1..@submissions[0].number).collect {|n| [n,n]}).reverse) %>
59 ((1..@submissions[0].number).collect {|n| [n,n]}).reverse) %>
60 </td>
60 </td>
61 </tr>
61 </tr>
62 <tr>
62 <tr>
63 <td>Input data:</td>
63 <td>Input data:</td>
64 <td>
64 <td>
65 <%= f.file_field :input_file %>
65 <%= f.file_field :input_file %>
66 </td>
66 </td>
67 <td>
67 <td>
68 (combined size should not exceed 2MB)
68 (combined size should not exceed 2MB)
69 </td>
69 </td>
70 </tr>
70 </tr>
71 <tr>
71 <tr>
72 <td>
72 <td>
73 Additional file<sup><span style="color:red">*</span></sup>:
73 Additional file<sup><span style="color:red">*</span></sup>:
74 </td>
74 </td>
75 <td>
75 <td>
76 <%= f.file_field :additional_file %>
76 <%= f.file_field :additional_file %>
77 </td>
77 </td>
78 <td>
78 <td>
79 <small>
79 <small>
80 - * This option works <u>only</u> for task max.
80 + * This option works <u>only</u> for task beads.
81 You can use this to submit <tt>questions.txt</tt>.<br/>
81 You can use this to submit <tt>questions.txt</tt>.<br/>
82 The file shall be copied to the execution directory before your program runs.
82 The file shall be copied to the execution directory before your program runs.
83 </small>
83 </small>
84 </td>
84 </td>
85 </tr>
85 </tr>
86 <tr>
86 <tr>
87 <td colspan="2">
87 <td colspan="2">
88 <%= submit_tag 'submit' %>
88 <%= submit_tag 'submit' %>
89 </td>
89 </td>
90 </tr>
90 </tr>
91 </table>
91 </table>
92 <% end %>
92 <% end %>
93 </div>
93 </div>
94 <% end %>
94 <% end %>
95
95
96 <h3>Previous requests</h3>
96 <h3>Previous requests</h3>
97
97
98 <table class="info">
98 <table class="info">
99 <tr class="info-head">
99 <tr class="info-head">
100 <th>at</th>
100 <th>at</th>
101 <th>problem</th>
101 <th>problem</th>
102 <th>sub #</th>
102 <th>sub #</th>
103 <th>status</th>
103 <th>status</th>
104 <th>output (first 2kb)</th>
104 <th>output (first 2kb)</th>
You need to be logged in to leave comments. Login now