diff options
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/admin_controller.rb | 3 | ||||
-rw-r--r-- | app/controllers/admin_request_controller.rb | 36 |
2 files changed, 29 insertions, 10 deletions
diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index a40225a75..148853168 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_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_controller.rb,v 1.16 2008-06-10 10:18:57 francis Exp $ +# $Id: admin_controller.rb,v 1.17 2008-07-08 09:41:04 francis Exp $ class AdminController < ApplicationController layout "admin" @@ -22,6 +22,7 @@ class AdminController < ApplicationController @requires_admin_requests = InfoRequest.find(:all, :select => '*, ' + last_event_time_clause + ' as last_event_time', :conditions => ["described_state = 'requires_admin'"], :order => "last_event_time") @blank_contacts = PublicBody.find(:all, :conditions => ["request_email = ''"], :order => "updated_at") @one_week_old_unclassified = InfoRequest.find(:all, :select => '*, ' + last_event_time_clause + ' as last_event_time', :conditions => [ "awaiting_description and " + last_event_time_clause + " < ? and prominence != 'backpage'", Time.now() - 1.weeks ], :order => "last_event_time") + @holding_pen_messages = InfoRequest.holding_pen_request.incoming_messages end def timeline diff --git a/app/controllers/admin_request_controller.rb b/app/controllers/admin_request_controller.rb index 02481a9aa..adbcdc9e9 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.13 2008-05-19 12:01:21 francis Exp $ +# $Id: admin_request_controller.rb,v 1.14 2008-07-08 09:41:04 francis Exp $ class AdminRequestController < ApplicationController layout "admin" @@ -104,19 +104,12 @@ class AdminRequestController < ApplicationController def destroy_incoming @incoming_message = IncomingMessage.find(params[:incoming_message_id]) - @info_request_event = InfoRequestEvent.find_by_incoming_message_id(@incoming_message.id) @info_request = @incoming_message.info_request raw_data = @incoming_message incoming_message_id = @incoming_message.id - ActiveRecord::Base.transaction do - @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 - @incoming_message.destroy - end - + @incoming_message.fully_destroy @incoming_message.info_request.log_event("destroy_incoming", { :editor => admin_http_auth_user(), :raw_data => raw_data }) @@ -124,6 +117,31 @@ class AdminRequestController < ApplicationController redirect_to request_admin_url(@info_request) end + def redeliver_incoming + incoming_message = IncomingMessage.find(params[:redeliver_incoming_message_id]) + + if params[:url_title].match(/^[0-9]+$/) + destination_request = InfoRequest.find(params[:url_title].to_i) + else + destination_request = InfoRequest.find_by_url_title(params[:url_title]) + end + + if destination_request.nil? + flash[:error] = "Failed to find destination request '" + params[:url_title] + "'" + redirect_to request_admin_url(incoming_message.info_request) + end + + raw_email = incoming_message.raw_data + mail = TMail::Mail.parse(raw_email) + mail.base64_decode + destination_request.receive(mail, raw_email) + + incoming_message.fully_destroy + + flash[:notice] = "Message has been moved to this request" + redirect_to request_admin_url(destination_request) + end + private end |