We don't need an extra method for the amf controller for saving nodes, just catch the exception and do nothing with that exception.
This commit is contained in:
parent
088b4ae1e2
commit
33d32bf737
2 changed files with 12 additions and 26 deletions
|
@ -626,7 +626,12 @@ class AmfController < ApplicationController
|
||||||
new_node = Node.new
|
new_node = Node.new
|
||||||
new_node.changeset_id = changeset_id
|
new_node.changeset_id = changeset_id
|
||||||
new_node.version = v.to_i
|
new_node.version = v.to_i
|
||||||
node.delete_with_history_unless_used!(new_node, user)
|
begin
|
||||||
|
node.delete_with_history!(new_node, user)
|
||||||
|
rescue OSM::APIPreconditionFailedError => ex
|
||||||
|
# We don't do anything here as the node is being used elsewhere
|
||||||
|
# and we don't want to delete it
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end # transaction
|
end # transaction
|
||||||
|
@ -763,7 +768,12 @@ class AmfController < ApplicationController
|
||||||
new_node = Node.new
|
new_node = Node.new
|
||||||
new_node.changeset_id = changeset_id
|
new_node.changeset_id = changeset_id
|
||||||
new_node.version = v.to_i
|
new_node.version = v.to_i
|
||||||
node.delete_with_history_unless_used!(new_node, user)
|
begin
|
||||||
|
node.delete_with_history!(new_node, user)
|
||||||
|
rescue OSM::APIPreconditionFailedError => ex
|
||||||
|
# We don't do anything with the exception as the node is in use
|
||||||
|
# elsewhere and we don't want to delete it
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end # transaction
|
end # transaction
|
||||||
|
|
|
@ -149,30 +149,6 @@ class Node < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# As above but doesn't throw an error if node is used elsewhere - instead, just silently
|
|
||||||
# returns without deleting the node. Potlatch needs this in case you ask to delete an
|
|
||||||
# off-screen node while deleting a way - it doesn't know whether the node is used
|
|
||||||
# elsewhere or not.
|
|
||||||
def delete_with_history_unless_used!(new_node, user)
|
|
||||||
unless self.visible
|
|
||||||
raise OSM::APIAlreadyDeletedError.new("node", new_node.id)
|
|
||||||
end
|
|
||||||
|
|
||||||
Node.transaction do
|
|
||||||
check_consistency(self, new_node, user)
|
|
||||||
way = WayNode.find(:first, :joins => "INNER JOIN current_ways ON current_ways.id = current_way_nodes.id",
|
|
||||||
:conditions => [ "current_ways.visible = ? AND current_way_nodes.node_id = ?", true, self.id ])
|
|
||||||
rel = RelationMember.find(:first, :joins => "INNER JOIN current_relations ON current_relations.id=current_relation_members.id",
|
|
||||||
:conditions => [ "visible = ? AND member_type='Node' and member_id=? ", true, self.id])
|
|
||||||
if way.nil? and rel.nil?
|
|
||||||
self.changeset_id = new_node.changeset_id
|
|
||||||
self.visible = false
|
|
||||||
changeset.update_bbox!(bbox)
|
|
||||||
save_with_history!
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def update_from(new_node, user)
|
def update_from(new_node, user)
|
||||||
check_consistency(self, new_node, user)
|
check_consistency(self, new_node, user)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue