From: Tom Hughes Date: Wed, 7 Aug 2024 17:40:40 +0000 (+0100) Subject: Merge remote-tracking branch 'upstream/pull/5055' X-Git-Tag: live~805 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/a0b612ad15218835c3d98b39cc0ef24a50ef47cf?hp=6f5167b86609674b2f38a355ea0c34abdca10ba8 Merge remote-tracking branch 'upstream/pull/5055' --- diff --git a/app/controllers/api/notes_controller.rb b/app/controllers/api/notes_controller.rb index d53059a94..be36421d9 100644 --- a/app/controllers/api/notes_controller.rb +++ b/app/controllers/api/notes_controller.rb @@ -115,12 +115,12 @@ module Api comment = params[:text] # Find the note and check it is valid - @note = Note.find(id) - raise OSM::APINotFoundError unless @note - raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? - - # Mark the note as hidden Note.transaction do + @note = Note.lock.find(id) + raise OSM::APINotFoundError unless @note + raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? + + # Mark the note as hidden @note.status = "hidden" @note.save @@ -146,13 +146,13 @@ module Api comment = params[:text] # Find the note and check it is valid - @note = Note.find(id) - raise OSM::APINotFoundError unless @note - raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? - raise OSM::APINoteAlreadyClosedError, @note if @note.closed? - - # Add a comment to the note Note.transaction do + @note = Note.lock.find(id) + raise OSM::APINotFoundError unless @note + raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? + raise OSM::APINoteAlreadyClosedError, @note if @note.closed? + + # Add a comment to the note add_comment(@note, comment, "commented") end @@ -174,13 +174,13 @@ module Api comment = params[:text] # Find the note and check it is valid - @note = Note.find_by(:id => id) - raise OSM::APINotFoundError unless @note - raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? - raise OSM::APINoteAlreadyClosedError, @note if @note.closed? - - # Close the note and add a comment Note.transaction do + @note = Note.lock.find_by(:id => id) + raise OSM::APINotFoundError unless @note + raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? + raise OSM::APINoteAlreadyClosedError, @note if @note.closed? + + # Close the note and add a comment @note.close add_comment(@note, comment, "closed") @@ -204,13 +204,13 @@ module Api comment = params[:text] # Find the note and check it is valid - @note = Note.find_by(:id => id) - raise OSM::APINotFoundError unless @note - raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? || current_user.moderator? - raise OSM::APINoteAlreadyOpenError, @note unless @note.closed? || !@note.visible? - - # Reopen the note and add a comment Note.transaction do + @note = Note.lock.find_by(:id => id) + raise OSM::APINotFoundError unless @note + raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? || current_user.moderator? + raise OSM::APINoteAlreadyOpenError, @note unless @note.closed? || !@note.visible? + + # Reopen the note and add a comment @note.reopen add_comment(@note, comment, "reopened") diff --git a/app/controllers/diary_comments_controller.rb b/app/controllers/diary_comments_controller.rb index a9a7a2641..35dbbb559 100644 --- a/app/controllers/diary_comments_controller.rb +++ b/app/controllers/diary_comments_controller.rb @@ -41,7 +41,7 @@ class DiaryCommentsController < ApplicationController # Add the commenter to the subscribers if necessary @entry.subscriptions.create(:user => current_user) unless @entry.subscribers.exists?(current_user.id) - redirect_to diary_entry_path(@entry.user, @entry) + redirect_to diary_entry_path(@entry.user, @entry, :anchor => "comment#{@diary_comment.id}") else render :action => "new" end diff --git a/app/views/api/changesets/index.json.jbuilder b/app/views/api/changesets/index.json.jbuilder index f52d69865..ce094fa34 100644 --- a/app/views/api/changesets/index.json.jbuilder +++ b/app/views/api/changesets/index.json.jbuilder @@ -1,5 +1,5 @@ json.partial! "api/root_attributes" -json.changesets(@changesets) do |changeset| - json.partial! changeset +json.changesets do + json.array! @changesets, :partial => "changeset", :as => :changeset end diff --git a/app/views/api/messages/inbox.json.jbuilder b/app/views/api/messages/inbox.json.jbuilder index 524006ded..122a82495 100644 --- a/app/views/api/messages/inbox.json.jbuilder +++ b/app/views/api/messages/inbox.json.jbuilder @@ -1,5 +1,5 @@ json.partial! "api/root_attributes" -json.messages(@messages) do |message| - json.partial! message +json.messages do + json.array! @messages, :partial => "message", :as => :message end diff --git a/app/views/api/messages/outbox.json.jbuilder b/app/views/api/messages/outbox.json.jbuilder index 524006ded..122a82495 100644 --- a/app/views/api/messages/outbox.json.jbuilder +++ b/app/views/api/messages/outbox.json.jbuilder @@ -1,5 +1,5 @@ json.partial! "api/root_attributes" -json.messages(@messages) do |message| - json.partial! message +json.messages do + json.array! @messages, :partial => "message", :as => :message end diff --git a/app/views/api/notes/index.json.jbuilder b/app/views/api/notes/index.json.jbuilder index 7909391f5..5660a8ad5 100644 --- a/app/views/api/notes/index.json.jbuilder +++ b/app/views/api/notes/index.json.jbuilder @@ -1,5 +1,5 @@ json.type "FeatureCollection" -json.features(@notes) do |note| - json.partial! note +json.features do + json.array! @notes, :partial => "note", :as => :note end diff --git a/app/views/api/users/index.json.jbuilder b/app/views/api/users/index.json.jbuilder index 1ad07d47c..d2dbd4d4f 100644 --- a/app/views/api/users/index.json.jbuilder +++ b/app/views/api/users/index.json.jbuilder @@ -1,5 +1,5 @@ json.partial! "api/root_attributes" -json.users(@users) do |user| - json.partial! user +json.users do + json.array! @users, :partial => "user", :as => :user end diff --git a/script/cleanup b/script/cleanup index 7601d35cf..e829be176 100755 --- a/script/cleanup +++ b/script/cleanup @@ -6,4 +6,7 @@ OauthNonce.where("timestamp < EXTRACT(EPOCH FROM NOW() - INTERVAL '1 day')").del OauthToken.where("invalidated_at < NOW() - INTERVAL '28 days'").delete_all RequestToken.where("authorized_at IS NULL AND created_at < NOW() - INTERVAL '28 days'").delete_all +Doorkeeper::AccessGrant.where("revoked_at < NOW() - INTERVAL '28 days' OR (created_at + expires_in * INTERVAL '1 second') < NOW() - INTERVAL '28 days'").delete_all +Doorkeeper::AccessToken.where("revoked_at < NOW() - INTERVAL '28 days' OR (created_at + expires_in * INTERVAL '1 second') < NOW() - INTERVAL '28 days'").delete_all + exit 0 diff --git a/test/controllers/diary_comments_controller_test.rb b/test/controllers/diary_comments_controller_test.rb index fa978d606..a06565aa1 100644 --- a/test/controllers/diary_comments_controller_test.rb +++ b/test/controllers/diary_comments_controller_test.rb @@ -115,14 +115,14 @@ class DiaryCommentsControllerTest < ActionDispatch::IntegrationTest end end end - assert_redirected_to diary_entry_path(entry.user, entry) + comment = DiaryComment.last + assert_redirected_to diary_entry_path(entry.user, entry, :anchor => "comment#{comment.id}") email = ActionMailer::Base.deliveries.first assert_equal [user.email], email.to assert_equal "[OpenStreetMap] #{other_user.display_name} commented on a diary entry", email.subject assert_match(/New comment/, email.text_part.decoded) assert_match(/New comment/, email.html_part.decoded) ActionMailer::Base.deliveries.clear - comment = DiaryComment.order(:id).last assert_equal entry.id, comment.diary_entry_id assert_equal other_user.id, comment.user_id assert_equal "New comment", comment.body @@ -157,14 +157,14 @@ class DiaryCommentsControllerTest < ActionDispatch::IntegrationTest end end end - assert_redirected_to diary_entry_path(entry.user, entry) + comment = DiaryComment.last + assert_redirected_to diary_entry_path(entry.user, entry, :anchor => "comment#{comment.id}") email = ActionMailer::Base.deliveries.first assert_equal [user.email], email.to assert_equal "[OpenStreetMap] #{other_user.display_name} commented on a diary entry", email.subject assert_match %r{http://example.com/spam}, email.text_part.decoded assert_match %r{http://example.com/spam}, email.html_part.decoded ActionMailer::Base.deliveries.clear - comment = DiaryComment.order(:id).last assert_equal entry.id, comment.diary_entry_id assert_equal other_user.id, comment.user_id assert_equal spammy_text, comment.body