diff options
-rw-r--r-- | app/controllers/admin_censor_rule_controller.rb | 55 | ||||
-rw-r--r-- | app/controllers/admin_controller.rb | 7 | ||||
-rw-r--r-- | app/views/admin_censor_rule/_form.rhtml | 22 | ||||
-rw-r--r-- | app/views/admin_censor_rule/_show.rhtml | 14 | ||||
-rw-r--r-- | app/views/admin_censor_rule/edit.rhtml | 2 | ||||
-rw-r--r-- | app/views/admin_censor_rule/new.rhtml | 2 | ||||
-rw-r--r-- | app/views/admin_user/show.rhtml | 2 | ||||
-rw-r--r-- | todo.txt | 2 |
8 files changed, 86 insertions, 20 deletions
diff --git a/app/controllers/admin_censor_rule_controller.rb b/app/controllers/admin_censor_rule_controller.rb index 28130b6ee..2c0c7ca4e 100644 --- a/app/controllers/admin_censor_rule_controller.rb +++ b/app/controllers/admin_censor_rule_controller.rb @@ -8,16 +8,32 @@ class AdminCensorRuleController < AdminController def new - @info_request = InfoRequest.find(params[:info_request_id]) + if params[:info_request_id] + @info_request = InfoRequest.find(params[:info_request_id]) + end + if params[:user_id] + @user = User.find(params[:user_id]) + end end def create params[:censor_rule][:last_edit_editor] = admin_http_auth_user() @censor_rule = CensorRule.new(params[:censor_rule]) if @censor_rule.save - expire_for_request(@censor_rule.info_request) + if !@censor_rule.info_request.nil? + expire_for_request(@censor_rule.info_request) + end + if !@censor_rule.user.nil? + expire_requests_for_user(@censor_rule.user) + end flash[:notice] = 'CensorRule was successfully created.' - redirect_to admin_url('request/show/' + @censor_rule.info_request.id.to_s) + if !@censor_rule.info_request.nil? + redirect_to admin_url('request/show/' + @censor_rule.info_request.id.to_s) + elsif !@censor_rule.user.nil? + redirect_to admin_url('user/show/' + @censor_rule.user.id.to_s) + else + raise "internal error" + end else render :action => 'new' end @@ -31,9 +47,20 @@ class AdminCensorRuleController < AdminController params[:censor_rule][:last_edit_editor] = admin_http_auth_user() @censor_rule = CensorRule.find(params[:id]) if @censor_rule.update_attributes(params[:censor_rule]) - expire_for_request(@censor_rule.info_request) + if !@censor_rule.info_request.nil? + expire_for_request(@censor_rule.info_request) + end + if !@censor_rule.user.nil? + expire_requests_for_user(@censor_rule.user) + end flash[:notice] = 'CensorRule was successfully updated.' - redirect_to admin_url('request/show/' + @censor_rule.info_request.id.to_s) + if !@censor_rule.info_request.nil? + redirect_to admin_url('request/show/' + @censor_rule.info_request.id.to_s) + elsif !@censor_rule.user.nil? + redirect_to admin_url('user/show/' + @censor_rule.user.id.to_s) + else + raise "internal error" + end else render :action => 'edit' end @@ -42,13 +69,25 @@ class AdminCensorRuleController < AdminController def destroy censor_rule = CensorRule.find(params[:censor_rule_id]) info_request = censor_rule.info_request + user = censor_rule.user censor_rule.destroy - expire_for_request(info_request) + if !info_request.nil? + expire_for_request(info_request) + end + if !user.nil? + expire_requests_for_user(user) + end flash[:notice] = "CensorRule was successfully destroyed." - redirect_to admin_url('request/show/' + info_request.id.to_s) - end + if !info_request.nil? + redirect_to admin_url('request/show/' + info_request.id.to_s) + elsif !user.nil? + redirect_to admin_url('user/show/' + user.id.to_s) + else + raise "internal error" + end + end private diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index ca5538e03..4734146a8 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -31,5 +31,12 @@ class AdminController < ApplicationController # also force a search reindexing (so changed text reflected in search) info_request.reindex_request_events end + + # Expire cached attachment files for a user + def expire_requests_for_user(user) + for info_request in user.info_requests + expire_for_request(info_request) + end + end end diff --git a/app/views/admin_censor_rule/_form.rhtml b/app/views/admin_censor_rule/_form.rhtml index 464061e9b..f02a3494f 100644 --- a/app/views/admin_censor_rule/_form.rhtml +++ b/app/views/admin_censor_rule/_form.rhtml @@ -1,5 +1,17 @@ <%= error_messages_for 'censor_rule' %> +<% if !info_request.nil? %> + <p>Rule is for request '<%=request_link(info_request)%>' + <%= hidden_field 'censor_rule', 'info_request_id', { :value => info_request.id } %> + </p> +<% end %> + +<% if !user.nil? %> + <p>Rule is for user '<%=user_link(user)%>' + <%= hidden_field 'censor_rule', 'user_id', { :value => user.id } %> + </p> +<% end %> + <p><label for="censor_rule_text">Text</label> (that you want to remove, case sensitive)<br/> <%= text_field 'censor_rule', 'text', :size => 60 %></p> @@ -9,10 +21,6 @@ <p><label for="censor_rule_last_edit_comment">Comment for this edit</label> (put purpose of the rule, and why the change)<br/> <%= text_area 'censor_rule', 'last_edit_comment', :rows => 2, :cols => 60 %></p> -<p>Rule is for request '<%=request_link(info_request)%>' - <%= hidden_field 'censor_rule', 'info_request_id', { :value => info_request.id } %> -</p> - <p><strong>Warning and notes:</strong> This does replace text in binary files, but for most formats only in a naive way. It works well on surprisingly many Word documents. Notably it doesn't even do UCS-2 (unicode sometimes used in Word). There is also special code @@ -20,8 +28,8 @@ which works on some PDFs. Please <strong>carefully check</strong> all attachment changed in the way you expect, and haven't become corrupted. </p> -<p>You may need to manually rebuild the search index afterwards. If you need to -redact things across a large number of requests, ask for code changes, should -be easy enough to add this per user or per authority. +<p>You may need to manually rebuild the search index afterwards. You can redact +things by individual request or by user. If you need to redact across a whole +authority, shoudl be easy enough to make code changes to add it, so ask. </p> diff --git a/app/views/admin_censor_rule/_show.rhtml b/app/views/admin_censor_rule/_show.rhtml index 112715301..363c3fb6f 100644 --- a/app/views/admin_censor_rule/_show.rhtml +++ b/app/views/admin_censor_rule/_show.rhtml @@ -25,7 +25,15 @@ <p>None yet.</p> <% end %> -<p> - <%= link_to "New censor rule", '../../censor/new?info_request_id=' + info_request.id.to_s %> -</p> +<% if defined? info_request %> + <p> + <%= link_to "New censor rule", '../../censor/new?info_request_id=' + info_request.id.to_s %> (for this request only) + </p> +<% end %> + +<% if defined? user %> + <p> + <%= link_to "New censor rule", '../../censor/new?user_id=' + user.id.to_s %> (for all requests by this user) + </p> +<% end %> diff --git a/app/views/admin_censor_rule/edit.rhtml b/app/views/admin_censor_rule/edit.rhtml index c22a61021..e34e022a0 100644 --- a/app/views/admin_censor_rule/edit.rhtml +++ b/app/views/admin_censor_rule/edit.rhtml @@ -3,7 +3,7 @@ <h1><%=@title%></h1> <% form_tag '../update/' + @censor_rule.id.to_s do %> - <%= render :partial => 'form', :locals => { :info_request => @censor_rule.info_request } %> + <%= render :partial => 'form', :locals => { :info_request => @censor_rule.info_request, :user => @censor_rule.user } %> <p><%= submit_tag 'Save', :accesskey => 's' %></p> <% end %> diff --git a/app/views/admin_censor_rule/new.rhtml b/app/views/admin_censor_rule/new.rhtml index 36de5f0f1..c6b8cea6a 100644 --- a/app/views/admin_censor_rule/new.rhtml +++ b/app/views/admin_censor_rule/new.rhtml @@ -3,7 +3,7 @@ <h1><%=@title%></h1> <% form_tag 'create' do %> - <%= render :partial => 'form', :locals => { :info_request => @info_request } %> + <%= render :partial => 'form', :locals => { :info_request => @info_request, :user => @user } %> <p><%= submit_tag "Create" %></p> <% end %> diff --git a/app/views/admin_user/show.rhtml b/app/views/admin_user/show.rhtml index a10d08e69..18d23fe73 100644 --- a/app/views/admin_user/show.rhtml +++ b/app/views/admin_user/show.rhtml @@ -62,4 +62,6 @@ <h2>Requests</h2> <%= render :partial => 'admin_request/some_requests', :locals => { :info_requests => @admin_user.info_requests } %> +<h2>Censor rules</h2> +<%= render :partial => 'admin_censor_rule/show', :locals => { :censor_rules => @admin_user.censor_rules, :user => @admin_user } %> @@ -1,3 +1,5 @@ +Fix link in view, censor rules, _form.rhtml to request/user + Next (things that will reduce admin time mainly) ==== |