]> git.openstreetmap.org Git - rails.git/blobdiff - lib/diff_reader.rb
fix version number return for "modify" sections of diff uploads
[rails.git] / lib / diff_reader.rb
index eca6d438c642722912227235370b528d47eb0343..f7c51d79704fbd036a7ff45ec26fbf41922c35d6 100644 (file)
@@ -99,9 +99,8 @@ class DiffReader
           # diff, so we must fix these before saving the element.
           new.fix_placeholders!(ids)
 
-          # set the initial version to zero and save (which increments it)
-          new.version = 0
-          new.save_with_history!
+          # create element given user
+          new.create_with_history(@changeset.user)
           
           # save placeholder => allocated ID map
           ids[model.to_s.downcase.to_sym][placeholder_id] = new.id
@@ -130,8 +129,10 @@ class DiffReader
 
           xml_result = XML::Node.new model.to_s.downcase
           xml_result["old_id"] = old.id.to_s
-          xml_result["new_id"] = new.id.to_s
-          xml_result["new_version"] = new.version.to_s
+          xml_result["new_id"] = new.id.to_s 
+          # version is updated in "old" through the update, so we must not
+          # return new.version here but old.version!
+          xml_result["new_version"] = old.version.to_s
           result.root << xml_result
         end
 
@@ -156,7 +157,7 @@ class DiffReader
 
       else
         # no other actions to choose from, so it must be the users fault!
-        raise "Unknown action #{action_name}, choices are create, modify, delete."
+        raise OSM::APIChangesetActionInvalid.new(action_name)
       end
     end