X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/3d24694addd628cc55a3d2a24d736e61cbd55273..2c16177174d276335babcca5439cd4e97af62ffa:/app/models/way.rb diff --git a/app/models/way.rb b/app/models/way.rb index 05b412b29..90458006e 100644 --- a/app/models/way.rb +++ b/app/models/way.rb @@ -1,5 +1,7 @@ class Way < ActiveRecord::Base require 'xml/libxml' + + include ConsistencyValidations set_table_name 'current_ways' @@ -167,6 +169,11 @@ class Way < ActiveRecord::Base def add_tag_keyval(k, v) @tags = Hash.new unless @tags + + # duplicate tags are now forbidden, so we can't allow values + # in the hash to be overwritten. + raise OSM::APIDuplicateTagsError.new if @tags.include? k + @tags[k] = v end @@ -210,13 +217,23 @@ class Way < ActiveRecord::Base if !new_way.preconditions_ok? raise OSM::APIPreconditionFailedError.new end - self.changeset_id = changeset_id + self.changeset_id = new_way.changeset_id self.tags = new_way.tags self.nds = new_way.nds self.visible = true save_with_history! end + def create_with_history(user) + check_create_consistency(self, user) + if !self.preconditions_ok? + raise OSM::APIPreconditionFailedError.new + end + self.version = 0 + self.visible = true + save_with_history! + end + def preconditions_ok? return false if self.nds.empty? self.nds.each do |n|