From: Tom Hughes Date: Tue, 18 Aug 2009 20:01:56 +0000 (+0000) Subject: Merge oauth branch at r17138 to trunk. X-Git-Tag: live~6819 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/d227589a6336999c38bffc5e11655100b9a4630a?hp=1eb58bc6078129b0f4e2127ff77f8180674bd67f Merge oauth branch at r17138 to trunk. --- diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 6dbe9165c..c43271b93 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -174,6 +174,8 @@ class ApplicationController < ActionController::Base rescue OSM::APIError => ex report_error ex.message, ex.status rescue Exception => ex + logger.info("API threw unexpected #{ex.class} exception: #{ex.message}") + ex.backtrace.each { |l| logger.info(l) } report_error "#{ex.class}: #{ex.message}", :internal_server_error end end diff --git a/app/controllers/diary_entry_controller.rb b/app/controllers/diary_entry_controller.rb index 52e287b9a..112b80182 100644 --- a/app/controllers/diary_entry_controller.rb +++ b/app/controllers/diary_entry_controller.rb @@ -113,8 +113,8 @@ class DiaryEntryController < ApplicationController @entries = DiaryEntry.find(:all, :include => :user, :conditions => ["users.visible = ? AND diary_entries.language_code = ?", true, params[:language]], :order => 'created_at DESC', :limit => 20) - @title = I18n.t('diary_entry.feed.language.title', Language.find(params[:language]).english_name) - @description = I18n.t('diary_entry.feed.language.description', Language.find(params[:language]).english_name) + @title = I18n.t('diary_entry.feed.language.title', :language_name => Language.find(params[:language]).english_name, :locale => I18n.locale) + @description = I18n.t('diary_entry.feed.language.description', :language_name => Language.find(params[:language]).english_name, :locale => I18n.locale) @link = "http://#{SERVER_URL}/diary/#{params[:language]}" else @entries = DiaryEntry.find(:all, :include => :user, diff --git a/app/controllers/trace_controller.rb b/app/controllers/trace_controller.rb index f06a162fb..10aecd4ad 100644 --- a/app/controllers/trace_controller.rb +++ b/app/controllers/trace_controller.rb @@ -45,15 +45,15 @@ class TraceController < ApplicationController # 4 - user's traces, not logged in as that user = all user's public traces if target_user.nil? # all traces if @user - conditions = ["(gpx_files.visibility <> 'private' OR gpx_files.user_id = ?)", @user.id] #1 + conditions = ["(gpx_files.visibility in ('public', 'identifiable') OR gpx_files.user_id = ?)", @user.id] #1 else - conditions = ["gpx_files.visibility <> 'private'"] #2 + conditions = ["gpx_files.visibility in ('public', 'identifiable')"] #2 end else if @user and @user == target_user conditions = ["gpx_files.user_id = ?", @user.id] #3 (check vs user id, so no join + can't pick up non-public traces by changing name) else - conditions = ["gpx_files.public <> 'private' AND gpx_files.user_id = ?", target_user.id] #4 + conditions = ["gpx_files.visibility in ('public', 'identifiable') AND gpx_files.user_id = ?", target_user.id] #4 end end @@ -207,7 +207,7 @@ class TraceController < ApplicationController end def georss - conditions = ["gpx_files.visibility <> 'private'"] + conditions = ["gpx_files.visibility in ('public', 'identifiable')"] if params[:display_name] conditions[0] += " AND users.display_name = ?" diff --git a/app/models/changeset.rb b/app/models/changeset.rb index 5c961a064..4efd4f9e7 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -112,10 +112,10 @@ class Changeset < ActiveRecord::Base # FIXME - this looks nasty and violates DRY... is there any prettier # way to do this? - @bbox[0] = array[0] + EXPAND * (@bbox[0] - @bbox[2]) if array[0] < @bbox[0] - @bbox[1] = array[1] + EXPAND * (@bbox[1] - @bbox[3]) if array[1] < @bbox[1] - @bbox[2] = array[2] + EXPAND * (@bbox[2] - @bbox[0]) if array[2] > @bbox[2] - @bbox[3] = array[3] + EXPAND * (@bbox[3] - @bbox[1]) if array[3] > @bbox[3] + @bbox[0] = [-180 * GeoRecord::SCALE, array[0] + EXPAND * (@bbox[0] - @bbox[2])].max if array[0] < @bbox[0] + @bbox[1] = [ -90 * GeoRecord::SCALE, array[1] + EXPAND * (@bbox[1] - @bbox[3])].max if array[1] < @bbox[1] + @bbox[2] = [ 180 * GeoRecord::SCALE, array[2] + EXPAND * (@bbox[2] - @bbox[0])].min if array[2] > @bbox[2] + @bbox[3] = [ 90 * GeoRecord::SCALE, array[3] + EXPAND * (@bbox[3] - @bbox[1])].min if array[3] > @bbox[3] # update active record. rails 2.1's dirty handling should take care of # whether this object needs saving or not. diff --git a/app/views/site/edit.html.erb b/app/views/site/edit.html.erb index 142d7a3f3..79b1f64af 100644 --- a/app/views/site/edit.html.erb +++ b/app/views/site/edit.html.erb @@ -12,7 +12,7 @@ <% else %> <% content_for :greeting do %> <% if @user and !@user.home_lon.nil? and !@user.home_lat.nil? %> -<%= link_to_function 'home', "setPosition(#{@user.home_lat}, #{@user.home_lon}, 10)" %> | +<%= link_to_function t('layouts.home'), "setPosition(#{@user.home_lat}, #{@user.home_lon}, 10)", { :title => t('layouts.home_tooltip') } %> | <% end %> <% end %> diff --git a/config/environment.rb b/config/environment.rb index e35353c3c..c7fa3c483 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -49,9 +49,6 @@ Rails::Initializer.run do |config| config.gem 'composite_primary_keys', :version => '2.2.2' config.gem 'libxml-ruby', :version => '>= 1.1.1', :lib => 'libxml' config.gem 'rmagick', :lib => 'RMagick' - # note: this should be changed to 0.3.6 as soon as it's released, as this has fixes for - # uploading multipart documents. - config.gem 'oauth', :version => '>=0.2.1' # Only load the plugins named here, in the order given. By default, all plugins # in vendor/plugins are loaded in alphabetical order. diff --git a/config/locales/sl.yml b/config/locales/sl.yml index db249f264..f79a9c1cf 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -322,6 +322,16 @@ sl: edit_link: Uredi ta vnos diary_comment: comment_from: "Komentar uporabnika {{link_user}} v {{comment_created_at}}" + feed: + user: + title: "Dnevnik OpenStreetMap uporabnika {{user}}" + description: "Nedavni zapisi v dnevnik OpenStreetmap uporabnika {{user}}" + language: + title: "Dnevnik OpenStreetMap v jeziku {{language_name}}" + description: "Nedavni zapisi v dnevnik uporabnikov OpenStreetmap v jeziku {{language_name}}" + all: + title: "Dnevnik OpenStreetMap" + description: "Nedavni zapisi v dnevnik uporabnikov OpenStreetmap" export: start: area_to_export: "Področje za izvoz" diff --git a/test/functional/changeset_controller_test.rb b/test/functional/changeset_controller_test.rb index 46f8a1a6a..b02f556c9 100644 --- a/test/functional/changeset_controller_test.rb +++ b/test/functional/changeset_controller_test.rb @@ -419,6 +419,57 @@ EOF end end + def test_upload_large_changeset + basic_authorization users(:public_user).email, "test" + + # create a changeset + content "" + put :create + assert_response :success, "Should be able to create a changeset: #{@response.body}" + changeset_id = @response.body.to_i + + # upload some widely-spaced nodes, spiralling positive and negative to cause + # largest bbox over-expansion possible. + diff = < + + + + + + + + + + + + + + + + + + + + + +EOF + + # upload it, which used to cause an error like "PGError: ERROR: + # integer out of range" (bug #2152). but shouldn't any more. + content diff + post :upload, :id => changeset_id + assert_response :success, + "can't upload a spatially-large diff to changeset: #{@response.body}" + + # check that the changeset bbox is within bounds + cs = Changeset.find(changeset_id) + assert cs.min_lon >= -180 * SCALE, "Minimum longitude (#{cs.min_lon / SCALE}) should be >= -180 to be valid." + assert cs.max_lon <= 180 * SCALE, "Maximum longitude (#{cs.max_lon / SCALE}) should be <= 180 to be valid." + assert cs.min_lat >= -90 * SCALE, "Minimum latitude (#{cs.min_lat / SCALE}) should be >= -90 to be valid." + assert cs.max_lat >= 90 * SCALE, "Maximum latitude (#{cs.max_lat / SCALE}) should be <= 90 to be valid." + end + ## # test that deleting stuff in a transaction doesn't bypass the checks # to ensure that used elements are not deleted.