diff options
author | Louise Crow <louise.crow@gmail.com> | 2013-08-22 16:23:59 +0100 |
---|---|---|
committer | Louise Crow <louise.crow@gmail.com> | 2013-09-16 14:03:10 +0100 |
commit | d3df251a8033b92ad89725a2a3fea91acdd7843d (patch) | |
tree | d37fd2ceb6bee4b58ed58a86bc41cca4e3e6cfaa /app/models/info_request.rb | |
parent | c3d4859b0d02f772944042c2758b4c924871499f (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.rb | 34 |
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 |