Class: Decidim::Cdtb::Fixes::NicknameFixer

Inherits:
Task
  • Object
show all
Defined in:
lib/decidim/cdtb/fixes/nickname_fixer.rb

Overview

Fixes invalid Decidim::User#nickname

Instance Attribute Summary

Attributes inherited from Task

#num_applied, #title

Instance Method Summary collapse

Methods inherited from Task

#execute!, #finish, #init

Methods included from TasksUtils

#do_log_error, #do_log_info, #log_task_end, #log_task_failure, #log_task_info, #log_task_step, #log_task_title, #logger

Constructor Details

#initializeNicknameFixer

Returns a new instance of NicknameFixer.



9
10
11
12
13
14
15
# File 'lib/decidim/cdtb/fixes/nickname_fixer.rb', line 9

def initialize
  regex= Decidim::UserBaseEntity::REGEXP_NICKNAME.source.gsub("\\z", "\\Z")
  @query= Decidim::User.where.not("nickname ~ ?", regex)

  progress_bar= { title: "Decidim::User" }
  super("FIX NICKNAMES", progress_bar:)
end

Instance Method Details

#do_execution(context) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/decidim/cdtb/fixes/nickname_fixer.rb', line 26

def do_execution(context)
  progress_bar= context[:progress_bar]

  @query.find_each do |user|
    Decidim::User.validators_on(:nickname).each do |validator|
      validator.validate_each(user, :nickname, user.nickname)
    end

    if user.errors[:nickname].any?
      ::Cdtb::FixNicknameJob.perform_later(user.id)
      @num_applied+= 1
    end
    progress_bar.increment
  end
end

#end_execution(_ctx) ⇒ Object



42
43
44
# File 'lib/decidim/cdtb/fixes/nickname_fixer.rb', line 42

def end_execution(_ctx)
  log_task_step("#{@num_applied} users nicknamized")
end

#prepare_execution(_ctx) ⇒ Object



17
18
19
20
# File 'lib/decidim/cdtb/fixes/nickname_fixer.rb', line 17

def prepare_execution(_ctx)
  @num_users= @query.count
  log_task_info("Checking #{@num_users} users...")
end

#total_itemsObject



22
23
24
# File 'lib/decidim/cdtb/fixes/nickname_fixer.rb', line 22

def total_items
  @num_users
end