From 053d7752b92fb3bd79e3702d9d096bacfe8eecbf Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Wed, 18 Dec 2013 18:46:22 +0000 Subject: Form and models for asking for a public body change. --- app/models/public_body_change_request.rb | 97 ++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 app/models/public_body_change_request.rb (limited to 'app/models/public_body_change_request.rb') diff --git a/app/models/public_body_change_request.rb b/app/models/public_body_change_request.rb new file mode 100644 index 000000000..6eda893fa --- /dev/null +++ b/app/models/public_body_change_request.rb @@ -0,0 +1,97 @@ +# == Schema Information +# +# Table name: public_body_change_requests +# +# id :integer not null, primary key +# user_email :string(255) +# user_name :string(255) +# user_id :integer +# public_body_name :text +# public_body_id :integer +# public_body_email :string(255) +# source_url :text +# notes :text +# is_open :boolean default(TRUE), not null +# created_at :datetime not null +# updated_at :datetime not null +# + +class PublicBodyChangeRequest < ActiveRecord::Base + + belongs_to :user + belongs_to :public_body + validates_presence_of :public_body_name, :message => N_("Please enter the name of the authority"), + :unless => proc{ |change_request| change_request.public_body } + validates_presence_of :user_name, :message => N_("Please enter your name"), + :unless => proc{ |change_request| change_request.user } + validates_presence_of :user_email, :message => N_("Please enter your email address"), + :unless => proc{ |change_request| change_request.user } + validate :user_email_format, :unless => proc{ |change_request| change_request.user_email.blank? } + validate :body_email_format, :unless => proc{ |change_request| change_request.public_body_email.blank? } + + scope :new_body_requests, :conditions => ['public_body_id IS NULL'], :order => 'created_at' + scope :body_update_requests, :conditions => ['public_body_id IS NOT NULL'], :order => 'created_at' + scope :open, :conditions => ['is_open = ?', true] + + def self.from_params(params, user) + change_request = new + change_request.update_from_params(params, user) + end + + def update_from_params(params, user) + if user + self.user_id = user.id + else + self.user_name = params[:user_name] + self.user_email = params[:user_email] + end + self.public_body_name = params[:public_body_name] + self.public_body_id = params[:public_body_id] + self.public_body_email = params[:public_body_email] + self.source_url = params[:source_url] + self.notes = params[:notes] + self + end + + def get_user_name + user ? user.name : user_name + end + + def get_user_email + user ? user.email : user_email + end + + def get_public_body_name + public_body ? public_body.name : public_body_name + end + + def send_message + if public_body + ContactMailer.update_public_body_email(self).deliver + else + ContactMailer.add_public_body(self).deliver + end + end + + def thanks_notice + if self.public_body + _("Your request to update the address for #{get_public_body_name} has been sent. Thank you for getting in touch! We'll get back to you soon.") + else + _("Your request to add an authority has been sent. Thank you for getting in touch! We'll get back to you soon.") + end + end + + private + + def body_email_format + unless MySociety::Validate.is_valid_email(self.public_body_email) + errors.add(:public_body_email, _("The authority email doesn't look like a valid address")) + end + end + + def user_email_format + unless MySociety::Validate.is_valid_email(self.user_email) + errors.add(:user_email, _("Your email doesn't look like a valid address")) + end + end +end -- cgit v1.2.3 From b5e8bd1ae1cca585e65e9d7401a762ae7e32b89f Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Wed, 18 Dec 2013 19:39:35 +0000 Subject: Populate admin public body forms based on a change request. Also add editable text for an email to be sent to the person requesting the change. --- app/models/public_body_change_request.rb | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'app/models/public_body_change_request.rb') diff --git a/app/models/public_body_change_request.rb b/app/models/public_body_change_request.rb index 6eda893fa..c1f395c0c 100644 --- a/app/models/public_body_change_request.rb +++ b/app/models/public_body_change_request.rb @@ -81,6 +81,39 @@ class PublicBodyChangeRequest < ActiveRecord::Base end end + def send_response(subject, response) + ContactMailer.from_admin_message(get_user_name, + get_user_email, + subject, + response.strip.html_safe).deliver + end + + def comment_for_public_body + comments = [_("Requested by: #{get_user_name} (#{get_user_email})")] + if !source_url.blank? + comments << _("Source URL: #{source_url}") + end + if !notes.blank? + comments << _("Notes: #{notes}") + end + comments.join("\n") + end + + def default_response_subject + if self.public_body + _("Your request to update {{public_body_name}} on {{site_name}}", :site_name => AlaveteliConfiguration::site_name, + :public_body_name => public_body.name) + else + _("Your request to add {{public_body_name}} to {{site_name}}", :site_name => AlaveteliConfiguration::site_name, + :public_body_name => public_body_name) + end + end + + def close! + self.is_open = false + self.save! + end + private def body_email_format -- cgit v1.2.3 From e39b907bb8dd1ed7bc2058e6b4a767d3f676e0bc Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Thu, 27 Feb 2014 09:36:32 +0000 Subject: Clean up translation interpolation syntax. Don't translate strings to be used in the admin interface - we're leaving it in English for now until we can markup the whole thing (#1353 and #1354). Use {{}} interpolation syntax where #{} was used in error. --- app/models/public_body_change_request.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'app/models/public_body_change_request.rb') diff --git a/app/models/public_body_change_request.rb b/app/models/public_body_change_request.rb index c1f395c0c..0e59cbecc 100644 --- a/app/models/public_body_change_request.rb +++ b/app/models/public_body_change_request.rb @@ -75,7 +75,8 @@ class PublicBodyChangeRequest < ActiveRecord::Base def thanks_notice if self.public_body - _("Your request to update the address for #{get_public_body_name} has been sent. Thank you for getting in touch! We'll get back to you soon.") + _("Your request to update the address for {{public_body_name}} has been sent. Thank you for getting in touch! We'll get back to you soon.", + :public_body_name => get_public_body_name) else _("Your request to add an authority has been sent. Thank you for getting in touch! We'll get back to you soon.") end @@ -89,12 +90,12 @@ class PublicBodyChangeRequest < ActiveRecord::Base end def comment_for_public_body - comments = [_("Requested by: #{get_user_name} (#{get_user_email})")] + comments = ["Requested by: #{get_user_name} (#{get_user_email})"] if !source_url.blank? - comments << _("Source URL: #{source_url}") + comments << "Source URL: #{source_url}" end if !notes.blank? - comments << _("Notes: #{notes}") + comments << "Notes: #{notes}" end comments.join("\n") end -- cgit v1.2.3