Fixes: #3788 - lib/fill_db.rb fails to work in production environments.

This commit is contained in:
Martin Gruner 2021-10-05 14:00:33 +02:00
parent d288b48b0a
commit f18c0c9571

View file

@ -1,7 +1,5 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/ # Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
require 'faker'
# rubocop:disable Rails/Output # rubocop:disable Rails/Output
module FillDb module FillDb
@ -55,7 +53,7 @@ or if you only want to create 100 tickets
else else
(1..organizations).each do (1..organizations).each do
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
organization = Organization.create!(name: "FillOrganization::#{Faker::Number.number(digits: 6)}", active: true) organization = Organization.create!(name: "FillOrganization::#{counter}", active: true)
organization_pool.push organization organization_pool.push organization
end end
end end
@ -72,7 +70,7 @@ or if you only want to create 100 tickets
(1..agents).each do (1..agents).each do
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
suffix = Faker::Number.number(digits: 5).to_s suffix = counter.to_s
user = User.create_or_update( user = User.create_or_update(
login: "filldb-agent-#{suffix}", login: "filldb-agent-#{suffix}",
firstname: "agent #{suffix}", firstname: "agent #{suffix}",
@ -102,7 +100,7 @@ or if you only want to create 100 tickets
(1..customers).each do (1..customers).each do
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
suffix = Faker::Number.number(digits: 5).to_s suffix = counter.to_s
organization = nil organization = nil
if organization_pool.present? && true_or_false.sample if organization_pool.present? && true_or_false.sample
organization = organization_pool.sample organization = organization_pool.sample
@ -132,7 +130,7 @@ or if you only want to create 100 tickets
else else
(1..groups).each do (1..groups).each do
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
group = Group.create!(name: "FillGroup::#{Faker::Number.number(digits: 6)}", active: true) group = Group.create!(name: "FillGroup::#{counter}", active: true)
group_pool.push group group_pool.push group
Role.where(name: 'Agent').first.users.where(active: true).each do |user| Role.where(name: 'Agent').first.users.where(active: true).each do |user|
user_groups = user.groups user_groups = user.groups
@ -150,7 +148,7 @@ or if you only want to create 100 tickets
(1..overviews).each do (1..overviews).each do
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
Overview.create!( Overview.create!(
name: "Filloverview::#{Faker::Number.number(digits: 6)}", name: "Filloverview::#{counter}",
role_ids: [Role.find_by(name: 'Agent').id], role_ids: [Role.find_by(name: 'Agent').id],
condition: { condition: {
'ticket.state_id' => { 'ticket.state_id' => {
@ -185,7 +183,7 @@ or if you only want to create 100 tickets
customer = customer_pool.sample customer = customer_pool.sample
agent = agent_pool.sample agent = agent_pool.sample
ticket = Ticket.create!( ticket = Ticket.create!(
title: "some title äöüß#{Faker::Number.number(digits: 6)}", title: "some title äöüß#{counter}",
group: group_pool.sample, group: group_pool.sample,
customer: customer, customer: customer,
owner: agent, owner: agent,
@ -200,8 +198,8 @@ or if you only want to create 100 tickets
ticket_id: ticket.id, ticket_id: ticket.id,
from: customer.email, from: customer.email,
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
subject: "some subject#{Faker::Number.number(digits: 6)}", subject: "some subject#{counter}",
message_id: "some@id-#{Faker::Number.number(digits: 6)}", message_id: "some@id-#{counter}",
body: 'some message ...', body: 'some message ...',
internal: false, internal: false,
sender: Ticket::Article::Sender.where(name: 'Customer').first, sender: Ticket::Article::Sender.where(name: 'Customer').first,
@ -214,5 +212,10 @@ or if you only want to create 100 tickets
end end
end end
end end
def self.counter
@counter ||= SecureRandom.random_number(1_000_000)
@counter += 1
end
end end
# rubocop:enable Rails/Output # rubocop:enable Rails/Output