Merge pull request #1310 from basecamp/now-now-stamp

Add stamp to Not Now (doesn't include the name, though)
This commit is contained in:
Jorge Manrubia
2025-10-15 14:14:21 +02:00
committed by GitHub
11 changed files with 63 additions and 5 deletions
+1
View File
@@ -24,6 +24,7 @@ class Card < ApplicationRecord
when "stalled" then stalled
when "postponing_soon" then postponing_soon
when "closed" then closed.recently_closed_first
when "not_now" then postponed.latest
when "golden" then golden
when "draft" then drafted
else all
+1
View File
@@ -1,3 +1,4 @@
class Card::NotNow < ApplicationRecord
belongs_to :card, class_name: "::Card", touch: true
belongs_to :user, optional: true
end
+10 -2
View File
@@ -12,16 +12,24 @@ module Card::Postponable
open? && published? && not_now.present?
end
def postponed_at
not_now&.created_at
end
def postponed_by
not_now&.user
end
def active?
open? && published? && !postponed?
end
def postpone
def postpone(user: Current.user)
transaction do
send_back_to_triage
reopen
activity_spike&.destroy
create_not_now! unless postponed?
create_not_now!(user: user) unless postponed?
end
end
+1 -1
View File
@@ -1,7 +1,7 @@
module Filter::Fields
extend ActiveSupport::Concern
INDEXES = %w[ all stalled postponing_soon golden draft ]
INDEXES = %w[ all closed not_now stalled postponing_soon golden draft ]
SORTED_BY = %w[ newest oldest latest ]
delegate :default_value?, to: :class
@@ -6,6 +6,14 @@
<%= yield %>
<% end %>
<% if card.postponed? %>
<div class="card__closed">
<span class="card__closed-title" data-text="Not Now">Not Now</span>
<strong class="card__closed-date"><%= card.postponed_at.strftime("%b %d, %Y") %></strong>
<span class="card__closed-by-line">by <span class="card__closed-by"><%= card.postponed_by.familiar_name %></span></span>
</div>
<% end %>
<% if card.closed? %>
<div class="card__closed">
<span class="card__closed-title" data-text="<%= card.closure.reason %>"><%= card.closure.reason %></span>
@@ -0,0 +1,5 @@
class AddCreatorToCardNotNows < ActiveRecord::Migration[8.1]
def change
add_reference :card_not_nows, :creator, null: false, foreign_key: { to_table: :users }
end
end
@@ -0,0 +1,5 @@
class RenameCreatorToUserInCardNotNows < ActiveRecord::Migration[8.1]
def change
rename_column :card_not_nows, :creator_id, :user_id
end
end
Generated
+4 -1
View File
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[8.1].define(version: 2025_10_14_204033) do
ActiveRecord::Schema[8.1].define(version: 2025_10_15_114014) do
create_table "accesses", force: :cascade do |t|
t.datetime "accessed_at"
t.integer "collection_id", null: false
@@ -135,7 +135,9 @@ ActiveRecord::Schema[8.1].define(version: 2025_10_14_204033) do
t.integer "card_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id", null: false
t.index ["card_id"], name: "index_card_not_nows_on_card_id", unique: true
t.index ["user_id"], name: "index_card_not_nows_on_user_id"
end
create_table "cards", force: :cascade do |t|
@@ -510,6 +512,7 @@ ActiveRecord::Schema[8.1].define(version: 2025_10_14_204033) do
add_foreign_key "card_activity_spikes", "cards"
add_foreign_key "card_goldnesses", "cards"
add_foreign_key "card_not_nows", "cards"
add_foreign_key "card_not_nows", "users"
add_foreign_key "cards", "columns"
add_foreign_key "closures", "cards"
add_foreign_key "closures", "users"
+18 -1
View File
@@ -438,6 +438,7 @@ columns:
- *5
- *6
- *9
- *18
cards:
- *24
- !ruby/object:ActiveRecord::ConnectionAdapters::SQLite3::Column
@@ -1963,6 +1964,22 @@ indexes:
nulls_not_distinct:
comment:
valid: true
- !ruby/object:ActiveRecord::ConnectionAdapters::IndexDefinition
table: card_not_nows
name: index_card_not_nows_on_user_id
unique: false
columns:
- user_id
lengths: {}
orders: {}
opclasses: {}
where:
type:
using:
include:
nulls_not_distinct:
comment:
valid: true
cards:
- !ruby/object:ActiveRecord::ConnectionAdapters::IndexDefinition
table: cards
@@ -3180,4 +3197,4 @@ indexes:
nulls_not_distinct:
comment:
valid: true
version: 20251014204033
version: 20251015114014
+2
View File
@@ -22,6 +22,8 @@ class Card::PostponableTest < ActiveSupport::TestCase
assert_changes -> { card.reload.postponed? }, to: true do
card.postpone
end
assert_equal users(:david), card.not_now.user
end
test "scopes" do
+8
View File
@@ -1,6 +1,10 @@
require "test_helper"
class FilterTest < ActiveSupport::TestCase
setup do
Current.session = sessions(:david)
end
test "cards" do
Current.set session: sessions(:david) do
@new_collection = Collection.create! name: "Inaccessible Collection"
@@ -21,6 +25,10 @@ class FilterTest < ActiveSupport::TestCase
filter = users(:david).filters.new indexed_by: "closed"
assert_equal [ cards(:shipping) ], filter.cards
cards(:shipping).postpone
filter = users(:david).filters.new indexed_by: "now_now"
assert_includes filter.cards, cards(:shipping)
filter = users(:david).filters.new card_ids: [ cards(:logo, :layout).collect(&:id) ]
assert_equal [ cards(:logo), cards(:layout) ], filter.cards