Skip to content

Commit

Permalink
Change actions/upload-artifact version and add rake task
Browse files Browse the repository at this point in the history
  • Loading branch information
luciegrau committed Feb 6, 2025
1 parent 98da850 commit 5e6d225
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 5 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/ci_cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,12 @@ jobs:
name: RSpec
- run: ./.github/upload_coverage.sh decidim-app $GITHUB_EVENT_PATH
name: Upload coverage
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: always()
with:
name: screenshots
path: ./spec/tmp/screenshots
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: always()
with:
name: assets-manifest-${{ matrix.slice }}
Expand Down Expand Up @@ -175,12 +175,12 @@ jobs:
name: RSpec
- run: ./.github/upload_coverage.sh decidim-app $GITHUB_EVENT_PATH
name: Upload coverage
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: always()
with:
name: screenshots
path: ./spec/tmp/screenshots
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: always()
with:
name: assets-manifest-${{ matrix.slice }}
Expand Down
80 changes: 80 additions & 0 deletions app/jobs/archive_users_phone_job.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# frozen_string_literal: true

class ArchiveUsersPhoneJob < ApplicationJob
include Decidim::Logging

def perform
metrics = { total: 0, quick_auth_users: 0, decidim_users: 0 }
log! "Start clearing phone numbers from accounts..."

users_to_archive.find_in_batches(batch_size: 1000) do |users|
users.each do |user|
metrics[:total] += 1

if user.email.include?("quick_auth")
metrics[:quick_auth_users] += 1
soft_delete_user(user, delete_reason)
else
metrics[:decidim_users] += 1
clear_account_phone_number(user)
end
end
end

log! "Total distinct numbers to clear : #{metrics[:total]}"
log! "Half signup users archived : #{metrics[:quick_auth_users]}"
log! "Decidim users account updated : #{metrics[:decidim_users]}"
log! "Terminated !"
end

private

def users_to_archive
Decidim::User.where.not(phone_number: [nil, ""]).where.not(phone_country: [nil, ""])
end

def soft_delete_user(user, reason)
email = user.email
phone = user.phone_number
user.extended_data = user.extended_data.merge({
half_signup: {
email: email,
phone_number: phone,
phone_country: user.phone_country
}
})

user.phone_number = nil
user.phone_country = nil

form = Decidim::DeleteAccountForm.from_params(delete_reason: reason)
Decidim::DestroyAccount.call(user, form) do
on(:invalid) do
log!("User (ID/#{user.id} email/#{email} phone/#{obfuscate_phone_number(phone)}) cannot be deleted: #{form.errors.full_messages}")
end
end
end

def clear_account_phone_number(user)
Decidim::User.transaction do
user.extended_data = user.extended_data.merge({
half_signup: {
phone_number: user.phone_number,
phone_country: user.phone_country
}
})

user.phone_number = nil
user.phone_country = nil
user.save(validate: false)
end
end

def current_date
Date.current.strftime "%Y-%m-%d"
end

def delete_reason
"Archived account - #{current_date}"
end
end
2 changes: 1 addition & 1 deletion config/initializers/half_signup.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@

config.skip_csrf = ENV.fetch("HALF_SIGNUP_SKIP_CSRF", "false") == "true"
config.show_sms_verification_code = ENV.fetch("HALF_SIGNUP_SHOW_SMS_VERIFICATION_CODE", "false") == "true"
end
end
Empty file.
7 changes: 7 additions & 0 deletions lib/tasks/db.rake
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,12 @@ namespace :decidim do
Decidim::SurveysService.new(verbose: true).clear
end
end

namespace :users do
desc "Clean users phone numbers"
task phone: :environment do
ArchiveUsersPhoneJob.perform_now
end
end
end
end

0 comments on commit 5e6d225

Please sign in to comment.