aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/info_request.rb15
-rw-r--r--app/models/outgoing_message.rb3
-rw-r--r--app/models/request_mailer.rb4
3 files changed, 18 insertions, 4 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index 68ace338a..d5c95b8ee 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -19,7 +19,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.34 2008-02-06 09:41:44 francis Exp $
+# $Id: info_request.rb,v 1.35 2008-02-06 12:20:37 francis Exp $
require 'digest/sha1'
@@ -110,6 +110,19 @@ 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)
+ ActiveRecord::Base.transaction do
+ self.awaiting_description = false
+ last_event = InfoRequestEvent.find(event_id)
+ last_event.described_state = new_state
+ self.described_state = new_state
+ last_event.save!
+ self.save!
+ end
+ end
+
# Work out what the situation of the request is
# waiting_response
# waiting_response_overdue # XXX calculated, should be cached for display?
diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb
index 544ca87bc..9d6c7d3d0 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.25 2008-02-06 09:41:44 francis Exp $
+# $Id: outgoing_message.rb,v 1.26 2008-02-06 12:20:37 francis Exp $
class OutgoingMessage < ActiveRecord::Base
belongs_to :info_request
@@ -90,6 +90,7 @@ class OutgoingMessage < ActiveRecord::Base
self.status = 'sent'
self.save!
self.info_request.log_event('followup_' + log_event_type, { :email => self.info_request.recipient_email, :outgoing_message_id => self.id })
+ self.info_request.set_described_state('waiting_response', self.info_request.events_needing_description[-1].id)
else
raise "Message id #{self.id} has type '#{self.message_type}' which send_message can't handle"
end
diff --git a/app/models/request_mailer.rb b/app/models/request_mailer.rb
index 747d8ae46..138cb4ea4 100644
--- a/app/models/request_mailer.rb
+++ b/app/models/request_mailer.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_mailer.rb,v 1.19 2008-01-21 11:08:16 francis Exp $
+# $Id: request_mailer.rb,v 1.20 2008-02-06 12:20:37 francis Exp $
class RequestMailer < ApplicationMailer
def initial_request(info_request, outgoing_message)
@@ -35,7 +35,7 @@ class RequestMailer < ApplicationMailer
def new_response(info_request, incoming_message)
post_redirect = PostRedirect.new(
- :uri => show_response_url(:id => info_request.id, :incoming_message_id => incoming_message.id),
+ :uri => describe_state_url(:id => info_request.id),
:user_id => info_request.user.id)
post_redirect.save!
url = confirm_url(:email_token => post_redirect.email_token)