aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/admin_censor_rule_controller.rb55
-rw-r--r--app/controllers/admin_controller.rb7
-rw-r--r--app/views/admin_censor_rule/_form.rhtml22
-rw-r--r--app/views/admin_censor_rule/_show.rhtml14
-rw-r--r--app/views/admin_censor_rule/edit.rhtml2
-rw-r--r--app/views/admin_censor_rule/new.rhtml2
-rw-r--r--app/views/admin_user/show.rhtml2
-rw-r--r--todo.txt2
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 } %>
diff --git a/todo.txt b/todo.txt
index 76f53bf70..7b1ca6776 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,3 +1,5 @@
+Fix link in view, censor rules, _form.rhtml to request/user
+
Next (things that will reduce admin time mainly)
====