X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/fb5f39f19ae00dad9ec896e216e8e813de42c151..747d6f1d11037d79946396270f59fc9aa11cc629:/app/controllers/relation_controller.rb diff --git a/app/controllers/relation_controller.rb b/app/controllers/relation_controller.rb index 4b3fdf34f..93573b95f 100644 --- a/app/controllers/relation_controller.rb +++ b/app/controllers/relation_controller.rb @@ -12,12 +12,14 @@ class RelationController < ApplicationController if request.put? relation = Relation.from_xml(request.raw_post, true) - if relation + # We assume that an exception has been thrown if there was an error + # generating the relation + #if relation relation.create_with_history @user render :text => relation.id.to_s, :content_type => "text/plain" - else - render :nothing => true, :status => :bad_request - end + #else + # render :text => "Couldn't get turn the input into a relation.", :status => :bad_request + #end else render :nothing => true, :status => :method_not_allowed end @@ -62,13 +64,12 @@ class RelationController < ApplicationController end def delete -#XXX check if member somewhere! begin relation = Relation.find(params[:id]) new_relation = Relation.from_xml(request.raw_post) if new_relation and new_relation.id == relation.id - relation.delete_with_history(new_relation, @user) - render :nothing => true + relation.delete_with_history!(new_relation, @user) + render :text => relation.version.to_s, :content_type => "text/plain" else render :nothing => true, :status => :bad_request end @@ -141,8 +142,7 @@ class RelationController < ApplicationController render :text => doc.to_s, :content_type => "text/xml" else - - render :text => "", :status => :gone + render :nothing => true, :status => :gone end rescue ActiveRecord::RecordNotFound @@ -165,8 +165,10 @@ class RelationController < ApplicationController render :text => doc.to_s, :content_type => "text/xml" else - render :nothing => true, :status => :bad_request + render :text => "You need to supply a comma separated list of ids.", :status => :bad_request end + rescue ActiveRecord::RecordNotFound + render :text => "Could not find one of the relations", :status => :not_found end def relations_for_way @@ -180,12 +182,12 @@ class RelationController < ApplicationController end def relations_for_object(objtype) - relationids = RelationMember.find(:all, :conditions => ['member_type=? and member_id=?', objtype, params[:id]]).collect { |ws| ws.id }.uniq + relationids = RelationMember.find(:all, :conditions => ['member_type=? and member_id=?', objtype, params[:id]]).collect { |ws| ws.id[0] }.uniq doc = OSM::API.new.get_xml_doc Relation.find(relationids).each do |relation| - doc.root << relation.to_xml_node + doc.root << relation.to_xml_node if relation.visible end render :text => doc.to_s, :content_type => "text/xml"