From 112950ca3afd95c8b63e69f7b580585529b6cbaf Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Fri, 21 Mar 2008 19:00:39 +0000 Subject: [PATCH] various relations fixes --- app/controllers/amf_controller.rb | 15 +++++++++++++++ app/models/way.rb | 5 ++++- public/potlatch/potlatch.swf | Bin 115440 -> 116301 bytes 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index 83a6cd4b5..a2bb1b454 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -589,6 +589,21 @@ class AmfController < ApplicationController uid=getuserid(usertoken) if !uid then return -1,"You are not logged in, so the way could not be deleted." end + # FIXME + # the next bit removes the way from any relations + # the delete_with_relations_and_nodes_and_history method should do this, + # but at present it just throws a 'precondition failed' + way=way.to_i + db_now='@now'+(rand*100).to_i.to_s+uid.to_s+id.to_i.abs.to_s+Time.new.to_i.to_s + db_uqn='unin'+(rand*100).to_i.to_s+uid.to_s+way.to_i.abs.to_s+Time.new.to_i.to_s + ActiveRecord::Base.connection.execute("SET #{db_now}=NOW()") + createuniquenodes(way,db_uqn,[]) + deleteuniquenoderelations(db_uqn,uid,db_now) + deleteitemrelations(way_id,'way',uid,db_now) + ActiveRecord::Base.connection.execute("DROP TEMPORARY TABLE #{db_uqn}") + # end of FIXME + + # now delete the way user = User.find(uid) way = Way.find(way_id) way.delete_with_relations_and_nodes_and_history(user) diff --git a/app/models/way.rb b/app/models/way.rb index d0b961123..f1dc76eb4 100644 --- a/app/models/way.rb +++ b/app/models/way.rb @@ -210,10 +210,13 @@ class Way < ActiveRecord::Base # Delete the way and it's relations, but don't really delete it - set its visibility to false and update the history etc to maintain wiki-like functionality. def delete_with_relations_and_history(user) if self.visible - # omg FIXME + # FIXME + # this should actually delete the relations, + # not just throw a PreconditionFailed if it's a member of a relation!! if RelationMember.find(:first, :joins => "INNER JOIN current_relations ON current_relations.id=current_relation_members.id", :conditions => [ "visible = 1 AND member_type='way' and member_id=?", self.id]) raise OSM::APIPreconditionFailedError + # end FIXME else self.user_id = user.id self.tags = [] diff --git a/public/potlatch/potlatch.swf b/public/potlatch/potlatch.swf index 6af62d65526b06126d9152eef5e71afbb3f7a067..c1c3037bfb1e5507318de2f9e4c2bcf61453adb0 100755 GIT binary patch delta 21521 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 E08jMY1poj5 -- 2.39.5