]> git.openstreetmap.org Git - rails.git/commitdiff
ways now work
authorSteve Coast <steve@asklater.com>
Mon, 27 Nov 2006 13:05:27 +0000 (13:05 +0000)
committerSteve Coast <steve@asklater.com>
Mon, 27 Nov 2006 13:05:27 +0000 (13:05 +0000)
app/controllers/way_controller.rb
app/models/way.rb

index 2fd4390e49162e7102965921c796f8ec7934b5fd..b443a67c00ec47a8d0f65424540f7ba18da41641 100644 (file)
@@ -48,7 +48,32 @@ class WayController < ApplicationController
 
       way.visible = false
       way.save_with_history
+      render :nothing => true
+      return
+    when :put
+      way = Way.from_xml(request.raw_post, true)
 
+      if way
+        way_in_db = Way.find(way.id)
+        if way_in_db
+          way_in_db.user_id = @user.id
+          way_in_db.tags = way.tags
+          way_in_db.segs = way.segs
+          way_in_db.timestamp = way.timestamp
+          way_in_db.visible = true
+          if way_in_db.save_with_history
+            render :text => way.id
+          else
+            render :nothing => true, :status => 500
+          end
+          return
+        else
+          render :nothing => true, :status => 404 # way doesn't exist yet
+        end
+      else
+        render :nothing => true, :status => 400 # if we got here the doc didnt parse
+        return
+      end
     end
   end
 end
index a8724456374be2f339933c6201bcb2bdd8277fe2..85b52aa88e6e8b4c8329536e4a1a3144eaec0d58 100644 (file)
@@ -16,7 +16,7 @@ class Way < ActiveRecord::Base
     way = Way.new
 
     doc.find('//osm/way').each do |pt|
-      if !create and pt['id'] != '0'
+      unless create and pt['id'] == '0'
         way.id = pt['id'].to_i
       end
 
@@ -83,6 +83,14 @@ class Way < ActiveRecord::Base
     @tags
   end
 
+  def segs=(s)
+    @segs = s
+  end
+
+  def tags=(t)
+    @tags = t
+  end
+
   def add_seg_num(n)
     @segs = Array.new unless @segs
     @segs << n.to_i