aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/info_request.rb
diff options
context:
space:
mode:
authorLouise Crow <louise.crow@gmail.com>2013-08-22 16:23:59 +0100
committerLouise Crow <louise.crow@gmail.com>2013-09-16 14:03:10 +0100
commitd3df251a8033b92ad89725a2a3fea91acdd7843d (patch)
treed37fd2ceb6bee4b58ed58a86bc41cca4e3e6cfaa /app/models/info_request.rb
parentc3d4859b0d02f772944042c2758b4c924871499f (diff)
Move some download methods to InfoRequest.
Use send_file to send zips. Also adds 'all_can_view_all_correspondence?' - is this request completely cachable, or do we need to cache different versions for different levels of privilege?
Diffstat (limited to 'app/models/info_request.rb')
-rw-r--r--app/models/info_request.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index cc3b58d2b..32e651ff9 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -958,6 +958,36 @@ public
find(:all, params)
end
+ def InfoRequest.download_zip_dir()
+ File.join(Rails.root, "cache", "zips", "#{Rails.env}")
+ end
+
+ def request_dirs
+ first_three_digits = id.to_s()[0..2]
+ File.join(first_three_digits.to_s, id.to_s)
+ end
+
+ def download_zip_dir
+ File.join(InfoRequest.download_zip_dir, "download", request_dirs)
+ end
+
+ def make_zip_cache_path(user)
+ cache_file_dir = File.join(InfoRequest.download_zip_dir(),
+ "download",
+ request_dirs,
+ last_update_hash)
+ cache_file_suffix = if all_can_view_all_correspondence?
+ ""
+ elsif Ability.can_view_with_prominence?('hidden', self, user)
+ "_hidden"
+ elsif Ability.can_view_with_prominence?('requester_only', self, user)
+ "_requester_only"
+ else
+ ""
+ end
+ File.join(cache_file_dir, "#{url_title}#{cache_file_suffix}.zip")
+ end
+
def is_old_unclassified?
!is_external? && awaiting_description && url_title != 'holding_pen' && get_last_response_event &&
Time.now > get_last_response_event.created_at + OLD_AGE_IN_DAYS
@@ -1031,6 +1061,10 @@ public
return false
end
+ def all_can_view_all_correspondence?
+ all_can_view? && incoming_messages.all?{ |message| message.all_can_view? }
+ end
+
def indexed_by_search?
if self.prominence == 'backpage' || self.prominence == 'hidden' || self.prominence == 'requester_only'
return false