diff options
| author | Ken D'Ambrosio <ken@jots.org> | 2026-06-18 21:57:30 +0000 |
|---|---|---|
| committer | Ken D'Ambrosio <ken@jots.org> | 2026-06-18 21:57:30 +0000 |
| commit | 547b51c0ec6be8786eea625423d24f0ae1a884c0 (patch) | |
| tree | 5ed73b6ec395cd7821bcd29edb329c344c13df81 | |
| parent | 121e29cecd39112193b7275be343ca0d7c87019a (diff) | |
Add "move to new person" bulk action
People bulk-move previously required moving members into an existing
person, the pool, or the blacklist; this adds a "new person" target
that creates a fresh cluster from the selected faces.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| -rw-r--r-- | app.rb | 13 | ||||
| -rw-r--r-- | views/admin/person_detail.erb | 1 |
2 files changed, 13 insertions, 1 deletions
@@ -1037,6 +1037,8 @@ post '/admin/people/:uuid/bulk_move' do people[src]['members'] -= to_move + new_uid = nil + case action when 'blacklist' data['blacklist'] ||= [] @@ -1044,6 +1046,9 @@ post '/admin/people/:uuid/bulk_move' do when 'pool' people['__pool__'] ||= { 'name' => '__pool__', 'slug' => nil, 'members' => [] } people['__pool__']['members'].concat(to_move) + when 'new' + new_uid = SecureRandom.uuid + people[new_uid] = { 'name' => nil, 'slug' => nil, 'members' => to_move } when /\A[0-9a-f-]{36}\z/ halt 404 unless people.key?(action) people[action]['members'].concat(to_move) @@ -1055,7 +1060,13 @@ post '/admin/people/:uuid/bulk_move' do data['people'] = people atomic_write(PEOPLE_PATH, JSON.pretty_generate(data)) - people[src] ? redirect("/admin/people/#{src}") : redirect('/admin/people') + if new_uid + redirect "/admin/people/#{new_uid}" + elsif people[src] + redirect "/admin/people/#{src}" + else + redirect '/admin/people' + end end post '/admin/people/:uuid/merge' do diff --git a/views/admin/person_detail.erb b/views/admin/person_detail.erb index 10319cf..2715f4f 100644 --- a/views/admin/person_detail.erb +++ b/views/admin/person_detail.erb @@ -62,6 +62,7 @@ <% @named_others.each do |p| %> <option value="<%= ERB::Util.html_escape(p[:uuid]) %>">Move to: <%= ERB::Util.html_escape(p[:name]) %></option> <% end %> + <option value="new">Move to new person…</option> <option value="pool">Move to pool</option> <option value="blacklist">Blacklist</option> </select> |
