workarea-magento_migrator 1.0.0.pre → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35178de5849c26dea0d6417ee68268d870a515aac50d54d5b0c8614fb1093d56
4
- data.tar.gz: 7ba0ed652291478670c63fb40cdadd180dcf000e58b9f60640a5ddf41ef3b103
3
+ metadata.gz: b79282dc21e0e6f7d61b271ed7ea5a75c956fe25813f906083c1bb369ed0e5cc
4
+ data.tar.gz: 40744d2261823e59cb02969f965e344575a11b0fe4bf60ae0f9937b3e29337fa
5
5
  SHA512:
6
- metadata.gz: b0dcf128637815384efc61ae24d3115455a6dbace62dd8322998fc64898427d08f322ddadb4cee847239b37b51ad04eab0a422e78b8b2e0ff332be0aea54e7da
7
- data.tar.gz: 367a5aaa543ee8d37a1e33ce236f9cb3e5461f461bc7777c4644bd30b29069ec4992ea6398a3c84af541a7f1fe47ebae23c87b679d808cb390ec2b064e29cd31
6
+ metadata.gz: 1c9cfd8516502aa6d4394c05891336f87fb6e3d4879ca405af6736ff16089f7e0b821f4ebeb6a18ec476e3983e5f0e48184951e97b9592bdfc4cb39f32b2c803
7
+ data.tar.gz: 1280e0d35fb409d7304942692e4735fc16760aae3017f6ec4b665abdb3bbee8dbea6d36e27760d95b768aecf27e7fbef9b6dc2a8958a13ca65b9d5d1c7694532
data/.gitignore CHANGED
@@ -20,4 +20,5 @@ yarn.lock
20
20
  yarn-error.log
21
21
  package-lock.json
22
22
  tmp/Product Catalog From Magento 1_14_20.csv
23
- tmp/product.csv
23
+ tmp/product.csv
24
+ *.gem
data/Gemfile CHANGED
@@ -11,6 +11,9 @@ gemspec
11
11
  # Git. Remember to move these dependencies to your gemspec before releasing
12
12
  # your gem to rubygems.org.
13
13
 
14
- # To use a debugger
15
- gem 'byebug', group: [:development, :test]
14
+ group :development, :test do
15
+ gem 'mysql2', '~> 0.5.3'
16
+ # To use a debugger
17
+ gem 'byebug',
18
+ end
16
19
 
@@ -1,6 +1,7 @@
1
1
  columns:
2
2
  eav:
3
3
  - description
4
+ - bottom_content
4
5
  - meta_description
5
6
  - meta_keywords
6
7
  - category_name_seo_long
@@ -28,7 +29,6 @@ columns:
28
29
  - position
29
30
  - level
30
31
  - children_count
31
-
32
32
  taxons:
33
33
  - name
34
34
  - position
@@ -51,5 +51,3 @@ columns:
51
51
  - url_prefix
52
52
  - is_active
53
53
  - is_anchor
54
-
55
-
@@ -0,0 +1,5 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Workarea.configure do |config|
4
+ # config.magento_db_config = YAML.load_file("#{MagentoMigrator::Engine.root}/config/magento_db_config.yml")[Rails.env]
5
+ end
@@ -0,0 +1,23 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rake secret` to generate a secure secret key.
9
+
10
+ # Make sure the secrets in this file are kept private
11
+ # if you're sharing your code publicly.
12
+
13
+ development:
14
+ adapter: 'mysql2'
15
+ host: '127.0.0.1'
16
+ port: '3306'
17
+ username: 'root'
18
+ password: 'okkkkkkkk'
19
+ database: 'murals-pd'
20
+ batch_size: 10000
21
+ encoding: 'utf8'
22
+ pool: 5
23
+ timeout: 5000
@@ -9,8 +9,12 @@ namespace :magento_migrator do
9
9
  puts Workarea::MagentoMigrator::CatalogCategory.select_query
10
10
  end
11
11
 
12
- task :restore_from_json => :environment do
13
- Workarea::MagentoMigrator::CatalogCategory.restore_from_json
12
+ task :content_pages_query => :environment do
13
+ puts Workarea::MagentoMigrator::CatalogCategory.select_content_pages_query
14
+ end
15
+
16
+ task :categories_content => :environment do
17
+ puts Workarea::MagentoMigrator::CatalogCategory.categories_content
14
18
  end
15
19
 
16
20
  task :import_catagories => :environment do
@@ -11,224 +11,67 @@ module Workarea
11
11
  @@table_name ||= 'catalog_category'
12
12
  end
13
13
 
14
- def select_taxons_query
14
+ def select_content_pages_query
15
15
  select_query = "SELECT #{select_columns} FROM #{table_name}_entity e #{join_clause} "
16
16
  select_query += "\nwhere e.entity_id not in (#{ids_to_include}) and e.parent_id>1 and e.level >1"
17
17
  end
18
18
 
19
19
  def catalog_category_menu
20
- client.query(select_taxons_query).to_a
21
- end
22
-
23
- def build_taxons
24
- cc_menu = {}
25
- (2..6).to_a.each do |level|
26
- statement = client.prepare(MENU_QUERY)
27
- res = statement.execute(level, level-1)
28
- res.to_a.map{|ccm| ccm['name']}
29
- end
30
-
31
- cc_menu
20
+ client.query(select_content_pages_query).to_a
32
21
  end
33
22
 
34
23
  def import_content_pages
35
- File.open("#{MagentoMigrator::Engine.root}/data/content_pages.json", "w"){ |f|
24
+ File.open("#{Rails.root.to_s}/data/content_pages.json", "w"){ |f|
36
25
  f.write(JSON.pretty_generate(catalog_category_menu))
37
26
  }
38
27
  end
39
28
 
40
- def import_taxons(taxons)
41
- File.open("#{MagentoMigrator::Engine.root}/data/taxons.json", "w"){ |f|
42
- f.write(JSON.pretty_generate(taxons))
29
+ def import_catagories
30
+ File.open("#{Rails.root.to_s}/data/categories.json", "w"){ |f|
31
+ f.write(JSON.pretty_generate(categories.to_a))
32
+ }
33
+ File.open("#{Rails.root.to_s}/data/soft_categories.json", "w"){ |f|
34
+ f.write(JSON.pretty_generate(soft_categories.to_a))
43
35
  }
44
36
  end
45
37
 
46
- def restore_from_json
47
- taxon_data_file = File.open("#{MagentoMigrator::Engine.root}/data/content_pages.json").read
48
- taxon_data = JSON.parse(taxon_data_file)
49
-
50
- category_data_file = File.open("#{MagentoMigrator::Engine.root}/data/categories.json").read
51
- category_data = JSON.parse(category_data_file)
52
- taxons = (taxon_data + category_data).select{|t| t['include_in_menu'] == 1 }
53
-
54
- menus = get_taxons_structure(taxons)
55
- import_taxons(menus)
56
-
57
- delete_all
58
- create_categories(category_data)
59
- create_content_pages(taxons)
60
- create_navigation_taxons(menus)
61
- end
62
-
63
- def delete_all
64
- Workarea::Navigation::Taxon.delete_all
65
- Workarea::Navigation::Menu.delete_all
66
- Workarea::Catalog::Category.delete_all
67
- Workarea::Content::Page.delete_all
68
- end
69
-
70
- def create_navigation_taxons(menu)
71
- menu.each do |top_level, sub_menu|
72
- page = Workarea::Content::Page.find_by(name: top_level)
73
-
74
- begin
75
- puts "creating taxon and menu for #{top_level} content::page"
76
- taxon = Workarea::Navigation::Taxon.root.children.create!(navigable: page)
77
- menu = Workarea::Navigation::Menu.create!(taxon: taxon)
78
-
79
- puts "creating content and content block for menu: #{top_level}"
80
- content = Workarea::Content.for(menu)
81
- content.blocks.create!(type: 'taxonomy', data: { start: taxon.id, show_starting_taxon: false } )
82
-
83
- sub_menus = sub_menu.keys
84
- next if sub_menus.blank?
85
- puts 'Create submenu for :'
86
- puts sub_menus.inspect
87
-
88
- categories = Workarea::Catalog::Category.any_in(name: sub_menus)
89
- content_pages = Workarea::Content::Page.any_in(name: sub_menus)
90
- puts "Categories: #{categories.map(&:name).inspect}"
91
- puts "content_pages: #{categories.map(&:name).inspect}"
92
-
93
- next if categories.blank? && content_pages.blank?
94
-
95
- categories.each do |category|
96
- taxon.children.create!(navigable: category)
97
- end
98
-
99
- content_pages.each do |content_page|
100
- begin
101
- taxon.children.create!(navigable: content_page)
102
- rescue Exception => e
103
- puts e.message
104
- puts content_page.inspect
105
- puts taxon.inspect
106
- end
107
- end
108
- rescue => e
109
- puts e.message
110
- puts "Error creating taxon for main: #{top_level}"
111
- end
38
+ def categories_content
39
+ {home_categories: 9, business_categories: 10, shop_murals_categories: 8}.each do |category_name, id|
40
+ categories = client.query(content_categories_query(id)).to_a
41
+ categories_content = categories.map { |cat|
42
+ {
43
+ name: cat['name'],
44
+ slug: cat['url_key'],
45
+ h1_tag: cat['h1_tag'],
46
+ bottom_content: (cat['bottom_content'] || ''),
47
+ description: (cat['description'] || '')
48
+ }
49
+ }
50
+ File.open("#{Rails.root.to_s}/data/#{category_name}.json", "w"){ |f|
51
+ f.write(JSON.pretty_generate(categories_content))
52
+ }
112
53
  end
113
54
  end
114
55
 
115
- # create content blocks for category pages
116
- def create_content_pages(taxons)
117
- taxons.each do |taxon|
118
- page = Workarea::Content::Page.where(name: taxon['name']).first
119
- if page.blank?
120
- page = Workarea::Content::Page.create!(page_attrs(taxon))
121
- end
122
- content = Workarea::Content.for(page)
123
-
124
- next if content.blocks.presence
125
-
126
- sub_taxons = taxons.select{|t| t['parent_id'] == taxon['entity_id']}
127
- next if sub_taxons.blank?
128
-
129
- begin
130
- sub_taxons.each do |sub_taxon|
131
- category = Workarea::Catalog::Category.where(name: sub_taxon['name']).first
132
- if category
133
- content.blocks.build(type: :category_summary, data: {category: category.id} )
134
- else
135
- Workarea::Content::Page.create!(page_attrs(sub_taxon))
136
- end
137
- end
138
- rescue Exception => e
139
- puts '*' * 100
140
- puts e.message
141
- end
142
-
143
- content.save!
144
- end
56
+ def content_categories_query(parent_id)
57
+ "SELECT #{select_columns} FROM #{table_name}_entity e #{join_clause} where e.parent_id=#{parent_id} and v19.value=1 order by e.position asc"
145
58
  end
146
59
 
147
- def create_categories(category_data)
148
- Sidekiq::Callbacks.disable do
149
- category_data.each do |category_attr|
150
- next if Workarea::Catalog::Category.where(name: category_attr['name']).first.present?
151
60
 
152
- Workarea::Catalog::Category.create!(
153
- name: category_attr['name'],
154
- product_rules: [],
155
- default_sort: Search::CategoryBrowse.available_sorts.sample
156
- )
157
- end
158
- end
61
+ def categories
62
+ client.query(categories_query).to_a
159
63
  end
160
64
 
161
- def page_attrs(taxon)
162
- {name: taxon['name'], display_h1: taxon['h1_tag'], tag_list: ['browsing', taxon['meta_keywords']].flatten.join(', ')}
65
+ def soft_categories
66
+ client.query(soft_categories_query).to_a
163
67
  end
164
68
 
165
- def get_taxons_structure(taxons)
166
- menus = {}
167
-
168
- l2ms = taxons.select{|t| t['level'] == 2 }
169
- l2ms = l2ms.flatten.compact.sort_by{|a| a['position']}
170
-
171
- l2ms.each do |l2m|
172
-
173
- l3ms = taxons.select{|t| t['level'] == 3 && t['parent_id'] == l2m['entity_id'] }
174
- l3ms = l3ms.flatten.compact.sort_by{|a| a['position']}
175
-
176
- if l3ms.blank?
177
- menus[l2m['name']] = {}
178
- next
179
- else
180
- menus[l2m['name']] = {}
181
- l3ms.map{|l3m| menus[l2m['name']][l3m['name']] = {}}
182
-
183
- l3ms.each do |l3m|
184
-
185
- l4ms = taxons.select{|t| t['level'] == 4 && t['parent_id'] == l3m['entity_id']}
186
- l4ms = l4ms.flatten.compact.sort_by{|a| a['position']}
187
-
188
- if l4ms.blank?
189
- menus[l2m['name']][l3m['name']] = {} if menus[l2m['name']].present?
190
- next
191
- else
192
-
193
- menus[l2m['name']][l3m['name']] = {}
194
- l4ms.each{|l4m| menus[l2m['name']][l3m['name']][l4m['name']]={}}
195
-
196
- l4ms.each do |l4m|
197
-
198
- l5ms = taxons.select{|t| t['level'] == 5 && t['parent_id'] == l4m['entity_id']}
199
- l5ms = l5ms.flatten.compact.sort_by{|a| a['position']}
200
-
201
- if l5ms.blank?
202
- menus[l2m['name']][l3m['name']][l4m['name']] = {}
203
- next
204
- else
205
- l5ms.each {|l5m| menus[l2m['name']][l3m['name']][l4m['name']][l5m['name']]={}}
206
-
207
- l5ms.each do |l5m|
208
- l6ms = taxons.select{|t| t['level'] == 6 && t['parent_id'] == l5m['entity_id']}
209
- l6ms = l6ms.flatten.compact.sort_by{|a| a['position']}
210
-
211
- if l6ms.blank?
212
- menus[l2m['name']][l3m['name']][l4m['name']][l5m['name']] = {}
213
- next
214
- else
215
- l6ms.each{|l6m| menus[l2m['name']][l3m['name']][l4m['name']][l5m['name']][l6m['name']]={}}
216
- end
217
- end
218
- end
219
- end
220
- end
221
- end
222
- end
223
- end
224
-
225
- menus
69
+ def soft_categories_query
70
+ " #{select_query} and e.children_count > 0 order by e.parent_id asc "
226
71
  end
227
72
 
228
- def import_catagories
229
- File.open("#{MagentoMigrator::Engine.root}/data/categories.json", "w"){ |f|
230
- f.write(JSON.pretty_generate(all.to_a))
231
- }
73
+ def categories_query
74
+ " #{select_query} and e.children_count = 0 order by e.parent_id asc "
232
75
  end
233
76
 
234
77
  end # class self declaration
@@ -28,14 +28,6 @@ module Workarea
28
28
  "SELECT attribute_code, backend_type FROM eav_attribute WHERE entity_type_id = ? and backend_type = ?"
29
29
  end
30
30
 
31
- # def ids_to_include
32
- # raise NotImplementedError, "subclass did not define #ids_to_include"
33
- # end
34
-
35
- # def table_name
36
- # raise NotImplementedError, "subclass did not define #table_name"
37
- # end
38
-
39
31
  def select_query
40
32
  select_query = "SELECT #{select_columns} FROM #{table_name}_entity e #{join_clause} "
41
33
  select_query += "\nwhere e.entity_id in (#{ids_to_include})"
@@ -46,7 +46,7 @@ module Workarea
46
46
  REQUIRED_FIELDS = %w{host adapter database}
47
47
 
48
48
  def initialize()
49
- @magento_db_config = Workarea.config.magento_db_config
49
+ @magento_db_config = YAML.load_file("#{MagentoMigrator::Engine.root}/config/magento_db_config.yml")[Rails.env]
50
50
  @magento_db_config['batch_size'] ||= 10000
51
51
  setup_mysql_client
52
52
  end
@@ -1,5 +1,5 @@
1
1
  module Workarea
2
2
  module MagentoMigrator
3
- VERSION = "1.0.0.pre".freeze
3
+ VERSION = "1.0.1".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workarea-magento_migrator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gajendra Jena
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-23 00:00:00.000000000 Z
11
+ date: 2020-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: workarea
@@ -82,7 +82,9 @@ files:
82
82
  - bin/rails
83
83
  - config/data/catalog_category.yml
84
84
  - config/data/catalog_product.yml
85
+ - config/initializers/magento_db.rb
85
86
  - config/initializers/workarea.rb
87
+ - config/magento_db_config.yml
86
88
  - config/routes.rb
87
89
  - data/categories.json
88
90
  - data/content_pages.json
@@ -151,6 +153,7 @@ files:
151
153
  - test/teaspoon_env.rb
152
154
  - test/test_helper.rb
153
155
  - test/workarea/magento_migrator/catalog_product_test.rb
156
+ - workarea-magento_migrator-1.0.0.pre.gem
154
157
  - workarea-magento_migrator.gemspec
155
158
  homepage: ''
156
159
  licenses:
@@ -167,9 +170,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
170
  version: '0'
168
171
  required_rubygems_version: !ruby/object:Gem::Requirement
169
172
  requirements:
170
- - - ">"
173
+ - - ">="
171
174
  - !ruby/object:Gem::Version
172
- version: 1.3.1
175
+ version: '0'
173
176
  requirements: []
174
177
  rubygems_version: 3.0.6
175
178
  signing_key: