diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/admin_request_controller.rb | 4 | ||||
-rw-r--r-- | app/controllers/request_controller.rb | 4 | ||||
-rw-r--r-- | app/models/info_request.rb | 19 | ||||
-rw-r--r-- | app/models/outgoing_message.rb | 4 |
4 files changed, 20 insertions, 11 deletions
diff --git a/app/controllers/admin_request_controller.rb b/app/controllers/admin_request_controller.rb index be40e17f4..f94861b5e 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.11 2008-05-05 22:38:04 francis Exp $ +# $Id: admin_request_controller.rb,v 1.12 2008-05-12 00:56:21 francis Exp $ class AdminRequestController < ApplicationController layout "admin" @@ -47,7 +47,7 @@ class AdminRequestController < ApplicationController @info_request.title = params[:info_request][:title] @info_request.prominence = params[:info_request][:prominence] if @info_request.described_state != params[:info_request][:described_state] - @info_request.set_described_state(params[:info_request][:described_state], @info_request.get_last_event.id.to_i) + @info_request.set_described_state(params[:info_request][:described_state]) end @info_request.awaiting_description = params[:info_request][:awaiting_description] == "true" ? true : false diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb index db53631c4..1879482a3 100644 --- a/app/controllers/request_controller.rb +++ b/app/controllers/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: request_controller.rb,v 1.78 2008-05-05 22:48:43 francis Exp $ +# $Id: request_controller.rb,v 1.79 2008-05-12 00:56:21 francis Exp $ class RequestController < ApplicationController @@ -191,7 +191,7 @@ class RequestController < ApplicationController end # Make the state change - @info_request.set_described_state(params[:incoming_message][:described_state], @last_info_request_event_id) + @info_request.set_described_state(params[:incoming_message][:described_state]) # Display appropriate next page (e.g. help for complaint etc.) if @info_request.calculate_status == 'waiting_response' diff --git a/app/models/info_request.rb b/app/models/info_request.rb index d3285116c..e439ee656 100644 --- a/app/models/info_request.rb +++ b/app/models/info_request.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.rb,v 1.106 2008-05-09 01:02:32 francis Exp $ +# $Id: info_request.rb,v 1.107 2008-05-12 00:56:22 francis Exp $ require 'digest/sha1' require File.join(File.dirname(__FILE__),'../../vendor/plugins/acts_as_xapian/lib/acts_as_xapian') @@ -178,12 +178,11 @@ public RequestMailer.deliver_new_response(self, incoming_message) end - # Change status - event id is of the most recent event at the change - # XXX should probably check event id is last event here - def set_described_state(new_state, event_id) + # Change status, including for last event for later historical purposes + def set_described_state(new_state) ActiveRecord::Base.transaction do self.awaiting_description = false - last_event = InfoRequestEvent.find(event_id) + last_event = self.get_last_event last_event.described_state = new_state self.described_state = new_state last_event.save! @@ -358,6 +357,16 @@ public end # The last response is the default one people might want to reply to + def get_last_response_event + info_request_event_id = get_last_response_event_id + if info_request_event_id.nil? + return nil + else + return InfoRequestEvent.find(info_request_event_id) + end + end + + # The last response is the default one people might want to reply to def get_last_response event_id = self.get_last_response_event_id if event_id.nil? diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb index 189ff77d2..b13f266d5 100644 --- a/app/models/outgoing_message.rb +++ b/app/models/outgoing_message.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: outgoing_message.rb,v 1.44 2008-04-24 22:50:03 angie Exp $ +# $Id: outgoing_message.rb,v 1.45 2008-05-12 00:56:22 francis Exp $ class OutgoingMessage < ActiveRecord::Base belongs_to :info_request @@ -97,7 +97,7 @@ class OutgoingMessage < ActiveRecord::Base self.save! self.info_request.log_event('followup_' + log_event_type, { :email => self.info_request.recipient_email, :outgoing_message_id => self.id }) if self.info_request.described_state == 'waiting_clarification' - self.info_request.set_described_state('waiting_response', self.info_request.events_needing_description[-1].id) + self.info_request.set_described_state('waiting_response') end else raise "Message id #{self.id} has type '#{self.message_type}' which send_message can't handle" |