Description:
assigns all users from on contest list to another
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r298:e6c044028e60 - - 2 files changed: 40 inserted, 15 deleted

@@ -136,59 +136,69
136 136 redirect_to :action => 'list' and return
137 137 end
138 138 import_from_file(params[:file])
139 139 end
140 140
141 141 def random_all_passwords
142 142 users = User.find(:all)
143 143 @prefix = params[:prefix] || ''
144 144 @non_admin_users = User.find_non_admin_with_prefix(@prefix)
145 145 @changed = false
146 146 if request.request_method == :post
147 147 @non_admin_users.each do |user|
148 148 password = random_password
149 149 user.password = password
150 150 user.password_confirmation = password
151 151 user.save
152 152 end
153 153 @changed = true
154 154 end
155 155 end
156 156
157 157 # contest management
158 158
159 159 def contests
160 - if params[:id]!='none'
161 - @contest = Contest.find(params[:id])
162 - else
163 - @contest = nil
160 + @contest, @users = find_contest_and_user_from_contest_id(params[:id])
161 + @contests = Contest.enabled
162 + end
163 +
164 + def assign_from_list
165 + contest_id = params[:users_contest_id]
166 + org_contest, users = find_contest_and_user_from_contest_id(contest_id)
167 + contest = Contest.find(params[:new_contest][:id])
168 + if !contest
169 + flash[:notice] = 'Error: no contest'
170 + redirect_to :action => 'contests', :id =>contest_id
164 171 end
165 - if @contest
166 - @users = @contest.users
167 - else
168 - @users = User.find_users_with_no_contest
172 +
173 + note = []
174 + users.each do |u|
175 + u.contests = [contest]
176 + note << u.login
169 177 end
170 - @contests = Contest.enabled
178 + flash[:notice] = 'User(s) ' + note.join(', ') +
179 + " were successfully reassigned to #{contest.title}."
180 + redirect_to :action => 'contests', :id =>contest.id
171 181 end
172 182
173 183 def add_to_contest
174 184 user = User.find(params[:id])
175 185 contest = Contest.find(params[:contest_id])
176 186 if user and contest
177 187 user.contests << contest
178 188 end
179 189 redirect_to :action => 'list'
180 190 end
181 191
182 192 def remove_from_contest
183 193 user = User.find(params[:id])
184 194 contest = Contest.find(params[:contest_id])
185 195 if user and contest
186 196 user.contests.delete(contest)
187 197 end
188 198 redirect_to :action => 'list'
189 199 end
190 200
191 201 def contest_management
192 202 end
193 203
194 204 def manage_contest
@@ -358,25 +368,39
358 368 users.each do |user|
359 369 contest_stat = user.contest_stat(true)
360 370 if contest_stat and !contest_stat.forced_logout
361 371 contest_stat.forced_logout = true
362 372 contest_stat.save
363 373 end
364 374 end
365 375 end
366 376
367 377 def send_contest_update_notification_email(user, contest)
368 378 contest_title_name = Configuration['contest.name']
369 379 contest_name = contest.name
370 380 subject = t('contest.notification.email_subject', {
371 381 :contest_title_name => contest_title_name,
372 382 :contest_name => contest_name })
373 383 body = t('contest.notification.email_body', {
374 384 :full_name => user.full_name,
375 385 :contest_title_name => contest_title_name,
376 386 :contest_name => contest.name,
377 387 })
378 388
379 389 logger.info body
380 390 send_mail(user.email, subject, body)
381 391 end
392 +
393 + def find_contest_and_user_from_contest_id(id)
394 + if id!='none'
395 + @contest = Contest.find(id)
396 + else
397 + @contest = nil
398 + end
399 + if @contest
400 + @users = @contest.users
401 + else
402 + @users = User.find_users_with_no_contest
403 + end
404 + return [@contest, @users]
405 + end
382 406 end
@@ -1,65 +1,66
1 1 <h1>
2 2 List users in <% if @contest %><%= @contest.title %>
3 3 <% else %>Users not in any contests<% end %>
4 4 </h1>
5 5
6 6 <div class="submitbox">
7 7 <%= link_to '[View all users]', :action => 'list' %>
8 8 <% if Configuration.multicontests? %>
9 9 <%= link_to '[Manage bulk users in contests]', :action => 'contest_management' %>
10 10 <br/>
11 11 View users in:
12 12 <% @contests.each do |contest| %>
13 13 <%= link_to "[#{contest.name}]", :action => 'contests', :id => contest.id %>
14 14 <% end %>
15 15 <%= link_to "[no contest]", :action => 'contests', :id => 'none' %>
16 16 <% end %>
17 + <br/>
18 + <% form_tag :action => 'assign_from_list' do %>
19 + <%= hidden_field_tag 'users_contest_id', (@contest ? @contest.id : 'none') %>
20 + Assign all to
21 + <%= select("new_contest","id",Contest.all.collect {|c| [c.title, c.id]}) %>
22 + <%= submit_tag "Assign", :confirm => 'Are you sure?' %>
23 + <% end %>
17 24 </div>
18 25
19 26 <table class="info">
20 27 <tr class="info-head">
21 28 <th>Login</th>
22 29 <th>Full name</th>
23 30 <th>Email</th>
24 31 <th>Activated?</th>
25 32 <th></th>
26 33 <th></th>
27 34 <th></th>
28 35 <% if Configuration.multicontests? %>
29 36 <th>Contests</th>
30 37 <th>Other enabled contests</th>
31 38 <% end %>
32 39 </tr>
33 40
34 41 <% for user in @users %>
35 42 <tr class="info-<%= cycle("odd","even") %>">
36 43 <td><%=h user.login %></td>
37 44 <td><%=h user.full_name %></td>
38 45 <td><%=h user.email %></td>
39 46 <td><%=h user.activated %></td>
40 47 <td><%= link_to 'Show', :action => 'show', :id => user %></td>
41 48 <td><%= link_to 'Edit', :action => 'edit', :id => user %></td>
42 49 <td><%= link_to 'Destroy', { :action => 'destroy', :id => user }, :confirm => 'Are you sure?', :method => :post %></td>
43 50 <% if Configuration.multicontests? %>
44 51 <td>
45 52 <% user.contests.each do |contest| %>
46 53 <%= contest.name %> [<%= link_to 'x', :action => 'remove_from_contest', :id => user.id, :contest_id => contest.id %>]
47 54 <% end %>
48 55 </td>
49 56 <td>
50 57 <% @contests.each do |contest| %>
51 58 <% if not user.contests.all.find {|c| c.id==contest.id } %>
52 59 <%= contest.name %> [<%= link_to '+', :action => 'add_to_contest', :id => user.id, :contest_id => contest.id %>]
53 60 <% end %>
54 61 <% end %>
55 62 </td>
56 63 <% end %>
57 64 </tr>
58 65 <% end %>
59 66 </table>
60 -
61 -
62 - <br />
63 -
64 - <%= link_to 'New user', :action => 'new' %>
65 - <%= link_to 'New list of users', :action => 'new_list' %>
You need to be logged in to leave comments. Login now