Expose redactions through the node history API calls

Add the show_redactions=true parameter to the old_node_controller
and add a redacted attribute in node XML output.
This commit is contained in:
Kai Krueger 2012-03-26 01:42:42 -06:00 committed by Tom Hughes
parent 67182f824e
commit 7d41b926cf
2 changed files with 18 additions and 11 deletions

View file

@ -17,7 +17,7 @@ class OldNodeController < ApplicationController
doc = OSM::API.new.get_xml_doc
visible_nodes = if @user and @user.moderator?
visible_nodes = if @user and @user.moderator? and params[:show_redactions] == "true"
node.old_nodes
else
node.old_nodes.unredacted
@ -31,10 +31,10 @@ class OldNodeController < ApplicationController
end
def version
if @old_node.redacted? and (@user.nil? or not @user.moderator?)
if @old_node.redacted? and (@user.nil? or not @user.moderator?) and not params[:show_redactions] == "true"
render :nothing => true, :status => :forbidden
else
else
response.last_modified = @old_node.timestamp
doc = OSM::API.new.get_xml_doc

View file

@ -45,24 +45,31 @@ class OldNode < ActiveRecord::Base
def to_xml_node
el1 = XML::Node.new 'node'
el1['id'] = self.node_id.to_s
el1['lat'] = self.lat.to_s
el1['lon'] = self.lon.to_s
unless self.redacted? and (@user.nil? or not @user.moderator?)
self.tags.each do |k,v|
el2 = XML::Node.new('tag')
el2['k'] = k.to_s
el2['v'] = v.to_s
el1 << el2
end
el1['lat'] = self.lat.to_s
el1['lon'] = self.lon.to_s
end
el1['changeset'] = self.changeset.id.to_s
if self.changeset.user.data_public?
el1['user'] = self.changeset.user.display_name
el1['uid'] = self.changeset.user.id.to_s
end
self.tags.each do |k,v|
el2 = XML::Node.new('tag')
el2['k'] = k.to_s
el2['v'] = v.to_s
el1 << el2
end
el1['visible'] = self.visible.to_s
el1['timestamp'] = self.timestamp.xmlschema
el1['version'] = self.version.to_s
if self.redacted?
el1['redacted'] = self.redaction.title
end
return el1
end