decidim-cdtb 0.6.1 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4adf8e2c9aeb9bfef5d29c8b9beb889da8566d7cd5d49debeded01c0aac28030
4
- data.tar.gz: ed5adda640ba3bfec70f1b13147f5fd05a2ba51cc818f6b8344bb5791354e820
3
+ metadata.gz: 4c986754e258f5c89f059019e2eff8a989cb15972c8958a0aef8519246a1c974
4
+ data.tar.gz: a930aa3920de4ffaa6549d86831dcc9f328b8e4be9eab69a3d0e99a4367ba7ad
5
5
  SHA512:
6
- metadata.gz: 55c8a981705afb0014de3d2e8c90ba6de21aba8e9e7d9746cddfa75311a7b22fe5cfdcd31689e2b7a146a789643f795fb52d6c6acdc42dfbf0415d74602dfacd
7
- data.tar.gz: 8a10c840a930ce5ba7a349890491725ca1ed19a9035f030aab79955d2651b45b9c7d1e1303b2edced69a712a96548060249ec59ad6ee5e82894c8d80d1f1c0e3
6
+ metadata.gz: 9ae0c57f0806d1d074969b6a4e6f5780d4cac4a6843d0696cc65c1235025e604eb5e6a1c866260a99fd15099b019aee936932888c0cdf0de345622b5a32d684d
7
+ data.tar.gz: 187bcef080e8308048ee7250a8b7b226dc21ff644e875ac254a33164df150338a491d000e79b73058f04aea8bf03d639a1ce76707df340679a0af05610215122
data/CHANGELOG.md CHANGED
@@ -1,4 +1,6 @@
1
- ## [Unreleased]
1
+ ## [0.6.2] - 2026-09-10 (minor)
2
+
3
+ - Prevent `cdtb:users:remove` from enqueueing the admin block notification email when blocking users while preserving auditability and moderation records.
2
4
 
3
5
  ## [0.6.1] - 2026-08-27 (patch)
4
6
 
data/Gemfile.lock CHANGED
@@ -141,7 +141,7 @@ GIT
141
141
  PATH
142
142
  remote: .
143
143
  specs:
144
- decidim-cdtb (0.6.1)
144
+ decidim-cdtb (0.6.2)
145
145
  decidim (>= 0.29.0)
146
146
  rails (>= 6)
147
147
  ruby-progressbar
@@ -85,28 +85,57 @@ module Decidim
85
85
  end
86
86
 
87
87
  def block_user(user, reporter_user)
88
- params = {
89
- user_id: user.id,
90
- justification: "Confirmed spam suspicious"
91
- }
88
+ justification = "Confirmed spam suspicious"
92
89
 
93
- form = Decidim::Admin::BlockUserForm.from_params(params).with_context(
94
- {
95
- current_organization: user.organization,
96
- current_user: reporter_user
97
- }
98
- )
90
+ return skip_blocked_user(user) if user.blocked?
99
91
 
100
- Decidim::Admin::BlockUser.call(form) do
101
- on(:ok) do
102
- puts "OK: User #{user.id} blocked"
103
- return true
104
- end
92
+ user_block = create_user_block(user, reporter_user, justification)
93
+ apply_block_to_user(user, user_block, reporter_user, justification)
105
94
 
106
- on(:invalid) do
107
- puts "ERROR: User #{user.id} not blocked"
108
- return false
109
- end
95
+ puts "OK: User #{user.id} blocked"
96
+ true
97
+ rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved => e
98
+ puts "ERROR: User #{user.id} not blocked (#{e.message})"
99
+ false
100
+ end
101
+
102
+ def skip_blocked_user(user)
103
+ puts "SKIP: User #{user.id} already blocked"
104
+ false
105
+ end
106
+
107
+ def create_user_block(user, reporter_user, justification)
108
+ Decidim::UserModeration.find_or_create_by!(user:)
109
+
110
+ Decidim::UserBlock.create!(
111
+ justification:,
112
+ user:,
113
+ blocking_user: reporter_user
114
+ )
115
+ end
116
+
117
+ def apply_block_to_user(user, user_block, reporter_user, justification)
118
+ Decidim.traceability.perform_action!(
119
+ "block",
120
+ user,
121
+ reporter_user,
122
+ extra: {
123
+ reportable_type: user.class.name,
124
+ current_justification: justification
125
+ },
126
+ resource: {
127
+ title: user.name
128
+ }
129
+ ) do
130
+ user.assign_attributes(
131
+ blocked: true,
132
+ blocked_at: Time.current,
133
+ block_id: user_block.id,
134
+ extended_data: user.extended_data.to_h.merge("user_name" => user.name),
135
+ name: "Blocked user",
136
+ notifications_sending_frequency: "none"
137
+ )
138
+ user.save!
110
139
  end
111
140
  end
112
141
 
@@ -116,9 +145,11 @@ module Decidim
116
145
  }
117
146
 
118
147
  form = Decidim::DeleteAccountForm.from_params(params).with_context(current_user: user)
148
+ removed_users = 0
119
149
 
120
150
  Decidim::DestroyAccount.call(form) do
121
151
  on(:ok) do
152
+ removed_users += 1
122
153
  puts "OK: User #{user.id} removed"
123
154
  end
124
155
 
@@ -126,6 +157,8 @@ module Decidim
126
157
  puts "ERROR: User #{user.id} not removed"
127
158
  end
128
159
  end
160
+
161
+ @num_applied += removed_users
129
162
  end
130
163
 
131
164
  def report_comment(comment, user, reporter_user)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Decidim
4
4
  module Cdtb
5
- VERSION = "0.6.1"
5
+ VERSION = "0.6.2"
6
6
  DECIDIM_MIN_VERSION = ">= 0.29.0"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-cdtb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oliver Valls
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-08-28 00:00:00.000000000 Z
11
+ date: 2026-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: decidim