aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/api_controller.rb20
-rwxr-xr-xapp/helpers/link_to_helper.rb6
-rw-r--r--app/views/api/new_requests.atom.builder22
-rw-r--r--app/views/api/request_events.atom.builder25
4 files changed, 40 insertions, 33 deletions
diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb
index a8c9b5fef..3001ca3cb 100644
--- a/app/controllers/api_controller.rb
+++ b/app/controllers/api_controller.rb
@@ -155,17 +155,27 @@ class ApiController < ApplicationController
head :no_content
end
- def body_new_requests
+ def body_request_events
feed_type = params[:feed_type]
raise PermissionDenied.new("#{@public_body.id} != #{params[:id]}") if @public_body.id != params[:id].to_i
- @requests = @public_body.info_requests
+ @events = InfoRequestEvent.find_by_sql([
+ %(select info_request_events.*
+ from info_requests
+ join info_request_events on info_requests.id = info_request_events.info_request_id
+ where info_requests.public_body_id = ?
+ and info_request_events.event_type in (
+ 'sent', 'followup_sent', 'resent', 'followup_resent'
+ )
+ order by info_request_events.created_at desc
+ ), @public_body.id
+ ])
if feed_type == "atom"
- render :template => "api/new_requests.atom", :layout => false
+ render :template => "api/request_events.atom", :layout => false
elsif feed_type == "json"
- render :json => @requests
+ render :json => @events
else
- raise ActiveRecord::RecordNotFound.new("Unrecognised feed type: " + feed_type)
+ raise ActiveRecord::RecordNotFound.new("Unrecognised feed type: #{feed_type}")
end
end
diff --git a/app/helpers/link_to_helper.rb b/app/helpers/link_to_helper.rb
index efa20b723..1a86333b6 100755
--- a/app/helpers/link_to_helper.rb
+++ b/app/helpers/link_to_helper.rb
@@ -16,12 +16,6 @@ module LinkToHelper
params = {:url_title => info_request.url_title, :only_path => true}
return show_request_url(params.merge(extra_params))
end
-
- def info_request_url(info_request)
- # This method is called implicitly by the builder view views/api/new_requests.atom.builder
- # to construct the URLs for the feed entries. Therefore we return fully-qualified URLs here.
- return main_url(request_url(info_request))
- end
def request_link(info_request, cls=nil )
link_to h(info_request.title), request_url(info_request), :class => cls
diff --git a/app/views/api/new_requests.atom.builder b/app/views/api/new_requests.atom.builder
deleted file mode 100644
index bd5c2f90e..000000000
--- a/app/views/api/new_requests.atom.builder
+++ /dev/null
@@ -1,22 +0,0 @@
-atom_feed do |feed|
- feed.title("New requests made to #{@public_body.name}")
- feed.updated(@requests.first.updated_at)
-
- puts @requests.inspect
- for request in @requests
- feed.entry(request) do |entry|
- entry.updated(request.updated_at)
- entry.published(request.created_at)
- entry.title(request.title)
- entry.content(request.last_event_forming_initial_request.outgoing_message.body, :type => 'text')
- entry.author do |author|
- author.name(request.user_name)
- if !request.user.nil?
- author.uri(main_url(user_url(request.user)))
- end
- author.email(request.incoming_email)
- end
- end
- end
-end
-
diff --git a/app/views/api/request_events.atom.builder b/app/views/api/request_events.atom.builder
new file mode 100644
index 000000000..4f0133051
--- /dev/null
+++ b/app/views/api/request_events.atom.builder
@@ -0,0 +1,25 @@
+atom_feed("xmlns:alaveteli" => "http://www.alaveteli.org/API/v2/RequestEvents/Atom") do |feed|
+ feed.title("Events relating to #{@public_body.name}")
+ feed.updated(@events.first.created_at)
+
+ for event in @events
+ feed.entry(event) do |entry|
+ request = event.info_request
+
+ entry.published(event.created_at)
+ entry.tag!("alaveteli:event_type", event.event_type)
+ entry.tag!("alaveteli:request_url", main_url(request_url(request)))
+ entry.title(request.title)
+
+ entry.content(event.outgoing_message.body, :type => 'text')
+
+ entry.author do |author|
+ author.name(request.user_name)
+ if !request.user.nil?
+ author.uri(main_url(user_url(request.user)))
+ end
+ author.email(request.incoming_email)
+ end
+ end
+ end
+end