class ChangesetController < ApplicationController
require 'xml/libxml'
- require 'diff_reader'
before_filter :authorize, :only => [:create, :update, :delete, :upload, :include, :close]
before_filter :check_write_availability, :only => [:create, :update, :delete, :upload, :include]
raise OSM::APIUserChangesetMismatchError
end
- changeset.open = false
+ # to close the changeset, we'll just set its closed_at time to
+ # now. this might not be enough if there are concurrency issues,
+ # but we'll have to wait and see.
+ changeset.set_closed_time_now
+
changeset.save!
render :nothing => true
rescue ActiveRecord::RecordNotFound
# increase the size of the bounding box. this is a hint that clients can
# set either before uploading a large number of changes, or changes that
# the client (but not the server) knows will affect areas further away.
- def include
+ def expand_bbox
# only allow POST requests, because although this method is
# idempotent, there is no "document" to PUT really...
if request.post?
render ex.render_opts
end
+private
#------------------------------------------------------------
# utility functions below.
#------------------------------------------------------------
raise OSM::APIBadUserInput.new("bad time range") if times.size != 2
from, to = times.collect { |t| DateTime.parse(t) }
- return ['created_at > ? and created_at < ?', from, to]
+ return ['closed_at >= ? and created_at <= ?', from, to]
else
# if there is no comma, assume its a lower limit on time
- return ['created_at > ?', DateTime.parse(time)]
+ return ['closed_at >= ?', DateTime.parse(time)]
end
else
return nil
##
# restrict changes to those which are open
def conditions_open(open)
- return open.nil? ? nil : ['open = ?', true]
+ return open.nil? ? nil : ['closed_at >= ?', DateTime.now]
end
end