decidim-cleaner 2.1.1 → 3.0.0

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: a54a64e4729007defe0803975b74c3e2d5d6fbcc66d30fc33c4534f79a496205
4
- data.tar.gz: b3c8baca2de78e8536509be9d5ea87a96521c8b9376da7f1dd6cef97f211c240
3
+ metadata.gz: 7b548444c799a42e64b8c0e6e382f98d51738eb48ba9b7d29bc25f637b65b0ad
4
+ data.tar.gz: 222adf9a1210f66f8521273aa5351b46fac2ca57393883c5eb817c30ce7130b4
5
5
  SHA512:
6
- metadata.gz: 9c69c28fcc394795f6fbef9fd340cc35e4068e25983ba321d262416f8406c1b1b0769fc469fd9ab404203f963b10c8da8c8367f266c535fda771087575a2cddd
7
- data.tar.gz: 2d7e6f95b56b232137ae8586d4562e59689f54b301360e3a899c5c25e3de237357c5562b442b96f09c018120d52ec47a717ec36b12aa61f51f713f78da1c3c3f
6
+ metadata.gz: 8118d7e5d0b4334fc7bbf82ca9ffe74283b611c5f47cdeccc543a277dad15d1b4ab21206e440f91cf61aa8246d2faea020bcc7cbebd62af58d045fe8464255d4
7
+ data.tar.gz: 607dd023747be3edfcb94cdc3888a6aec98d7b3ca84d3523f25fbceee00b1e6072ff12945f278a0019be232062aa36387773e271e25d2ef7d4953be33d27f370
data/README.md CHANGED
@@ -22,19 +22,6 @@ bundle exec rails decidim_cleaner:install:migrations
22
22
  bundle exec rails db:migrate
23
23
  ```
24
24
 
25
- You can then modify the default values of the cleaner in your .ENV with the following variables:
26
-
27
- ```bash
28
- # Delay until a user is considered inactive and receive a warning email (in days)
29
- DECIDIM_CLEANER_INACTIVE_USERS_MAIL=
30
-
31
- # Delay until a user is deleted after receiving an email (in days)
32
- DECIDIM_CLEANER_DELETE_INACTIVE_USERS=
33
-
34
- # Delay until an admin log is deleted (in days)
35
- DECIDIM_CLEANER_DELETE_ADMIN_LOGS=
36
- ```
37
-
38
25
  ### Sidekiq Scheduler
39
26
  [Further documentation](https://github.com/sidekiq-scheduler/sidekiq-scheduler)
40
27
 
@@ -66,7 +53,7 @@ You can then add to your 'config/sidekiq.yml' file:
66
53
  ## Available tasks
67
54
 
68
55
  - [ ] **Delete inactive users**
69
- - Cron task that checks for user accounts where `current_sign_in_at` is superior to environment variable `CLEANER_USER_INACTIVITY_LIMIT`. If true, deletes inactive user from the database.
56
+ - Cron task that checks for user accounts where `last_sign_in_at` is superior to environment variable `CLEANER_USER_INACTIVITY_LIMIT`. If true, deletes inactive user from the database.
70
57
 
71
58
  - [ ] **Delete old admin logs**
72
59
  - Cron task that checks for admin logs where `created_at` is anterior to the time you configured in the back office. If true, deletes old admin logs from the database.
@@ -5,7 +5,7 @@ module Decidim
5
5
  module Admin
6
6
  # A command with all the business logic for updating the current
7
7
  # organization cleaner.
8
- class UpdateOrganizationCleaner < Rectify::Command
8
+ class UpdateOrganizationCleaner < Decidim::Command
9
9
  # Public: Initializes the command.
10
10
  #
11
11
  # organization - The Organization that will be updated.
@@ -10,16 +10,10 @@ module Decidim
10
10
  next unless organization.delete_admin_logs?
11
11
 
12
12
  Decidim::ActionLog.where(organization: organization)
13
- .where("created_at < ?", delete_admin_logs_before_date(organization))
13
+ .where("created_at < ?", Time.zone.now - (organization.delete_admin_logs_after || 365).days)
14
14
  .delete_all
15
15
  end
16
16
  end
17
-
18
- private
19
-
20
- def delete_admin_logs_before_date(organization)
21
- Time.zone.now - (organization.delete_admin_logs_after || Decidim::Cleaner.delete_admin_logs_after).days
22
- end
23
17
  end
24
18
  end
25
19
  end
@@ -12,32 +12,25 @@ module Decidim
12
12
  send_warning(Decidim::User.where(organization: organization)
13
13
  .not_deleted
14
14
  .where.not(email: "")
15
- .where("current_sign_in_at < ?", email_inactive_before_date(organization)))
15
+ .where("last_sign_in_at < ?", Time.zone.now - (organization.delete_inactive_users_email_after || 365).days)
16
+ .where("last_sign_in_at > ?", Time.zone.now - (organization.delete_inactive_users_email_after || 365).days - 1.day))
16
17
 
17
18
  delete_user_and_send_email(Decidim::User.where(organization: organization)
18
19
  .not_deleted
19
20
  .where.not(email: "")
20
- .where("warning_date < ?", delete_inactive_before_date(organization)))
21
+ .where("last_sign_in_at < ?", Time.zone.now - (organization.delete_inactive_users_after || 390).days))
21
22
  end
22
23
  end
23
24
 
24
25
  def send_warning(users)
25
26
  users.find_each do |user|
26
- next if user.warning_date.present?
27
-
28
- user.update!(warning_date: Time.zone.now) if InactiveUsersMailer.warning_inactive(user).deliver_now
27
+ InactiveUsersMailer.warning_inactive(user).deliver_now
29
28
  Rails.logger.info "Inactive warning sent to #{user.email}"
30
29
  end
31
30
  end
32
31
 
33
32
  def delete_user_and_send_email(users)
34
33
  users.find_each do |user|
35
- if user.current_sign_in_at > user.warning_date
36
- user.update!(warning_date: nil)
37
- Rails.logger.info "User with id #{user.id} has logged in again, warning date reset"
38
- next
39
- end
40
-
41
34
  InactiveUsersMailer.warning_deletion(user).deliver_now
42
35
  Rails.logger.info "Deletion warning sent to #{user.email}"
43
36
 
@@ -45,16 +38,6 @@ module Decidim
45
38
  Rails.logger.info "User with id #{user.id} destroyed"
46
39
  end
47
40
  end
48
-
49
- private
50
-
51
- def email_inactive_before_date(organization)
52
- Time.zone.now - (organization.delete_inactive_users_email_after || Decidim::Cleaner.delete_inactive_users_email_after).days
53
- end
54
-
55
- def delete_inactive_before_date(organization)
56
- Time.zone.now - (organization.delete_inactive_users_after || Decidim::Cleaner.delete_inactive_users_after).days
57
- end
58
41
  end
59
42
  end
60
43
  end
@@ -5,7 +5,6 @@ module Decidim
5
5
  # A custom mailer for Decidim so we can notify users
6
6
  # when their account was blocked
7
7
  class InactiveUsersMailer < Decidim::ApplicationMailer
8
- helper Decidim::Cleaner::DelaysHelper
9
8
  def warning_inactive(user)
10
9
  with_user(user) do
11
10
  @user = user
@@ -1,6 +1,6 @@
1
1
  <p class="email-greeting"><%= t ".hello" %></p>
2
2
 
3
- <p class="email-instructions"><%= t(".body_1", organization_name: h(@organization.name), organization_url: decidim.root_url(host: @organization.host), days: email_inactive_after(@organization) + delete_inactive_after(@organization)).html_safe %></p>
3
+ <p class="email-instructions"><%= t(".body_1", organization_name: h(@organization.name), organization_url: decidim.root_url(host: @organization.host), days: @organization.delete_inactive_users_after||390).html_safe %></p>
4
4
 
5
5
  <p class="email-instructions"><%= t ".body_2" %></p>
6
6
 
@@ -1,7 +1,7 @@
1
1
  <p class="email-greeting"><%= t ".hello" %></p>
2
2
 
3
- <p class="email-instructions"><%= t ".body_1", organization_name: h(@organization.name), days: email_inactive_after(@organization) %></p>
3
+ <p class="email-instructions"><%= t ".body_1", organization_name: h(@organization.name), days: @organization.delete_inactive_users_email_after %></p>
4
4
 
5
- <p class="email-instructions"><%= t(".body_2", remaining_days: delete_inactive_after(@organization), organization_url: decidim.root_url(host: @organization.host)).html_safe %></p>
5
+ <p class="email-instructions"><%= t(".body_2", remaining_days: (@organization.delete_inactive_users_after||390) - (@organization.delete_inactive_users_email_after||365), organization_url: decidim.root_url(host: @organization.host)).html_safe %></p>
6
6
 
7
7
  <p class="email-closing"><%= t(".greetings", organization_name: h(@organization.name), organization_url: decidim.root_url(host: @organization.host)).html_safe %></p>
@@ -6,8 +6,7 @@ en:
6
6
  delete_admin_logs: Enable admin logs deletion
7
7
  delete_admin_logs_after: Delete admin logs after (days, default 365)
8
8
  delete_inactive_users: Enable inactive users deletion
9
- delete_inactive_users_after: Delete inactive users x days after the mail(days,
10
- default 30)
9
+ delete_inactive_users_after: Delete inactive users after (days, default 390)
11
10
  delete_inactive_users_email_after: Send email to inactive users before deletion
12
11
  (days, default 365)
13
12
  decidim:
@@ -7,8 +7,8 @@ fr:
7
7
  delete_admin_logs_after: Supprimer l'historique d'administration après (jours,
8
8
  par défaut 365)
9
9
  delete_inactive_users: Activer la suppression des utilisateurs inactifs
10
- delete_inactive_users_after: Supprimer les utilisateurs inactifs au bout de
11
- x jours après le courriel (jours, par défaut 30)
10
+ delete_inactive_users_after: Supprimer les utilisateurs inactifs après (jours,
11
+ par défaut 390)
12
12
  delete_inactive_users_email_after: Envoyer un courriel aux utilisateurs inactifs
13
13
  avant la suppression (jours, par défaut 365)
14
14
  decidim:
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class AddDeleteAdminLogsToOrganization < ActiveRecord::Migration[5.2]
3
+ class AddDeleteAdminLogsToOrganization < ActiveRecord::Migration[6.1]
4
4
  def change
5
5
  add_column :decidim_organizations, :delete_admin_logs, :boolean, default: false, null: false
6
6
  add_column :decidim_organizations, :delete_admin_logs_after, :integer
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class AddDeleteInactiveUsersToOrganization < ActiveRecord::Migration[5.2]
3
+ class AddDeleteInactiveUsersToOrganization < ActiveRecord::Migration[6.1]
4
4
  def change
5
5
  add_column :decidim_organizations, :delete_inactive_users, :boolean, default: false, null: false
6
6
  add_column :decidim_organizations, :delete_inactive_users_email_after, :integer
@@ -5,11 +5,11 @@ module Decidim
5
5
  # This holds the decidim-meetings version.
6
6
  module Cleaner
7
7
  def self.version
8
- "2.1.1"
8
+ "3.0.0"
9
9
  end
10
10
 
11
11
  def self.compatible_decidim_version
12
- "0.26.0"
12
+ "0.27.0"
13
13
  end
14
14
  end
15
15
  end
@@ -7,18 +7,5 @@ require "decidim/cleaner/admin_engine"
7
7
  module Decidim
8
8
  # This namespace holds the logic of the `Cleaner` module.
9
9
  module Cleaner
10
- include ActiveSupport::Configurable
11
-
12
- config_accessor :delete_admin_logs_after do
13
- ENV.fetch("DECIDIM_CLEANER_DELETE_ADMIN_LOGS", "365").to_i
14
- end
15
-
16
- config_accessor :delete_inactive_users_after do
17
- ENV.fetch("DECIDIM_CLEANER_DELETE_INACTIVE_USERS", "30").to_i
18
- end
19
-
20
- config_accessor :delete_inactive_users_email_after do
21
- ENV.fetch("DECIDIM_CLEANER_INACTIVE_USERS_MAIL", "365").to_i
22
- end
23
10
  end
24
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-cleaner
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Quentinchampenois
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-30 00:00:00.000000000 Z
11
+ date: 2023-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: decidim-core
@@ -16,14 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.26.0
19
+ version: 0.27.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.26.0
26
+ version: 0.27.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: decidim-dev
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.27.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.27.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop-faker
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  description: Clean outdated data in Decidim's database.
28
56
  email:
29
57
  - 26109239+Quentinchampenois@users.noreply.github.com
@@ -38,7 +66,6 @@ files:
38
66
  - app/controllers/decidim/cleaner/admin/application_controller.rb
39
67
  - app/controllers/decidim/cleaner/admin/organization_cleaner_controller.rb
40
68
  - app/forms/decidim/cleaner/admin/organization_cleaner_form.rb
41
- - app/helpers/decidim/cleaner/delays_helper.rb
42
69
  - app/jobs/decidim/cleaner/clean_admin_logs_job.rb
43
70
  - app/jobs/decidim/cleaner/clean_inactive_users_job.rb
44
71
  - app/mailers/decidim/cleaner/inactive_users_mailer.rb
@@ -53,7 +80,6 @@ files:
53
80
  - config/routes.rb
54
81
  - db/migrate/20230106105014_add_delete_admin_logs_to_organization.rb
55
82
  - db/migrate/20230110150032_add_delete_inactive_users_to_organization.rb
56
- - db/migrate/20230328094652_add_warning_date_to_users.rb
57
83
  - lib/decidim/cleaner.rb
58
84
  - lib/decidim/cleaner/admin.rb
59
85
  - lib/decidim/cleaner/admin_engine.rb
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Cleaner
5
- module DelaysHelper
6
- def email_inactive_after(organization)
7
- organization.delete_inactive_users_email_after || Decidim::Cleaner.delete_inactive_users_email_after
8
- end
9
-
10
- def delete_inactive_after(organization)
11
- organization.delete_inactive_users_after || Decidim::Cleaner.delete_inactive_users_after
12
- end
13
- end
14
- end
15
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class AddWarningDateToUsers < ActiveRecord::Migration[5.2]
4
- def change
5
- add_column :decidim_users, :warning_date, :datetime
6
- end
7
- end