Description:
add autoset exam mode
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r765:3ce2a4681a0f - - 4 files changed: 29 inserted, 4 deleted

@@ -1,32 +1,42
1 1 class ConfigurationsController < ApplicationController
2 2
3 3 before_action :admin_authorization
4 4
5 5 def index
6 6 @configurations = GraderConfiguration.order(:key)
7 7 @group = GraderConfiguration.pluck("grader_configurations.key").map{ |x| x[0...(x.index('.'))] }.uniq.sort
8 8 end
9 9
10 10 def reload
11 11 GraderConfiguration.reload
12 12 redirect_to :action => 'index'
13 13 end
14 14
15 15 def update
16 16 @config = GraderConfiguration.find(params[:id])
17 17 User.clear_last_login if @config.key == GraderConfiguration::MULTIPLE_IP_LOGIN_KEY and @config.value == 'true' and params[:grader_configuration][:value] == 'false'
18 18 respond_to do |format|
19 19 if @config.update_attributes(configuration_params)
20 20 format.json { head :ok }
21 21 else
22 22 format.json { respond_with_bip(@config) }
23 23 end
24 24 end
25 25 end
26 26
27 + def set_exam_right
28 + value = params[:value] || 'false'
29 + GraderConfiguration.where(key: "right.bypass_agreement").update(value: value);
30 + GraderConfiguration.where(key: "right.multiple_ip_login").update(value: value);
31 + GraderConfiguration.where(key: "right.user_hall_of_fame").update(value: value);
32 + GraderConfiguration.where(key: "right.user_view_submission ").update(value: value);
33 + GraderConfiguration.where(key: "right.view_testcase ").update(value: value);
34 + redirect_to :action => 'index'
35 + end
36 +
27 37 private
28 38 def configuration_params
29 39 params.require(:grader_configuration).permit(:key,:value_type,:value,:description)
30 40 end
31 41
32 42 end
@@ -1,37 +1,48
1 1 /- content_for :header do
2 2 / = javascript_include_tag 'local_jquery'
3 3
4 + .container-fluid
5 + .row
6 + .col-md-12
4 7 %h1 System configuration
8 + .row
9 + .col-md-12
10 + = link_to 'Set exam mode', set_exam_right_grader_configuration_index_path('false'), class: 'btn btn-warning'
11 + = link_to 'Set practice mode', set_exam_right_grader_configuration_index_path('true'), class: 'btn btn-info'
5 12
6 13 - @group.each do |g|
14 + .row
15 + .col-md-12
7 16 %h2= g
8 17 %table.table.table-striped
9 18 %thead
10 19 %th{style: 'width: 25%'} Key
11 20 %th{style: 'width: 10%'}Type
12 21 %th{style: 'width: 15%'} Value
13 22 %th Description
14 23 - @configurations.each do |conf|
15 24 - next if conf.key[0...(conf.key.index('.'))] != g
16 25 - @grader_configuration = conf
17 26 %tr
18 27 %td
19 28 /= in_place_editor_field :grader_configuration, :key, {}, :rows=>1
20 29 = @grader_configuration.key
21 30 %td
22 31 /= in_place_editor_field :grader_configuration, :value_type, {}, :rows=>1
23 32 = @grader_configuration.value_type
24 33 %td
25 34 = best_in_place @grader_configuration, :value, ok_button: "ok", cancel_button: "cancel"
26 35 %td= conf.description
27 36
37 + .row
38 + .col-md-12
28 39 - if GraderConfiguration.config_cached?
29 40 %br/
30 41 Your config is saved, but it does not automatically take effect.
31 42 %br/
32 43 If you have one mongrel process running, you can
33 44 = link_to '[click]', :action => 'reload'
34 45 here to reload.
35 46 %br/
36 47 If you have more than one process running, you should restart
37 48 them manually.
@@ -1,29 +1,29
1 1
2 2 /- if params[:id]
3 3 / %h1 Tasks Hall of Fame
4 4 / = link_to('[back to All-Time Hall of Fame]', action: 'problem_hof', id: nil )
5 5 /- else
6 6 / %h1 All-Time Hall of Fame
7 7
8 8 .panel.panel-info
9 9 .panel-heading
10 10 Select Task
11 11 .panel-body
12 12 .form-inline
13 13 = select 'report',
14 14 'problem_id',
15 - @problems.collect {|p| ["[#{p.name}] #{p.full_name}", report_problem_hof_url(p.id)]},
16 - {:selected => report_problem_hof_url(@problem)},
15 + @problems.collect {|p| ["[#{p.name}] #{p.full_name}", problem_hof_report_path(p)]},
16 + {:selected => problem_hof_report_path(@problem)},
17 17 { class: 'select2 form-control' }
18 18 %button.btn.btn-primary.btn-sm.go-button#problem_go{data: {source: "#report_problem_id"}} Go
19 19
20 20
21 21 - unless params[:id]
22 22 /=render partial: 'all_time_hof'
23 23 Please select a problem.
24 24 - else
25 25 %h1 [#{Problem.find(params[:id]).name}] #{Problem.find(params[:id]).full_name}
26 26 %h2 Submission History
27 27 =render partial: 'application/bar_graph', locals: { histogram: @histogram }
28 28 =render partial: 'task_hof'
29 29
@@ -1,190 +1,194
1 1 Rails.application.routes.draw do
2 2 resources :tags
3 3 get "sources/direct_edit"
4 4
5 5 root :to => 'main#login'
6 6
7 7 #logins
8 8 match 'login/login', to: 'login#login', via: [:get,:post]
9 9
10 10 resources :contests
11 11 resources :sites
12 12 resources :test
13 13
14 14 resources :messages do
15 15 collection do
16 16 get 'console'
17 17 end
18 18 end
19 19
20 20 resources :announcements do
21 21 member do
22 22 get 'toggle','toggle_front'
23 23 end
24 24 end
25 25
26 26 resources :problems do
27 27 member do
28 28 get 'toggle'
29 29 get 'toggle_test'
30 30 get 'toggle_view_testcase'
31 31 get 'stat'
32 32 end
33 33 collection do
34 34 get 'turn_all_off'
35 35 get 'turn_all_on'
36 36 get 'import'
37 37 get 'manage'
38 38 get 'quick_create'
39 39 post 'do_manage'
40 40 post 'do_import'
41 41 end
42 42 end
43 43
44 44 resources :groups do
45 45 member do
46 46 post 'add_user', to: 'groups#add_user', as: 'add_user'
47 47 delete 'remove_user/:user_id', to: 'groups#remove_user', as: 'remove_user'
48 48 delete 'remove_all_user', to: 'groups#remove_all_user', as: 'remove_all_user'
49 49 post 'add_problem', to: 'groups#add_problem', as: 'add_problem'
50 50 delete 'remove_problem/:problem_id', to: 'groups#remove_problem', as: 'remove_problem'
51 51 delete 'remove_all_problem', to: 'groups#remove_all_problem', as: 'remove_all_problem'
52 52 end
53 53 collection do
54 54
55 55 end
56 56 end
57 57
58 58 resources :testcases, only: [] do
59 59 member do
60 60 get 'download_input'
61 61 get 'download_sol'
62 62 end
63 63 collection do
64 64 get 'show_problem/:problem_id(/:test_num)' => 'testcases#show_problem', as: 'show_problem'
65 65 end
66 66 end
67 67
68 - resources :grader_configuration, controller: 'configurations'
68 + resources :grader_configuration, controller: 'configurations' do
69 + collection do
70 + get 'set_exam_right(/:value)', action: 'set_exam_right', as: 'set_exam_right'
71 + end
72 + end
69 73
70 74 resources :users do
71 75 member do
72 76 get 'toggle_activate', 'toggle_enable'
73 77 get 'stat'
74 78 end
75 79 collection do
76 80 get 'profile'
77 81 post 'chg_passwd'
78 82 end
79 83 end
80 84
81 85 resources :submissions do
82 86 member do
83 87 get 'download'
84 88 get 'compiler_msg'
85 89 get 'rejudge'
86 90 get 'source'
87 91 end
88 92 collection do
89 93 get 'prob/:problem_id', to: 'submissions#index', as: 'problem'
90 94 get 'direct_edit_problem/:problem_id(/:user_id)', to: 'submissions#direct_edit_problem', as: 'direct_edit_problem'
91 95 get 'get_latest_submission_status/:uid/:pid', to: 'submissions#get_latest_submission_status', as: 'get_latest_submission_status'
92 96 end
93 97 end
94 98
95 99
96 100 #user admin
97 101 resources :user_admin do
98 102 collection do
99 103 match 'bulk_manage', via: [:get, :post]
100 104 get 'bulk_mail'
101 105 get 'user_stat'
102 106 get 'import'
103 107 get 'new_list'
104 108 get 'admin'
105 109 get 'active'
106 110 get 'mass_mailing'
107 111 get 'revoke_admin'
108 112 post 'grant_admin'
109 113 match 'create_from_list', via: [:get, :post]
110 114 match 'random_all_passwords', via: [:get, :post]
111 115 end
112 116 member do
113 117 get 'clear_last_ip'
114 118 end
115 119 end
116 120
117 121 resources :contest_management, only: [:index] do
118 122 collection do
119 123 get 'user_stat'
120 124 get 'clear_stat'
121 125 get 'clear_all_stat'
122 126 get 'change_contest_mode'
123 127 end
124 128 end
125 129
126 130 #get 'user_admin', to: 'user_admin#index'
127 131 #get 'user_admin/bulk_manage', to: 'user_admin#bulk_manage', as: 'bulk_manage_user_admin'
128 132 #post 'user_admin', to: 'user_admin#create'
129 133 #delete 'user_admin/:id', to: 'user_admin#destroy', as: 'user_admin_destroy'
130 134
131 135 #singular resource
132 136 #---- BEWARE ---- singular resource maps to plural controller by default, we can override by provide controller name directly
133 137 #report
134 138 resource :report, only: [], controller: 'report' do
135 139 get 'login'
136 140 get 'multiple_login'
137 - get 'problem_hof/:id', action: 'problem_hof'
141 + get 'problem_hof(/:id)', action: 'problem_hof', as: 'problem_hof'
138 142 get 'current_score(/:group_id)', action: 'current_score', as: 'current_score'
139 143 get 'max_score'
140 144 post 'show_max_score'
141 145 end
142 146 #get 'report/current_score', to: 'report#current_score', as: 'report_current_score'
143 147 #get 'report/problem_hof(/:id)', to: 'report#problem_hof', as: 'report_problem_hof'
144 148 #get "report/login"
145 149 #get 'report/max_score', to: 'report#max_score', as: 'report_max_score'
146 150 #post 'report/show_max_score', to: 'report#show_max_score', as: 'report_show_max_score'
147 151
148 152 resource :main, only: [], controller: 'main' do
149 153 get 'login'
150 154 get 'logout'
151 155 get 'list'
152 156 get 'submission(/:id)', action: 'submission', as: 'main_submission'
153 157 get 'announcements'
154 158 get 'help'
155 159 post 'submit'
156 160 end
157 161 #main
158 162 #get "main/list"
159 163 #get 'main/submission(/:id)', to: 'main#submission', as: 'main_submission'
160 164 #post 'main/submit', to: 'main#submit'
161 165 #get 'main/announcements', to: 'main#announcements'
162 166
163 167
164 168 #
165 169 get 'tasks/view/:file.:ext' => 'tasks#view'
166 170 get 'tasks/download/:id/:file.:ext' => 'tasks#download'
167 171 get 'heartbeat/:id/edit' => 'heartbeat#edit'
168 172
169 173 #grader
170 174 get 'graders/list', to: 'graders#list', as: 'grader_list'
171 175 namespace :graders do
172 176 get 'task/:id/:type', action: 'task', as: 'task'
173 177 get 'view/:id/:type', action: 'view', as: 'view'
174 178 get 'clear/:id', action: 'clear', as: 'clear'
175 179 get 'stop'
176 180 get 'stop_all'
177 181 get 'clear_all'
178 182 get 'clear_terminated'
179 183 get 'start_grading'
180 184 get 'start_exam'
181 185
182 186 end
183 187
184 188
185 189 # See how all your routes lay out with "rake routes"
186 190
187 191 # This is a legacy wild controller route that's not recommended for RESTful applications.
188 192 # Note: This route will make all actions in every controller accessible via GET requests.
189 193 # match ':controller(/:action(/:id))(.:format)', via: [:get, :post]
190 194 end
You need to be logged in to leave comments. Login now