Merge remote-tracking branch 'upstream/pull/1974'

This commit is contained in:
Tom Hughes 2018-09-05 19:06:16 +01:00
commit 983e21db2e
9 changed files with 86 additions and 86 deletions

View file

@ -4,19 +4,19 @@ class ChangesetController < ApplicationController
layout "site"
require "xml/libxml"
skip_before_action :verify_authenticity_token, :except => [:list]
before_action :authorize_web, :only => [:list, :feed, :comments_feed]
before_action :set_locale, :only => [:list, :feed, :comments_feed]
skip_before_action :verify_authenticity_token, :except => [:index]
before_action :authorize_web, :only => [:index, :feed, :comments_feed]
before_action :set_locale, :only => [:index, :feed, :comments_feed]
before_action :authorize, :only => [:create, :update, :upload, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
before_action :require_moderator, :only => [:hide_comment, :unhide_comment]
before_action :require_allow_write_api, :only => [:create, :update, :upload, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
before_action :require_public_data, :only => [:create, :update, :upload, :close, :comment, :subscribe, :unsubscribe]
before_action :check_api_writable, :only => [:create, :update, :upload, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
before_action :check_api_readable, :except => [:create, :update, :upload, :download, :query, :list, :feed, :comment, :subscribe, :unsubscribe, :comments_feed]
before_action(:only => [:list, :feed, :comments_feed]) { |c| c.check_database_readable(true) }
around_action :api_call_handle_error, :except => [:list, :feed, :comments_feed]
around_action :api_call_timeout, :except => [:list, :feed, :comments_feed, :upload]
around_action :web_timeout, :only => [:list, :feed, :comments_feed]
before_action :check_api_readable, :except => [:create, :update, :upload, :download, :query, :index, :feed, :comment, :subscribe, :unsubscribe, :comments_feed]
before_action(:only => [:index, :feed, :comments_feed]) { |c| c.check_database_readable(true) }
around_action :api_call_handle_error, :except => [:index, :feed, :comments_feed]
around_action :api_call_timeout, :except => [:index, :feed, :comments_feed, :upload]
around_action :web_timeout, :only => [:index, :feed, :comments_feed]
# Helper methods for checking consistency
include ConsistencyValidations
@ -255,7 +255,7 @@ class ChangesetController < ApplicationController
##
# list non-empty changesets in reverse chronological order
def list
def index
@params = params.permit(:display_name, :bbox, :friends, :nearby, :max_id, :list)
if request.format == :atom && @params[:max_id]
@ -300,14 +300,14 @@ class ChangesetController < ApplicationController
@edits = changesets.order("changesets.id DESC").limit(20).preload(:user, :changeset_tags, :comments)
render :action => :list, :layout => false
render :action => :index, :layout => false
end
end
##
# list edits as an atom feed
def feed
list
index
end
##

View file

@ -32,15 +32,15 @@ module ChangesetHelper
end
end
def changeset_list_title(params, user)
def changeset_index_title(params, user)
if params[:friends] && user
t "changeset.list.title_friend"
t "changeset.index.title_friend"
elsif params[:nearby] && user
t "changeset.list.title_nearby"
t "changeset.index.title_nearby"
elsif params[:display_name]
t "changeset.list.title_user", :user => params[:display_name]
t "changeset.index.title_user", :user => params[:display_name]
else
t "changeset.list.title"
t "changeset.index.title"
end
end
end

View file

@ -5,9 +5,9 @@
<% end -%>
<%
set_title(changeset_list_title(params, current_user))
set_title(changeset_index_title(params, current_user))
if params[:display_name]
@heading = t('changeset.list.title_user', :user => link_to(params[:display_name], user_path(:display_name => params[:display_name]))).html_safe
@heading = t('changeset.index.title_user', :user => link_to(params[:display_name], user_path(:display_name => params[:display_name]))).html_safe
else
@heading = @title
end

View file

@ -1,8 +1,8 @@
atom_feed(:language => I18n.locale, :schema_date => 2009,
:id => url_for(@params.merge(:only_path => false)),
:root_url => url_for(@params.merge(:action => :list, :format => nil, :only_path => false)),
:root_url => url_for(@params.merge(:action => :index, :format => nil, :only_path => false)),
"xmlns:georss" => "http://www.georss.org/georss") do |feed|
feed.title changeset_list_title(params, current_user)
feed.title changeset_index_title(params, current_user)
feed.updated @edits.map { |e| [e.created_at, e.closed_at].max }.max
feed.icon image_url("favicon.ico")

View file

@ -7,7 +7,7 @@
<!-- Displaying user's own profile page to themself -->
<ul class='secondary-actions clearfix'>
<li>
<%= link_to t('.my edits'), :controller => 'changeset', :action => 'list', :display_name => current_user.display_name %>
<%= link_to t('.my edits'), :controller => 'changeset', :action => 'index', :display_name => current_user.display_name %>
<span class='count-number'><%= number_with_delimiter(current_user.changesets.size) %></span>
</li>
<li>
@ -49,7 +49,7 @@
<ul class='secondary-actions clearfix'>
<li>
<%= link_to t('.edits'), :controller => 'changeset', :action => 'list', :display_name => @user.display_name %>
<%= link_to t('.edits'), :controller => 'changeset', :action => 'index', :display_name => @user.display_name %>
<span class='count-number'><%= number_with_delimiter(@user.changesets.size) %></span>
</li>
<li>

View file

@ -228,7 +228,7 @@ en:
user: "User"
comment: "Comment"
area: "Area"
list:
index:
title: "Changesets"
title_user: "Changesets by %{user}"
title_friend: "Changesets by my friends"

View file

@ -119,11 +119,11 @@ OpenStreetMap::Application.routes.draw do
get "/changeset/:id/comments/feed" => "changeset#comments_feed", :as => :changeset_comments_feed, :id => /\d*/, :defaults => { :format => "rss" }
get "/note/:id" => "browse#note", :id => /\d+/, :as => "browse_note"
get "/note/new" => "browse#new_note"
get "/user/:display_name/history" => "changeset#list"
get "/user/:display_name/history" => "changeset#index"
get "/user/:display_name/history/feed" => "changeset#feed", :defaults => { :format => :atom }
get "/user/:display_name/notes" => "notes#mine"
get "/history/friends" => "changeset#list", :friends => true, :as => "friend_changesets", :defaults => { :format => :html }
get "/history/nearby" => "changeset#list", :nearby => true, :as => "nearby_changesets", :defaults => { :format => :html }
get "/history/friends" => "changeset#index", :friends => true, :as => "friend_changesets", :defaults => { :format => :html }
get "/history/nearby" => "changeset#index", :nearby => true, :as => "nearby_changesets", :defaults => { :format => :html }
get "/browse/way/:id", :to => redirect(:path => "/way/%{id}")
get "/browse/way/:id/history", :to => redirect(:path => "/way/%{id}/history")
@ -150,7 +150,7 @@ OpenStreetMap::Application.routes.draw do
get "/fixthemap" => "site#fixthemap"
get "/help" => "site#help"
get "/about" => "site#about"
get "/history" => "changeset#list"
get "/history" => "changeset#index"
get "/history/feed" => "changeset#feed", :defaults => { :format => :atom }
get "/history/comments/feed" => "changeset#comments_feed", :as => :changesets_comments_feed, :defaults => { :format => "rss" }
get "/export" => "site#export"

View file

@ -63,7 +63,7 @@ class ChangesetControllerTest < ActionController::TestCase
)
assert_routing(
{ :path => "/user/name/history", :method => :get },
{ :controller => "changeset", :action => "list", :display_name => "name" }
{ :controller => "changeset", :action => "index", :display_name => "name" }
)
assert_routing(
{ :path => "/user/name/history/feed", :method => :get },
@ -71,15 +71,15 @@ class ChangesetControllerTest < ActionController::TestCase
)
assert_routing(
{ :path => "/history/friends", :method => :get },
{ :controller => "changeset", :action => "list", :friends => true, :format => :html }
{ :controller => "changeset", :action => "index", :friends => true, :format => :html }
)
assert_routing(
{ :path => "/history/nearby", :method => :get },
{ :controller => "changeset", :action => "list", :nearby => true, :format => :html }
{ :controller => "changeset", :action => "index", :nearby => true, :format => :html }
)
assert_routing(
{ :path => "/history", :method => :get },
{ :controller => "changeset", :action => "list" }
{ :controller => "changeset", :action => "index" }
)
assert_routing(
{ :path => "/history/feed", :method => :get },
@ -1882,173 +1882,173 @@ CHANGESET
##
# This should display the last 20 changesets closed
def test_list
get :list, :params => { :format => "html" }
def test_index
get :index, :params => { :format => "html" }
assert_response :success
assert_template "history"
assert_template :layout => "map"
assert_select "h2", :text => "Changesets", :count => 1
get :list, :params => { :format => "html", :list => "1" }, :xhr => true
get :index, :params => { :format => "html", :list => "1" }, :xhr => true
assert_response :success
assert_template "list"
assert_template "index"
check_list_result(Changeset.all)
check_index_result(Changeset.all)
end
##
# This should display the last 20 changesets closed
def test_list_xhr
get :list, :params => { :format => "html" }, :xhr => true
def test_index_xhr
get :index, :params => { :format => "html" }, :xhr => true
assert_response :success
assert_template "history"
assert_template :layout => "xhr"
assert_select "h2", :text => "Changesets", :count => 1
get :list, :params => { :format => "html", :list => "1" }, :xhr => true
get :index, :params => { :format => "html", :list => "1" }, :xhr => true
assert_response :success
assert_template "list"
assert_template "index"
check_list_result(Changeset.all)
check_index_result(Changeset.all)
end
##
# This should display the last 20 changesets closed in a specific area
def test_list_bbox
get :list, :params => { :format => "html", :bbox => "4.5,4.5,5.5,5.5" }
def test_index_bbox
get :index, :params => { :format => "html", :bbox => "4.5,4.5,5.5,5.5" }
assert_response :success
assert_template "history"
assert_template :layout => "map"
assert_select "h2", :text => "Changesets", :count => 1
get :list, :params => { :format => "html", :bbox => "4.5,4.5,5.5,5.5", :list => "1" }, :xhr => true
get :index, :params => { :format => "html", :bbox => "4.5,4.5,5.5,5.5", :list => "1" }, :xhr => true
assert_response :success
assert_template "list"
assert_template "index"
check_list_result(Changeset.where("min_lon < 55000000 and max_lon > 45000000 and min_lat < 55000000 and max_lat > 45000000"))
check_index_result(Changeset.where("min_lon < 55000000 and max_lon > 45000000 and min_lat < 55000000 and max_lat > 45000000"))
end
##
# Checks the display of the user changesets listing
def test_list_user
def test_index_user
user = create(:user)
create(:changeset, :user => user)
create(:changeset, :closed, :user => user)
get :list, :params => { :format => "html", :display_name => user.display_name }
get :index, :params => { :format => "html", :display_name => user.display_name }
assert_response :success
assert_template "history"
get :list, :params => { :format => "html", :display_name => user.display_name, :list => "1" }, :xhr => true
get :index, :params => { :format => "html", :display_name => user.display_name, :list => "1" }, :xhr => true
assert_response :success
assert_template "list"
assert_template "index"
check_list_result(user.changesets)
check_index_result(user.changesets)
end
##
# Checks the display of the user changesets listing for a private user
def test_list_private_user
def test_index_private_user
private_user = create(:user, :data_public => false)
create(:changeset, :user => private_user)
create(:changeset, :closed, :user => private_user)
get :list, :params => { :format => "html", :display_name => private_user.display_name }
get :index, :params => { :format => "html", :display_name => private_user.display_name }
assert_response :success
assert_template "history"
get :list, :params => { :format => "html", :display_name => private_user.display_name, :list => "1" }, :xhr => true
get :index, :params => { :format => "html", :display_name => private_user.display_name, :list => "1" }, :xhr => true
assert_response :success
assert_template "list"
assert_template "index"
check_list_result(Changeset.none)
check_index_result(Changeset.none)
end
##
# Check the not found of the list user changesets
def test_list_user_not_found
get :list, :params => { :format => "html", :display_name => "Some random user" }
# Check the not found of the index user changesets
def test_index_user_not_found
get :index, :params => { :format => "html", :display_name => "Some random user" }
assert_response :not_found
assert_template "user/no_such_user"
get :list, :params => { :format => "html", :display_name => "Some random user", :list => "1" }, :xhr => true
get :index, :params => { :format => "html", :display_name => "Some random user", :list => "1" }, :xhr => true
assert_response :not_found
assert_template "user/no_such_user"
end
##
# Checks the display of the friends changesets listing
def test_list_friends
def test_index_friends
private_user = create(:user, :data_public => true)
friend = create(:friend, :befriender => private_user)
create(:changeset, :user => friend.befriendee)
get :list, :params => { :friends => true }
get :index, :params => { :friends => true }
assert_response :redirect
assert_redirected_to :controller => :user, :action => :login, :referer => friend_changesets_path
session[:user] = private_user.id
get :list, :params => { :friends => true }
get :index, :params => { :friends => true }
assert_response :success
assert_template "history"
get :list, :params => { :friends => true, :list => "1" }, :xhr => true
get :index, :params => { :friends => true, :list => "1" }, :xhr => true
assert_response :success
assert_template "list"
assert_template "index"
check_list_result(Changeset.where(:user => private_user.friend_users.identifiable))
check_index_result(Changeset.where(:user => private_user.friend_users.identifiable))
end
##
# Checks the display of the nearby user changesets listing
def test_list_nearby
def test_index_nearby
private_user = create(:user, :data_public => false, :home_lat => 51.1, :home_lon => 1.0)
user = create(:user, :home_lat => 51.0, :home_lon => 1.0)
create(:changeset, :user => user)
get :list, :params => { :nearby => true }
get :index, :params => { :nearby => true }
assert_response :redirect
assert_redirected_to :controller => :user, :action => :login, :referer => nearby_changesets_path
session[:user] = private_user.id
get :list, :params => { :nearby => true }
get :index, :params => { :nearby => true }
assert_response :success
assert_template "history"
get :list, :params => { :nearby => true, :list => "1" }, :xhr => true
get :index, :params => { :nearby => true, :list => "1" }, :xhr => true
assert_response :success
assert_template "list"
assert_template "index"
check_list_result(Changeset.where(:user => user.nearby))
check_index_result(Changeset.where(:user => user.nearby))
end
##
# Check that we can't request later pages of the changesets list
def test_list_max_id
get :list, :params => { :format => "html", :max_id => 4 }, :xhr => true
# Check that we can't request later pages of the changesets index
def test_index_max_id
get :index, :params => { :format => "html", :max_id => 4 }, :xhr => true
assert_response :success
assert_template "history"
assert_template :layout => "xhr"
assert_select "h2", :text => "Changesets", :count => 1
get :list, :params => { :format => "html", :list => "1", :max_id => 4 }, :xhr => true
get :index, :params => { :format => "html", :list => "1", :max_id => 4 }, :xhr => true
assert_response :success
assert_template "list"
assert_template "index"
check_list_result(Changeset.where("id <= 4"))
check_index_result(Changeset.where("id <= 4"))
end
##
# Check that a list with a next page link works
def test_list_more
def test_index_more
create_list(:changeset, 50)
get :list, :params => { :format => "html" }
get :index, :params => { :format => "html" }
assert_response :success
get :list, :params => { :format => "html" }, :xhr => true
get :index, :params => { :format => "html" }, :xhr => true
assert_response :success
end
@ -2063,7 +2063,7 @@ CHANGESET
get :feed, :params => { :format => :atom }
assert_response :success
assert_template "list"
assert_template "index"
assert_equal "application/atom+xml", response.content_type
check_feed_result([changeset, closed_changeset])
@ -2081,7 +2081,7 @@ CHANGESET
get :feed, :params => { :format => :atom, :bbox => "4.5,4.5,5.5,5.5" }
assert_response :success
assert_template "list"
assert_template "index"
assert_equal "application/atom+xml", response.content_type
check_feed_result([changeset, closed_changeset])
@ -2099,7 +2099,7 @@ CHANGESET
get :feed, :params => { :format => :atom, :display_name => user.display_name }
assert_response :success
assert_template "list"
assert_template "index"
assert_equal "application/atom+xml", response.content_type
check_feed_result(changesets)
@ -2499,8 +2499,8 @@ CHANGESET
end
##
# check the result of a list
def check_list_result(changesets)
# check the result of a index
def check_index_result(changesets)
changesets = changesets.where("num_changes > 0")
.order(:created_at => :desc)
.limit(20)