2018-12-01 13:42:36 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2019-03-24 16:40:10 -04:00
|
|
|
require 'csv'
|
2018-12-01 13:42:36 -05:00
|
|
|
|
2019-09-30 19:24:18 -04:00
|
|
|
def csv_foreach(filename, &block)
|
|
|
|
CSV.foreach(
|
2019-10-01 18:13:01 -04:00
|
|
|
Rails.root.join('db', 'data', "#{filename}.csv"),
|
2019-09-30 19:24:18 -04:00
|
|
|
col_sep: '|',
|
|
|
|
&block
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
csv_foreach :federal_subjects \
|
|
|
|
do |(id, english_name, native_name, number, timezone, centre)|
|
2019-07-19 17:59:07 -04:00
|
|
|
id = Integer(id.strip)
|
2019-03-24 16:40:10 -04:00
|
|
|
english_name.strip!
|
2019-07-19 17:59:07 -04:00
|
|
|
native_name.strip!
|
2019-07-19 18:52:14 -04:00
|
|
|
number = Integer(number.strip.sub(/\A0*/, ''))
|
2019-07-19 22:40:56 -04:00
|
|
|
timezone.strip!
|
2019-07-22 05:14:14 -04:00
|
|
|
centre.strip!
|
2018-12-01 13:42:36 -05:00
|
|
|
|
2019-07-19 17:59:07 -04:00
|
|
|
FederalSubject.where(id: id).first_or_create! do |new_federal_subject|
|
|
|
|
new_federal_subject.english_name = english_name
|
2019-06-23 11:59:44 -04:00
|
|
|
new_federal_subject.native_name = native_name
|
2019-07-19 18:52:14 -04:00
|
|
|
new_federal_subject.number = number
|
2019-07-19 22:40:56 -04:00
|
|
|
new_federal_subject.timezone = timezone
|
2019-07-22 05:14:14 -04:00
|
|
|
new_federal_subject.centre = centre
|
2019-04-27 08:40:12 -04:00
|
|
|
end
|
2018-12-01 13:42:36 -05:00
|
|
|
end
|
2018-12-03 20:57:16 -05:00
|
|
|
|
2019-09-30 19:24:18 -04:00
|
|
|
csv_foreach :contact_networks \
|
|
|
|
do |(id, codename, name)|
|
2019-08-04 17:11:44 -04:00
|
|
|
id = Integer(id.strip)
|
2019-08-17 19:51:03 -04:00
|
|
|
codename.strip!
|
2019-08-17 20:00:37 -04:00
|
|
|
name.strip!
|
2019-08-04 17:11:44 -04:00
|
|
|
|
|
|
|
ContactNetwork.where(id: id).first_or_create! do |new_contact_network|
|
2019-08-17 19:51:03 -04:00
|
|
|
new_contact_network.codename = codename
|
2019-08-17 20:00:37 -04:00
|
|
|
new_contact_network.name = name
|
2019-08-04 17:11:44 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-09-30 19:24:18 -04:00
|
|
|
csv_foreach :org_unit_kinds \
|
|
|
|
do |(codename, parent, short_name, name)|
|
2019-09-30 19:12:04 -04:00
|
|
|
parent = parent.blank? ? nil : OrgUnitKind.find_by!(codename: parent.strip)
|
|
|
|
|
2019-09-30 18:37:59 -04:00
|
|
|
codename.strip!
|
|
|
|
short_name.strip!
|
|
|
|
name.strip!
|
|
|
|
|
|
|
|
next if OrgUnitKind.find_by codename: codename
|
|
|
|
|
|
|
|
OrgUnitKind.create!(
|
|
|
|
codename: codename,
|
|
|
|
short_name: short_name,
|
|
|
|
name: name,
|
2019-09-30 19:12:04 -04:00
|
|
|
parent_kind: parent,
|
2019-09-30 18:37:59 -04:00
|
|
|
)
|
|
|
|
end
|
|
|
|
|
2019-09-30 19:24:18 -04:00
|
|
|
csv_foreach :relation_statuses \
|
|
|
|
do |(org_unit_kind, codename, name)|
|
2019-09-30 19:12:04 -04:00
|
|
|
org_unit_kind =
|
|
|
|
if org_unit_kind.blank?
|
|
|
|
nil
|
|
|
|
else
|
|
|
|
OrgUnitKind.find_by!(codename: org_unit_kind.strip)
|
|
|
|
end
|
|
|
|
|
2019-09-21 10:39:28 -04:00
|
|
|
codename.strip!
|
|
|
|
name.strip!
|
|
|
|
|
|
|
|
RelationStatus.where(codename: codename).first_or_create! \
|
|
|
|
do |new_relation_status|
|
2019-10-02 00:07:51 -04:00
|
|
|
new_relation_status.org_unit_kind = org_unit_kind
|
2019-09-21 10:39:28 -04:00
|
|
|
new_relation_status.name = name
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-12-08 22:56:06 -05:00
|
|
|
Rails.application.settings(:superuser).tap do |config|
|
2019-08-11 15:27:06 -04:00
|
|
|
user = User.where(email: config[:email]).first_or_create! do |new_user|
|
2018-12-08 22:07:39 -05:00
|
|
|
new_user.password = config[:password]
|
2018-12-08 21:14:33 -05:00
|
|
|
new_user.confirmed_at = Time.zone.now
|
2019-02-01 18:09:59 -05:00
|
|
|
new_user.account = Account.create!(
|
2019-04-28 09:34:46 -04:00
|
|
|
nickname: config[:nickname],
|
2019-02-01 18:09:59 -05:00
|
|
|
public_name: config[:public_name],
|
2019-04-28 09:34:46 -04:00
|
|
|
biography: config[:biography],
|
2019-09-04 18:05:00 -04:00
|
|
|
contact_list: ContactList.new,
|
2019-02-01 18:09:59 -05:00
|
|
|
)
|
2019-08-11 15:27:06 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
user.account.update! superuser: true
|
2018-12-08 21:14:33 -05:00
|
|
|
end
|