aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Longair <mhl@pobox.com>2013-11-01 18:34:15 +0000
committerMark Longair <mhl@pobox.com>2013-11-05 15:47:17 +0000
commit26c1dfce9392e65c20cf348fbded1fc1542c82c4 (patch)
tree2538bdc8b77d56b7e5af940f8a104e905b741c1c
parentf22df45505fb12056e7c062e8f522c313aaa0aee (diff)
Update the calculation of the numerator for percentage statistics
We have changed the denominator of the proportion-based statistics to only include requests that are both visible and not 'awaiting_description'. This would mean, however, that the numerator could be larger than the denominator. This commit updates the calculation of those statistics to also exclude any hidden or unclassified requests.
-rw-r--r--app/models/info_request.rb21
-rw-r--r--lib/tasks/stats.rake6
2 files changed, 18 insertions, 9 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index bb6a5eb1d..9463a236e 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -1182,18 +1182,23 @@ public
after_save :update_counter_cache
after_destroy :update_counter_cache
+ # This method updates the count columns of the PublicBody that
+ # store the number of "not held", "to some extent successful" and
+ # "both visible and classified" requests when saving or destroying
+ # an InfoRequest associated with the body:
def update_counter_cache
PublicBody.skip_callback(:save, :after, :purge_in_cache)
- self.public_body.info_requests_not_held_count = InfoRequest.where(
- :public_body_id => self.public_body.id,
- :described_state => 'not_held').count
- self.public_body.info_requests_successful_count = InfoRequest.where(
- :public_body_id => self.public_body.id,
- :described_state => ['successful', 'partially_successful']).count
- self.public_body.info_requests_visible_classified_count = InfoRequest.where(
+ basic_params = {
:public_body_id => self.public_body_id,
:awaiting_description => false,
- :prominence => 'normal').count
+ :prominence => 'normal'
+ }
+ [['info_requests_not_held_count', {:described_state => 'not_held'}],
+ ['info_requests_successful_count', {:described_state => ['successful', 'partially_successful']}],
+ ['info_requests_visible_classified_count', {}]].each do |column, extra_params|
+ params = basic_params.clone.update extra_params
+ self.public_body.send "#{column}=", InfoRequest.where(params).count
+ end
self.public_body.without_revision do
public_body.no_xapian_reindex = true
public_body.save
diff --git a/lib/tasks/stats.rake b/lib/tasks/stats.rake
index eb36204c6..1d08866a4 100644
--- a/lib/tasks/stats.rake
+++ b/lib/tasks/stats.rake
@@ -103,7 +103,11 @@ namespace :stats do
overdue_count = 0
very_overdue_count = 0
InfoRequest.find_each(:batch_size => 200,
- :conditions => {:public_body_id => public_body.id}) do |ir|
+ :conditions => {
+ :public_body_id => public_body.id,
+ :awaiting_description => false,
+ :prominence => 'normal'
+ }) do |ir|
case ir.calculate_status
when 'waiting_response_very_overdue'
very_overdue_count += 1