aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/admin_request_controller.rb17
-rw-r--r--app/controllers/public_body_controller.rb15
-rw-r--r--app/controllers/request_controller.rb12
-rw-r--r--app/controllers/request_game_controller.rb13
4 files changed, 32 insertions, 25 deletions
diff --git a/app/controllers/admin_request_controller.rb b/app/controllers/admin_request_controller.rb
index c5abf8769..7cf23e61e 100644
--- a/app/controllers/admin_request_controller.rb
+++ b/app/controllers/admin_request_controller.rb
@@ -16,12 +16,25 @@ class AdminRequestController < AdminController
def list
@query = params[:query]
- @info_requests = InfoRequest.paginate :order => "created_at desc", :page => params[:page], :per_page => 100,
+ @info_requests = InfoRequest.paginate :order => "created_at desc",
+ :page => params[:page],
+ :per_page => 100,
:conditions => @query.nil? ? nil : ["lower(title) like lower('%'||?||'%')", @query]
end
def list_old_unclassified
- @info_requests = InfoRequest.find_old_unclassified(:conditions => ["prominence = 'normal'"])
+ @info_requests = WillPaginate::Collection.create((params[:page] or 1), 50) do |pager|
+ info_requests = InfoRequest.find_old_unclassified(:conditions => ["prominence = 'normal'"],
+ :limit => pager.per_page,
+ :offset => pager.offset)
+ # inject the result array into the paginated collection:
+ pager.replace(info_requests)
+
+ unless pager.total_entries
+ # the pager didn't manage to guess the total count, do it manually
+ pager.total_entries = InfoRequest.count_old_unclassified(:conditions => ["prominence = 'normal'"])
+ end
+ end
end
def show
diff --git a/app/controllers/public_body_controller.rb b/app/controllers/public_body_controller.rb
index 95d936e54..b8ea82a66 100644
--- a/app/controllers/public_body_controller.rb
+++ b/app/controllers/public_body_controller.rb
@@ -7,7 +7,7 @@
#
# $Id: public_body_controller.rb,v 1.8 2009-09-14 13:27:00 francis Exp $
-require 'csv'
+require 'fastercsv'
class PublicBodyController < ApplicationController
# XXX tidy this up with better error messages, and a more standard infrastructure for the redirect to canonical URL
@@ -148,10 +148,10 @@ class PublicBodyController < ApplicationController
end
def list_all_csv
- public_bodies = PublicBody.find(:all, :order => 'url_name')
- report = StringIO.new
- CSV::Writer.generate(report, ',') do |title|
- title << [
+ public_bodies = PublicBody.find(:all, :order => 'url_name',
+ :include => [:translations, :tags])
+ report = FasterCSV.generate() do |csv|
+ csv << [
'Name',
'Short name',
# deliberately not including 'Request email'
@@ -164,7 +164,7 @@ class PublicBodyController < ApplicationController
'Version',
]
public_bodies.each do |public_body|
- title << [
+ csv << [
public_body.name,
public_body.short_name,
# DO NOT include request_email (we don't want to make it
@@ -179,8 +179,7 @@ class PublicBodyController < ApplicationController
]
end
end
- report.rewind
- send_data(report.read, :type=> 'text/csv; charset=utf-8; header=present',
+ send_data(report, :type=> 'text/csv; charset=utf-8; header=present',
:filename => 'all-authorities.csv',
:disposition =>'attachment', :encoding => 'utf8')
end
diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb
index 6e983a014..268ecc73a 100644
--- a/app/controllers/request_controller.rb
+++ b/app/controllers/request_controller.rb
@@ -422,19 +422,19 @@ class RequestController < ApplicationController
old_described_state = @info_request.described_state
@info_request.set_described_state(params[:incoming_message][:described_state])
- # If you're not the *actual* requester owner. e.g. you are playing the
+ # If you're not the *actual* requester. e.g. you are playing the
# classification game, or you're doing this just because you are an
# admin user (not because you also own the request).
if !@info_request.is_actual_owning_user?(authenticated_user)
- # Log what you did, for classification game score purposes. We
- # don't log if you were the requester XXX This is presumably so you
- # don't score for classifying your own requests. Could instead
- # always log and filter at display time.
- @info_request.log_event("status_update",
+ # Log the status change by someone other than the requester
+ event = @info_request.log_event("status_update",
{ :user_id => authenticated_user.id,
:old_described_state => old_described_state,
:described_state => @info_request.described_state,
})
+ # Create a classification event for league tables
+ RequestClassification.create!(:user_id => authenticated_user.id,
+ :info_request_event_id => event.id)
# Don't give advice on what to do next, as it isn't their request
RequestMailer.deliver_old_unclassified_updated(@info_request) if !@info_request.is_external?
diff --git a/app/controllers/request_game_controller.rb b/app/controllers/request_game_controller.rb
index 904c44759..f22652dd1 100644
--- a/app/controllers/request_game_controller.rb
+++ b/app/controllers/request_game_controller.rb
@@ -11,13 +11,12 @@ class RequestGameController < ApplicationController
def play
session[:request_game] = Time.now
- old = InfoRequest.find_old_unclassified(:conditions => ["prominence = 'normal'"])
- @missing = old.size
+ @missing = InfoRequest.count_old_unclassified(:conditions => ["prominence = 'normal'"])
@total = InfoRequest.count
@done = @total - @missing
@percentage = (@done.to_f / @total.to_f * 10000).round / 100.0
- @requests = old.sort_by{ rand }.slice(0..2)
+ @requests = InfoRequest.get_random_old_unclassified(3)
if @missing == 0
flash[:notice] = _('<p>All done! Thank you very much for your help.</p><p>There are <a href="{{helpus_url}}">more things you can do</a> to help {{site_name}}.</p>',
@@ -25,12 +24,8 @@ class RequestGameController < ApplicationController
:site_name => site_name)
end
- @league_table_28_days = InfoRequestEvent.make_league_table(
- [ "event_type = 'status_update' and created_at >= ?", Time.now() - 28.days ]
- )[0..10]
- @league_table_all_time = InfoRequestEvent.make_league_table(
- [ "event_type = 'status_update'"]
- )[0..10]
+ @league_table_28_days = RequestClassification.league_table(10, [ "created_at >= ?", Time.now() - 28.days ])
+ @league_table_all_time = RequestClassification.league_table(10)
@play_urls = true
end