X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/e7c550cf3fb13e410f49439e569f603836b3d83e..2ff2cdf63d7f9874960c3efea01b4db2a80f9f68:/app/controllers/changeset_controller.rb?ds=sidebyside diff --git a/app/controllers/changeset_controller.rb b/app/controllers/changeset_controller.rb index f91ae09bf..322ce79f7 100644 --- a/app/controllers/changeset_controller.rb +++ b/app/controllers/changeset_controller.rb @@ -45,6 +45,30 @@ class ChangesetController < ApplicationController map { |memb| [memb[0], ids[memb[0]][memb[1].to_i] || memb[1], memb[2]] } return r end + + def read + begin + changeset = Changeset.find(params[:id]) + render :text => changeset.to_xml.to_s, :content_type => "text/xml" + rescue ActiveRecord::RecordNotFound + render :nothing => true, :status => :not_found + end + end + + def close + begin + if not request.put? + render :nothing => true, :status => :method_not_allowed + return + end + changeset = Changeset.find(params[:id]) + changeset.open = false + changeset.save + render :nothing => true + rescue ActiveRecord::RecordNotFound + render :nothing => true, :status => :not_found + end + end def upload if not request.put? @@ -143,7 +167,7 @@ class ChangesetController < ApplicationController doc.find('//osm/delete/way').each do |nd| elem = XML::Node.new 'way' way = Way.find(nd['id']) - way.delete_with_relations_and_history(@user) + way.delete_with_history(@user) elem['old_id'] = elem['new_id'] = way.id.to_s elem['new_version'] = way.version.to_s root << elem @@ -160,5 +184,8 @@ class ChangesetController < ApplicationController end render :text => res.to_s, :content_type => "text/xml" + + rescue OSM::APIError => ex + render ex.render_opts end end