- def deleteway(usertoken, changeset_id, way_id, way_version, node_id_version) #:doc:
- user = getuser(usertoken)
- unless user then return -1,"You are not logged in, so the way could not be deleted." end
-
- way_id = way_id.to_i
- # Need a transaction so that if one item fails to delete, the whole delete fails.
- Way.transaction do
-
- # FIXME: would be good not to make two history entries when removing
- # two nodes from the same relation
- old_way = Way.find(way_id)
- #old_way.unshared_node_ids.each do |n|
- # deleteitemrelations(n, 'node')
- #end
- #deleteitemrelations(way_id, 'way')
-
-
- #way.delete_with_relations_and_nodes_and_history(changeset_id.to_i)
- old_way.unshared_node_ids.each do |node_id|
- # delete the node
- node = Node.find(node_id)
- delete_node = Node.new
- delete_node.version = node_id_version[node_id]
- node.delete_with_history!(delete_node, user)
- end
- # delete the way
- delete_way = Way.new
- delete_way.version = way_version
- old_way.delete_with_history!(delete_way, user)
- end # transaction
- [0, way_id]
- rescue OSM::APIChangesetAlreadyClosedError => ex
- return [-1, "The changeset #{ex.changeset.id} was closed at #{ex.changeset.closed_at}"]
- rescue OSM::APIVersionMismatchError => ex
- # Really need to check to see whether this is a server load issue, and the
- # last version was in the same changeset, or belongs to the same user, then
- # we can return something different
- return [-3, "You have taken too long to edit, please reload the area"]
- rescue OSM::APIAlreadyDeletedError => ex
- return [-1, "The object has already been deleted"]
- rescue OSM::APIError => ex
- # Some error that we don't specifically catch
- return [-2, "Something really bad happened :-()"]
- end
-
-
- # ====================================================================
- # Support functions
+ def deleteway(usertoken, changeset_id, way_id, way_version, deletednodes) #:doc:
+ amf_handle_error("'deleteway' #{way_id}", "way", way_id) do
+ user = getuser(usertoken)
+ return -1, "You are not logged in, so the way could not be deleted." unless user
+ return -1, t("application.setup_user_auth.blocked") if user.blocks.active.exists?
+ return -1, "You must accept the contributor terms before you can edit." if REQUIRE_TERMS_AGREED && user.terms_agreed.nil?