decidim-cdtb 0.5.0 → 0.5.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: 4545daf0386a7705e4c372eb8a0c49812d2e9b7bb35e9cb704b4d3c4d0a8958a
4
- data.tar.gz: c8c831e68a8766c2bf3cd4a1486ce7bfc1c199aa150a285b21e1abc23e856eab
3
+ metadata.gz: 3cdd6e2f7b6f54ea5053222a30ff8cb106b14975261395d8fdf6cbae0e7d06f1
4
+ data.tar.gz: 3e141391b889c44fb29d640e036417cbfea23308e9392efe9e9bbf67a132d7ff
5
5
  SHA512:
6
- metadata.gz: 33c54f1f56b68b0b15ae5aed1338c81e236808d14bb7c2e8055eb3dbc7add79aa85e28c8a14e06c63b855713a4265dfaaba2cbb09f8f4c89911ed43285ab2d88
7
- data.tar.gz: b0001f706bf9083b3049bc223644bd44d41373e56cff44870c092c867bc6054034eaef8a9f96813d3da3cdfe7df83749877c6c3235831e4c6d5499779444df87
6
+ metadata.gz: 9b3e4166b142c0d23b7140802d669cf3833a3195625ca48d6931d000db5cc12ea7431914a2cac518efc51c70c890aad81ceda101e7c47bf63e34fdbe59778819
7
+ data.tar.gz: 1144580a008ee6e0c1ca00d14a5e30e1be7528a7d4165b1cd893c2462204a94f9248ed0801183878ae1b18f3282cf28bbbc8eec34d207515d3d097289573ab77
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.5.2] - 2025-05-23 (patch - Sense por ni flotador)
4
+
5
+ - Update validate_migrations generator template.
6
+ - Add last_sign_in_at to spam users detector.
7
+
8
+ ## [0.5.1] - 2025-04-14 (minor - Diferents però igual)
9
+
10
+ - Add remove ActionLogs of users on remove users task.
11
+ - Fix error on add content blocks task.
12
+
3
13
  ## [0.5.0] - 2025-04-28 (minor - Unes roques molt gracioses)
4
14
 
5
15
  - Add task to export the list of admins.
data/Gemfile.lock CHANGED
@@ -141,7 +141,7 @@ GIT
141
141
  PATH
142
142
  remote: .
143
143
  specs:
144
- decidim-cdtb (0.5.0)
144
+ decidim-cdtb (0.5.2)
145
145
  decidim (>= 0.28.0)
146
146
  rails (>= 6)
147
147
  ruby-progressbar
@@ -73,6 +73,7 @@ module Decidim
73
73
 
74
74
  current_content_blocks.each do |content_block|
75
75
  # hero is usually the first content block
76
+ next if content_block.nil?
76
77
  next if content_block == extra_data_content_block || content_block.manifest_name == "hero"
77
78
 
78
79
  content_block.update(weight: content_block.weight + 10)
@@ -7,7 +7,7 @@ module Decidim
7
7
  module Spam
8
8
  # Detect spam behavior in users
9
9
  #
10
- class UserSpamDetector < ::Decidim::Cdtb::Task
10
+ class SpamUsersDetector < ::Decidim::Cdtb::Task
11
11
  # rubocop:disable Style/RedundantRegexpEscape
12
12
  URL_REGEX = %r{(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|
13
13
  www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|
@@ -44,7 +44,7 @@ module Decidim
44
44
  filepath= Rails.env.test? ? "tmp/#{filename}" : filename
45
45
  CSV.open(filepath, "w") do |csv|
46
46
  csv_headers = ["ID", "Is suspicious?", "Name", "Email", "Nickname", "Personal URL", "About",
47
- "Organization ID", "Organization Name"]
47
+ "Organization ID", "Organization Name", "Last Sign In At"]
48
48
  csv << csv_headers
49
49
 
50
50
  @users.find_each do |user|
@@ -56,7 +56,7 @@ module Decidim
56
56
  end
57
57
 
58
58
  csv << [user.id, suspicious, user.name, user.email, user.nickname, user.personal_url, user.about,
59
- user.organization.id, user.organization.name]
59
+ user.organization.id, user.organization.name, user.last_sign_in_at&.strftime(Decidim::Cdtb::STRFTIME_FORMAT)]
60
60
 
61
61
  progress_bar.increment
62
62
  end
@@ -8,7 +8,7 @@ require "decidim/cdtb/users/remover"
8
8
  require "decidim/cdtb/multitenants/org_by_host_like"
9
9
  require "decidim/cdtb/participatory_spaces/add_content_blocks"
10
10
  require "decidim/cdtb/participatory_spaces/move_images_to_content_block"
11
- require "decidim/cdtb/spam/user_spam_detector"
11
+ require "decidim/cdtb/spam/spam_users_detector"
12
12
  require "decidim/cdtb/storage/local_sharding"
13
13
  require "decidim/cdtb/storage/set_local_on_blobs"
14
14
  require "decidim/cdtb/upgrades/validate_migrations_task"
@@ -36,7 +36,10 @@ module Decidim
36
36
  organization: user.organization)
37
37
  comments = Decidim::Comments::Comment.where(decidim_author_id: user.id)
38
38
  manage_comments(comments, user, reporter_user) unless comments.empty?
39
- destroy_user(user) if block_user(user, reporter_user)
39
+ if block_user(user, reporter_user)
40
+ remove_action_logs_by(user)
41
+ destroy_user(user)
42
+ end
40
43
  progress_bar.increment
41
44
  end
42
45
  ensure
@@ -53,28 +56,18 @@ module Decidim
53
56
  def disable_email_moderations(users_emails)
54
57
  log_task_step("Disabling email on moderations...")
55
58
 
56
- users = Decidim::User.where(email: users_emails)
57
-
58
- users.find_each do |user|
59
- user.email_on_moderations = false
60
- user.save(validate: false)
61
- end
59
+ Decidim::User.where(email: users_emails).update_all(email_on_moderations: false)
62
60
  end
63
61
 
64
62
  def enable_email_moderations(users_emails)
65
63
  log_task_step("Enabling email on moderations...")
66
64
 
67
- users = Decidim::User.where(email: users_emails)
68
-
69
- users.find_each do |user|
70
- user.email_on_moderations = true
71
- user.save(validate: false)
72
- end
65
+ Decidim::User.where(email: users_emails).update_all(email_on_moderations: true)
73
66
  end
74
67
 
75
68
  def manage_comments(comments, user, reporter_user)
76
69
  comments.find_each do |comment|
77
- report_comment(comment, user, reporter_user)
70
+ report_comment(comment, user, reporter_user) unless comment.reported?
78
71
  hide_comment(comment, user, reporter_user) unless comment.hidden?
79
72
  end
80
73
  end
@@ -163,6 +156,12 @@ module Decidim
163
156
  current_participatory_space: comment.participatory_space
164
157
  }
165
158
  end
159
+
160
+ def remove_action_logs_by(user)
161
+ puts "Removing ActionLog from user #{user.id}..."
162
+
163
+ ActiveRecord::Base.connection.execute("DELETE FROM decidim_action_logs WHERE decidim_user_id = #{user.id}")
164
+ end
166
165
  end
167
166
  # rubocop:enable Metrics/ClassLength
168
167
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Decidim
4
4
  module Cdtb
5
- VERSION = "0.5.0"
5
+ VERSION = "0.5.2"
6
6
  DECIDIM_MIN_VERSION = ">= 0.28.0"
7
7
  end
8
8
  end
@@ -19,7 +19,7 @@ jobs:
19
19
  runs-on: ubuntu-latest
20
20
  services:
21
21
  postgres:
22
- image: postgres:11
22
+ image: postgres:16
23
23
  ports: ["5432:5432"]
24
24
  options: >-
25
25
  --health-cmd pg_isready
@@ -36,7 +36,7 @@ jobs:
36
36
  SECRET_KEY_BASE: "secret_key_base"
37
37
 
38
38
  steps:
39
- - uses: actions/checkout@v2.0.0
39
+ - uses: actions/checkout@v4
40
40
  with:
41
41
  fetch-depth: 1
42
42
  - uses: ruby/setup-ruby@master
@@ -44,7 +44,7 @@ jobs:
44
44
  ruby-version: ${{ env.RUBY_VERSION }}
45
45
  bundler-cache: true
46
46
  - name: Recover Ruby dependency cache
47
- uses: actions/cache@v1
47
+ uses: actions/cache@v4
48
48
  with:
49
49
  path: ./vendor/bundle
50
50
  key: ${{ runner.OS }}-app-rubydeps-${{ hashFiles('Gemfile.lock') }}
@@ -56,7 +56,7 @@ jobs:
56
56
  run: bundle config set --local path 'vendor/bundle'
57
57
 
58
58
  - name: Install Ruby deps
59
- uses: nick-invision/retry@v2
59
+ uses: nick-fields/retry@v3
60
60
  with:
61
61
  timeout_minutes: 10
62
62
  max_attempts: 3
data/lib/tasks/spam.rake CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  namespace :cdtb do
4
4
  namespace :spam do
5
- desc "Show a list with users suspected of spam"
5
+ desc "Show a list with users suspicious of being spammers"
6
6
  task :users, %i[org_id] => :environment do |_task, args|
7
7
  organization = args.org_id.present? ? Decidim::Organization.find(args.org_id) : nil
8
8
 
9
- detector = Decidim::Cdtb::Spam::UserSpamDetector.new(organization)
9
+ detector = Decidim::Cdtb::Spam::SpamUsersDetector.new(organization)
10
10
  detector.execute!
11
11
  end
12
12
  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.5.0
4
+ version: 0.5.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: 2025-04-28 00:00:00.000000000 Z
11
+ date: 2025-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: decidim
@@ -96,7 +96,7 @@ files:
96
96
  - lib/decidim/cdtb/participatory_spaces/add_content_blocks.rb
97
97
  - lib/decidim/cdtb/participatory_spaces/manages_content_blocks.rb
98
98
  - lib/decidim/cdtb/participatory_spaces/move_images_to_content_block.rb
99
- - lib/decidim/cdtb/spam/user_spam_detector.rb
99
+ - lib/decidim/cdtb/spam/spam_users_detector.rb
100
100
  - lib/decidim/cdtb/storage/local_sharding.rb
101
101
  - lib/decidim/cdtb/storage/set_local_on_blobs.rb
102
102
  - lib/decidim/cdtb/task.rb