aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/admin_request_controller.rb15
-rw-r--r--app/models/info_request_event.rb3
-rw-r--r--app/models/outgoing_message.rb13
-rw-r--r--app/views/admin_general/timeline.rhtml4
-rw-r--r--app/views/admin_request/edit_outgoing.rhtml9
5 files changed, 40 insertions, 4 deletions
diff --git a/app/controllers/admin_request_controller.rb b/app/controllers/admin_request_controller.rb
index df22f1341..d0bf9cd48 100644
--- a/app/controllers/admin_request_controller.rb
+++ b/app/controllers/admin_request_controller.rb
@@ -4,7 +4,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: admin_request_controller.rb,v 1.37 2009-06-30 14:28:25 francis Exp $
+# $Id: admin_request_controller.rb,v 1.38 2009-07-21 12:09:29 francis Exp $
class AdminRequestController < AdminController
def index
@@ -91,6 +91,19 @@ class AdminRequestController < AdminController
@outgoing_message = OutgoingMessage.find(params[:id])
end
+ def destroy_outgoing
+ @outgoing_message = OutgoingMessage.find(params[:outgoing_message_id])
+ @info_request = @outgoing_message.info_request
+ outgoing_message_id = @outgoing_message.id
+
+ @outgoing_message.fully_destroy
+ @outgoing_message.info_request.log_event("destroy_outgoing",
+ { :editor => admin_http_auth_user(), :deleted_outgoing_message_id => outgoing_message_id })
+
+ flash[:notice] = 'Outgoing message successfully destroyed.'
+ redirect_to request_admin_url(@info_request)
+ end
+
def update_outgoing
@outgoing_message = OutgoingMessage.find(params[:id])
diff --git a/app/models/info_request_event.rb b/app/models/info_request_event.rb
index 76f50c8d5..c2f515b6b 100644
--- a/app/models/info_request_event.rb
+++ b/app/models/info_request_event.rb
@@ -21,7 +21,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: info_request_event.rb,v 1.85 2009-07-03 11:43:37 francis Exp $
+# $Id: info_request_event.rb,v 1.86 2009-07-21 12:09:30 francis Exp $
class InfoRequestEvent < ActiveRecord::Base
belongs_to :info_request
@@ -44,6 +44,7 @@ class InfoRequestEvent < ActiveRecord::Base
'edit_outgoing', # outgoing message edited in admin interface
'edit_comment', # comment edited in admin interface
'destroy_incoming', # deleted an incoming message
+ 'destroy_outgoing', # deleted an outgoing message
'redeliver_incoming', # redelivered an incoming message elsewhere
'manual', # you did something in the db by hand
'response',
diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb
index 253bd000d..6d1900d64 100644
--- a/app/models/outgoing_message.rb
+++ b/app/models/outgoing_message.rb
@@ -22,7 +22,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: outgoing_message.rb,v 1.86 2009-06-30 16:30:28 francis Exp $
+# $Id: outgoing_message.rb,v 1.87 2009-07-21 12:09:30 francis Exp $
class OutgoingMessage < ActiveRecord::Base
strip_attributes!
@@ -220,6 +220,17 @@ class OutgoingMessage < ActiveRecord::Base
return text
end
+ def fully_destroy
+ ActiveRecord::Base.transaction do
+ info_request_event = InfoRequestEvent.find_by_outgoing_message_id(self.id)
+ info_request_event.track_things_sent_emails.each { |a| a.destroy }
+ info_request_event.user_info_request_sent_alerts.each { |a| a.destroy }
+ info_request_event.destroy
+ self.destroy
+ end
+ end
+
+
end
diff --git a/app/views/admin_general/timeline.rhtml b/app/views/admin_general/timeline.rhtml
index cadde541e..6cbe105b6 100644
--- a/app/views/admin_general/timeline.rhtml
+++ b/app/views/admin_general/timeline.rhtml
@@ -64,7 +64,9 @@
<% end %>
<% elsif event.event_type == 'destroy_incoming' %>
had incoming message deleted by administrator <strong><%=h event.params[:editor] %></strong>.
- <% elsif event.event_type == 'redeliver_incoming' %>
+ <% elsif event.event_type == 'destroy_outgoing' %>
+ had outgoing message deleted by administrator <strong><%=h event.params[:editor] %></strong>.
+ <% elsif event.event_type == 'redeliver_outgoing' %>
had incoming message redelivered to another request by administrator <strong><%=h event.params[:editor] %></strong>.
<% elsif event.event_type == 'response' %>
<% incoming_message = event.incoming_message %>
diff --git a/app/views/admin_request/edit_outgoing.rhtml b/app/views/admin_request/edit_outgoing.rhtml
index 01ba32227..ad78e82be 100644
--- a/app/views/admin_request/edit_outgoing.rhtml
+++ b/app/views/admin_request/edit_outgoing.rhtml
@@ -24,3 +24,12 @@
<%= link_to 'List all', '../list' %>
</p>
+<% form_tag '../destroy_outgoing' do %>
+ <div>
+ <%= hidden_field_tag 'outgoing_message_id', @outgoing_message.id %>
+ Warning, this is permanent! ---&gt;
+ <%= submit_tag "Destroy outgoing message" %>
+ </div>
+<% end %>
+
+