From 7d41b926cfd4edb026056fd5f421e78f5a6681c8 Mon Sep 17 00:00:00 2001 From: Kai Krueger Date: Mon, 26 Mar 2012 01:42:42 -0600 Subject: [PATCH] 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. --- app/controllers/old_node_controller.rb | 6 +++--- app/models/old_node.rb | 23 +++++++++++++++-------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/controllers/old_node_controller.rb b/app/controllers/old_node_controller.rb index 1b5ec13a3..13f8b00be 100644 --- a/app/controllers/old_node_controller.rb +++ b/app/controllers/old_node_controller.rb @@ -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 diff --git a/app/models/old_node.rb b/app/models/old_node.rb index e20a3b728..9e2c5a40e 100644 --- a/app/models/old_node.rb +++ b/app/models/old_node.rb @@ -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 -- 2.43.2