gemgento 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +8 -0
  5. data/README.md +9 -0
  6. data/Rakefile +21 -0
  7. data/app/adapters/gemgento/magento/address_adapter.rb +37 -0
  8. data/app/adapters/gemgento/magento/customer_adapter.rb +24 -0
  9. data/app/adapters/gemgento/magento/line_item_adapter.rb +41 -0
  10. data/app/adapters/gemgento/magento/order_adapter.rb +97 -0
  11. data/app/adapters/gemgento/magento/order_status_adapter.rb +24 -0
  12. data/app/adapters/gemgento/magento/payment_adapter.rb +38 -0
  13. data/app/adapters/gemgento/magento/product_adapater.rb +24 -0
  14. data/app/adapters/gemgento/magento/quote_adapter.rb +17 -0
  15. data/app/adapters/gemgento/magento/shipment_adapter.rb +74 -0
  16. data/app/adapters/gemgento/magento/shipment_item_adapter.rb +39 -0
  17. data/app/adapters/gemgento/magento/shipment_track_adapter.rb +31 -0
  18. data/app/adapters/gemgento/magento_adapter.rb +17 -0
  19. data/app/assets/fonts/FuturaStd-Bold.otf +0 -0
  20. data/app/assets/fonts/FuturaStd-Book.otf +0 -0
  21. data/app/assets/fonts/FuturaStd-Light.otf +0 -0
  22. data/app/assets/fonts/FuturaStd-Medium.otf +0 -0
  23. data/app/assets/fonts/Verlag-Black.otf +0 -0
  24. data/app/assets/fonts/Verlag-BlackItalic.otf +0 -0
  25. data/app/assets/fonts/Verlag-Bold.otf +0 -0
  26. data/app/assets/fonts/Verlag-BoldItalic.otf +0 -0
  27. data/app/assets/fonts/Verlag-Book.otf +0 -0
  28. data/app/assets/fonts/Verlag-BookItalic-2.otf +0 -0
  29. data/app/assets/fonts/Verlag-BookItalic-3.otf +0 -0
  30. data/app/assets/fonts/Verlag-BookItalic.otf +0 -0
  31. data/app/assets/fonts/Verlag-Light.otf +0 -0
  32. data/app/assets/fonts/Verlag-LightItalic.otf +0 -0
  33. data/app/assets/fonts/Verlag-XLight.otf +0 -0
  34. data/app/assets/fonts/Verlag-XLightItalic.otf +0 -0
  35. data/app/assets/images/about_store.jpg +0 -0
  36. data/app/assets/images/gemgento-icon-bolt.png +0 -0
  37. data/app/assets/javascripts/gemgento/active_admin.js.coffee +42 -0
  38. data/app/assets/javascripts/gemgento/checkout/address.coffee +23 -0
  39. data/app/assets/javascripts/gemgento/gemgento.js +1 -0
  40. data/app/assets/javascripts/gemgento/global.js.coffee +31 -0
  41. data/app/assets/stylesheets/gemgento/active_admin.css.scss +549 -0
  42. data/app/assets/stylesheets/gemgento/default-views/_address.scss +11 -0
  43. data/app/assets/stylesheets/gemgento/default-views/_category.scss +54 -0
  44. data/app/assets/stylesheets/gemgento/default-views/_checkout.scss +28 -0
  45. data/app/assets/stylesheets/gemgento/default-views/_footer.scss +13 -0
  46. data/app/assets/stylesheets/gemgento/default-views/_form.scss +127 -0
  47. data/app/assets/stylesheets/gemgento/default-views/_header.scss +32 -0
  48. data/app/assets/stylesheets/gemgento/default-views/_layout.css.scss +157 -0
  49. data/app/assets/stylesheets/gemgento/default-views/_pages.css.scss +83 -0
  50. data/app/assets/stylesheets/gemgento/default-views/_product.scss +57 -0
  51. data/app/assets/stylesheets/gemgento/default-views/_shopping_bag.scss +87 -0
  52. data/app/assets/stylesheets/gemgento/default-views/_subheader.css.scss +30 -0
  53. data/app/assets/stylesheets/gemgento/default-views/application.css.scss +1 -0
  54. data/app/controllers/concerns/gemgento/api/v1/base.rb +15 -0
  55. data/app/controllers/concerns/gemgento/api/v1/product_filters.rb +33 -0
  56. data/app/controllers/gemgento/addresses_controller.rb +14 -0
  57. data/app/controllers/gemgento/api/v1/categories_controller.rb +13 -0
  58. data/app/controllers/gemgento/api/v1/products_controller.rb +23 -0
  59. data/app/controllers/gemgento/api/v1/search_controller.rb +14 -0
  60. data/app/controllers/gemgento/application_controller.rb +5 -0
  61. data/app/controllers/gemgento/cart_controller.rb +99 -0
  62. data/app/controllers/gemgento/categories_controller.rb +37 -0
  63. data/app/controllers/gemgento/checkout/address_controller.rb +48 -0
  64. data/app/controllers/gemgento/checkout/confirm_controller.rb +72 -0
  65. data/app/controllers/gemgento/checkout/coupons_controller.rb +42 -0
  66. data/app/controllers/gemgento/checkout/gift_card_controller.rb +39 -0
  67. data/app/controllers/gemgento/checkout/gift_controller.rb +32 -0
  68. data/app/controllers/gemgento/checkout/login_controller.rb +123 -0
  69. data/app/controllers/gemgento/checkout/payment_controller.rb +70 -0
  70. data/app/controllers/gemgento/checkout/paypal_controller.rb +23 -0
  71. data/app/controllers/gemgento/checkout/shipping_controller.rb +46 -0
  72. data/app/controllers/gemgento/checkout/shipping_payment_controller.rb +58 -0
  73. data/app/controllers/gemgento/checkout/thank_you_controller.rb +45 -0
  74. data/app/controllers/gemgento/checkout_controller.rb +120 -0
  75. data/app/controllers/gemgento/countries_controller.rb +17 -0
  76. data/app/controllers/gemgento/errors_controller.rb +7 -0
  77. data/app/controllers/gemgento/footer_items_controller.rb +16 -0
  78. data/app/controllers/gemgento/home_controller.rb +7 -0
  79. data/app/controllers/gemgento/magento/addresses_controller.rb +61 -0
  80. data/app/controllers/gemgento/magento/base_controller.rb +18 -0
  81. data/app/controllers/gemgento/magento/categories_controller.rb +103 -0
  82. data/app/controllers/gemgento/magento/email/sales/credit_memos_controller.rb +21 -0
  83. data/app/controllers/gemgento/magento/email/sales/invoices_controller.rb +21 -0
  84. data/app/controllers/gemgento/magento/email/sales/orders_controller.rb +20 -0
  85. data/app/controllers/gemgento/magento/email/sales/shipments_controller.rb +25 -0
  86. data/app/controllers/gemgento/magento/emails_controller.rb +11 -0
  87. data/app/controllers/gemgento/magento/inventory_controller.rb +30 -0
  88. data/app/controllers/gemgento/magento/orders_controller.rb +12 -0
  89. data/app/controllers/gemgento/magento/price_rules_controller.rb +22 -0
  90. data/app/controllers/gemgento/magento/product_attribute_sets_controller.rb +37 -0
  91. data/app/controllers/gemgento/magento/product_attributes_controller.rb +70 -0
  92. data/app/controllers/gemgento/magento/products_controller.rb +240 -0
  93. data/app/controllers/gemgento/magento/recurring_profiles_controller.rb +42 -0
  94. data/app/controllers/gemgento/magento/stores_controller.rb +21 -0
  95. data/app/controllers/gemgento/magento/user_groups_controller.rb +23 -0
  96. data/app/controllers/gemgento/magento/users_controller.rb +63 -0
  97. data/app/controllers/gemgento/order_export_controller.rb +21 -0
  98. data/app/controllers/gemgento/orders_controller.rb +12 -0
  99. data/app/controllers/gemgento/products_controller.rb +12 -0
  100. data/app/controllers/gemgento/regions_controller.rb +18 -0
  101. data/app/controllers/gemgento/search_controller.rb +16 -0
  102. data/app/controllers/gemgento/shipments_controller.rb +5 -0
  103. data/app/controllers/gemgento/stock_notifications_controller.rb +22 -0
  104. data/app/controllers/gemgento/subscribers_controller.rb +35 -0
  105. data/app/controllers/gemgento/sync_controller.rb +50 -0
  106. data/app/controllers/gemgento/user/addresses_controller.rb +79 -0
  107. data/app/controllers/gemgento/user/base_controller.rb +14 -0
  108. data/app/controllers/gemgento/user/home_controller.rb +9 -0
  109. data/app/controllers/gemgento/user/orders_controller.rb +17 -0
  110. data/app/controllers/gemgento/user/passwords_controller.rb +18 -0
  111. data/app/controllers/gemgento/user/recurring_profiles_controller.rb +31 -0
  112. data/app/controllers/gemgento/user/registration_session_controller.rb +103 -0
  113. data/app/controllers/gemgento/user/registrations_controller.rb +28 -0
  114. data/app/controllers/gemgento/user/saved_credit_cards_controller.rb +56 -0
  115. data/app/controllers/gemgento/user/sessions_controller.rb +50 -0
  116. data/app/controllers/gemgento/user/wishlist_items_controller.rb +55 -0
  117. data/app/controllers/gemgento/users_controller.rb +36 -0
  118. data/app/helpers/gemgento/application_helper.rb +125 -0
  119. data/app/helpers/gemgento/categories_helper.rb +39 -0
  120. data/app/helpers/gemgento/checkout/payment_helper.rb +5 -0
  121. data/app/helpers/gemgento/products_helper.rb +23 -0
  122. data/app/jobs/gemgento/import_job.rb +12 -0
  123. data/app/mailers/gemgento/sales_mailer.rb +80 -0
  124. data/app/models/admin_user.rb +7 -0
  125. data/app/models/concerns/gemgento/product_touches.rb +26 -0
  126. data/app/models/gemgento.rb +5 -0
  127. data/app/models/gemgento/adapter/sellect/customer.rb +34 -0
  128. data/app/models/gemgento/adapter/sellect/order.rb +378 -0
  129. data/app/models/gemgento/adapter/sellect/product.rb +250 -0
  130. data/app/models/gemgento/adapter/sellect_adapter.rb +16 -0
  131. data/app/models/gemgento/adapter/shopify/address.rb +40 -0
  132. data/app/models/gemgento/adapter/shopify/category.rb +51 -0
  133. data/app/models/gemgento/adapter/shopify/customer.rb +66 -0
  134. data/app/models/gemgento/adapter/shopify/order.rb +334 -0
  135. data/app/models/gemgento/adapter/shopify/product.rb +377 -0
  136. data/app/models/gemgento/adapter/shopify/product_category_position.rb +58 -0
  137. data/app/models/gemgento/adapter/shopify_adapter.rb +63 -0
  138. data/app/models/gemgento/address.rb +206 -0
  139. data/app/models/gemgento/api_job.rb +68 -0
  140. data/app/models/gemgento/asset.rb +185 -0
  141. data/app/models/gemgento/asset_file.rb +57 -0
  142. data/app/models/gemgento/asset_type.rb +8 -0
  143. data/app/models/gemgento/bundle.rb +5 -0
  144. data/app/models/gemgento/bundle/item.rb +17 -0
  145. data/app/models/gemgento/bundle/option.rb +20 -0
  146. data/app/models/gemgento/category.rb +235 -0
  147. data/app/models/gemgento/country.rb +21 -0
  148. data/app/models/gemgento/gift_message.rb +8 -0
  149. data/app/models/gemgento/image_import.rb +141 -0
  150. data/app/models/gemgento/import.rb +125 -0
  151. data/app/models/gemgento/inventory.rb +60 -0
  152. data/app/models/gemgento/inventory_import.rb +51 -0
  153. data/app/models/gemgento/line_item.rb +142 -0
  154. data/app/models/gemgento/line_item_option.rb +10 -0
  155. data/app/models/gemgento/magento_db.rb +35 -0
  156. data/app/models/gemgento/magento_response.rb +10 -0
  157. data/app/models/gemgento/order.rb +56 -0
  158. data/app/models/gemgento/order_status.rb +7 -0
  159. data/app/models/gemgento/payment.rb +50 -0
  160. data/app/models/gemgento/price_rule.rb +258 -0
  161. data/app/models/gemgento/price_tier.rb +36 -0
  162. data/app/models/gemgento/product.rb +607 -0
  163. data/app/models/gemgento/product_attribute.rb +48 -0
  164. data/app/models/gemgento/product_attribute_option.rb +39 -0
  165. data/app/models/gemgento/product_attribute_set.rb +22 -0
  166. data/app/models/gemgento/product_attribute_value.rb +26 -0
  167. data/app/models/gemgento/product_category.rb +34 -0
  168. data/app/models/gemgento/product_import.rb +359 -0
  169. data/app/models/gemgento/quote.rb +586 -0
  170. data/app/models/gemgento/recurring_profile.rb +28 -0
  171. data/app/models/gemgento/region.rb +14 -0
  172. data/app/models/gemgento/relation.rb +10 -0
  173. data/app/models/gemgento/relation_type.rb +7 -0
  174. data/app/models/gemgento/saved_credit_card.rb +45 -0
  175. data/app/models/gemgento/search.rb +14 -0
  176. data/app/models/gemgento/session.rb +49 -0
  177. data/app/models/gemgento/shipment.rb +38 -0
  178. data/app/models/gemgento/shipment_comment.rb +19 -0
  179. data/app/models/gemgento/shipment_item.rb +11 -0
  180. data/app/models/gemgento/shipment_track.rb +21 -0
  181. data/app/models/gemgento/stock_notification.rb +17 -0
  182. data/app/models/gemgento/store.rb +31 -0
  183. data/app/models/gemgento/store_tag.rb +8 -0
  184. data/app/models/gemgento/subscriber.rb +30 -0
  185. data/app/models/gemgento/swatch.rb +9 -0
  186. data/app/models/gemgento/sync.rb +134 -0
  187. data/app/models/gemgento/tag.rb +64 -0
  188. data/app/models/gemgento/user.rb +161 -0
  189. data/app/models/gemgento/user_group.rb +13 -0
  190. data/app/models/gemgento/wishlist_item.rb +11 -0
  191. data/app/services/gemgento/magento_api.rb +173 -0
  192. data/app/services/gemgento/price.rb +67 -0
  193. data/app/validators/gemgento/credit_card_validator.rb +50 -0
  194. data/app/validators/gemgento/image_import_validator.rb +100 -0
  195. data/app/validators/gemgento/inventory_import_validator.rb +73 -0
  196. data/app/validators/gemgento/inventory_validator.rb +14 -0
  197. data/app/validators/gemgento/product_import_validator.rb +163 -0
  198. data/app/views/admin/product_positions/_index.html.haml +14 -0
  199. data/app/views/devise/registrations/edit.haml +37 -0
  200. data/app/views/gemgento/addresses/_address.json.jbuilder +6 -0
  201. data/app/views/gemgento/addresses/region_options.html.haml +1 -0
  202. data/app/views/gemgento/api/v1/categories/_category.json.jbuilder +52 -0
  203. data/app/views/gemgento/api/v1/categories/index.json.jbuilder +8 -0
  204. data/app/views/gemgento/api/v1/categories/show.json.jbuilder +7 -0
  205. data/app/views/gemgento/api/v1/products/_attributes.json.jbuilder +9 -0
  206. data/app/views/gemgento/api/v1/products/_product.json.jbuilder +18 -0
  207. data/app/views/gemgento/api/v1/products/_relationships.json.jbuilder +48 -0
  208. data/app/views/gemgento/api/v1/products/index.json.jbuilder +8 -0
  209. data/app/views/gemgento/api/v1/products/show.json.jbuilder +7 -0
  210. data/app/views/gemgento/api/v1/search/index.json.jbuilder +8 -0
  211. data/app/views/gemgento/api/v1/search/show.json.jbuilder +8 -0
  212. data/app/views/gemgento/assets/_asset.json.jbuilder +13 -0
  213. data/app/views/gemgento/cart/show.html.haml +67 -0
  214. data/app/views/gemgento/categories/_category.json.jbuilder +9 -0
  215. data/app/views/gemgento/categories/_product_tile.html.haml +16 -0
  216. data/app/views/gemgento/categories/index.html.haml +10 -0
  217. data/app/views/gemgento/categories/index.json.jbuilder +1 -0
  218. data/app/views/gemgento/categories/show.html.haml +16 -0
  219. data/app/views/gemgento/categories/show.json.jbuilder +1 -0
  220. data/app/views/gemgento/checkout/_checkout_header.html.haml +17 -0
  221. data/app/views/gemgento/checkout/address/error.js.erb +1 -0
  222. data/app/views/gemgento/checkout/address/show.html.haml +88 -0
  223. data/app/views/gemgento/checkout/address/success.js.erb +1 -0
  224. data/app/views/gemgento/checkout/confirm/error.js.erb +0 -0
  225. data/app/views/gemgento/checkout/confirm/show.html.haml +60 -0
  226. data/app/views/gemgento/checkout/confirm/success.js.erb +1 -0
  227. data/app/views/gemgento/checkout/login/login_fail.js.erb +1 -0
  228. data/app/views/gemgento/checkout/login/login_guest_fail.js.erb +1 -0
  229. data/app/views/gemgento/checkout/login/login_guest_success.js.erb +1 -0
  230. data/app/views/gemgento/checkout/login/login_success.js.erb +1 -0
  231. data/app/views/gemgento/checkout/login/registration_fail.js.erb +1 -0
  232. data/app/views/gemgento/checkout/login/registration_success.js.erb +1 -0
  233. data/app/views/gemgento/checkout/login/show.html.haml +50 -0
  234. data/app/views/gemgento/checkout/payment/error.js.erb +1 -0
  235. data/app/views/gemgento/checkout/payment/show.html.haml +56 -0
  236. data/app/views/gemgento/checkout/payment/success.js.erb +1 -0
  237. data/app/views/gemgento/checkout/shipping/error.js.erb +0 -0
  238. data/app/views/gemgento/checkout/shipping/show.html.haml +26 -0
  239. data/app/views/gemgento/checkout/shipping/success.js.erb +1 -0
  240. data/app/views/gemgento/checkout/shipping_payment/show.haml +52 -0
  241. data/app/views/gemgento/checkout/thank_you/show.html.haml +6 -0
  242. data/app/views/gemgento/countries/_country.json.jbuilder +4 -0
  243. data/app/views/gemgento/countries/index.json.jbuilder +3 -0
  244. data/app/views/gemgento/countries/show.json.jbuilder +1 -0
  245. data/app/views/gemgento/home/index.html.haml +1 -0
  246. data/app/views/gemgento/order/add_item.js.erb +0 -0
  247. data/app/views/gemgento/order/no_inventory.js.erb +1 -0
  248. data/app/views/gemgento/order/remove_item.js.erb +0 -0
  249. data/app/views/gemgento/order/update_item.js.erb +0 -0
  250. data/app/views/gemgento/order_export/index.html.haml +2 -0
  251. data/app/views/gemgento/order_items/_order_item.json.jbuilder +7 -0
  252. data/app/views/gemgento/orders/_order.json.jbuilder +29 -0
  253. data/app/views/gemgento/products/_product.json.jbuilder +40 -0
  254. data/app/views/gemgento/products/index.html.haml +19 -0
  255. data/app/views/gemgento/products/show.html.haml +67 -0
  256. data/app/views/gemgento/products/show.json.jbuilder +1 -0
  257. data/app/views/gemgento/sales_mailer/credit_memo_email.html.haml +1 -0
  258. data/app/views/gemgento/sales_mailer/invoice_email.html.haml +1 -0
  259. data/app/views/gemgento/sales_mailer/order_email.html.haml +1 -0
  260. data/app/views/gemgento/sales_mailer/shipment_email.html.haml +1 -0
  261. data/app/views/gemgento/search/index.html.haml +8 -0
  262. data/app/views/gemgento/shared/_asset.json.jbuilder +35 -0
  263. data/app/views/gemgento/shared/_asset_file.json.jbuilder +19 -0
  264. data/app/views/gemgento/shared/_asset_type.json.jbuilder +13 -0
  265. data/app/views/gemgento/shared/_error_messages.haml +7 -0
  266. data/app/views/gemgento/shared/_flash_messages.haml +4 -0
  267. data/app/views/gemgento/shared/_footer.haml +7 -0
  268. data/app/views/gemgento/shared/_header.haml +23 -0
  269. data/app/views/gemgento/shared/_mini_bag.haml +36 -0
  270. data/app/views/gemgento/shared/_product_image.haml +8 -0
  271. data/app/views/gemgento/shipments/_shipment.json.jbuilder +12 -0
  272. data/app/views/gemgento/subscribers/create.js.erb +2 -0
  273. data/app/views/gemgento/subscribers/errors.js.erb +1 -0
  274. data/app/views/gemgento/user/_user.json.jbuilder +2 -0
  275. data/app/views/gemgento/user/addresses/_form.haml +39 -0
  276. data/app/views/gemgento/user/addresses/errors.js.erb +1 -0
  277. data/app/views/gemgento/user/addresses/index.haml +33 -0
  278. data/app/views/gemgento/user/addresses/new.haml +11 -0
  279. data/app/views/gemgento/user/addresses/success.js.erb +1 -0
  280. data/app/views/gemgento/user/confirmations/new.haml +9 -0
  281. data/app/views/gemgento/user/home/index.haml +8 -0
  282. data/app/views/gemgento/user/mailer/confirmation_instructions.html.erb +5 -0
  283. data/app/views/gemgento/user/mailer/reset_password_instructions.html.erb +8 -0
  284. data/app/views/gemgento/user/mailer/unlock_instructions.html.erb +7 -0
  285. data/app/views/gemgento/user/orders/index.html.haml +29 -0
  286. data/app/views/gemgento/user/orders/show.html.haml +87 -0
  287. data/app/views/gemgento/user/passwords/edit.html.erb +18 -0
  288. data/app/views/gemgento/user/passwords/new.html.haml +21 -0
  289. data/app/views/gemgento/user/registration_session/new.haml +67 -0
  290. data/app/views/gemgento/user/registrations/new.html.haml +28 -0
  291. data/app/views/gemgento/user/saved_credit_cards/_form.haml +69 -0
  292. data/app/views/gemgento/user/saved_credit_cards/index.haml +25 -0
  293. data/app/views/gemgento/user/saved_credit_cards/new.haml +13 -0
  294. data/app/views/gemgento/user/sessions/new.html.haml +29 -0
  295. data/app/views/gemgento/user/shared/_links.erb +25 -0
  296. data/app/views/gemgento/user/shared/_user_header.haml +8 -0
  297. data/app/views/gemgento/user/wishlist_items/index.html.haml +20 -0
  298. data/app/views/kaminari/_first_page.html.haml +9 -0
  299. data/app/views/kaminari/_gap.html.haml +8 -0
  300. data/app/views/kaminari/_last_page.html.haml +9 -0
  301. data/app/views/kaminari/_next_page.html.haml +9 -0
  302. data/app/views/kaminari/_page.html.haml +10 -0
  303. data/app/views/kaminari/_paginator.html.haml +18 -0
  304. data/app/views/kaminari/_prev_page.html.haml +9 -0
  305. data/app/views/layouts/_footer.html.haml +5 -0
  306. data/app/views/layouts/_header.html.haml +39 -0
  307. data/app/views/layouts/gemgento.html.haml +22 -0
  308. data/app/workers/gemgento/apply_price_rule.rb +24 -0
  309. data/app/workers/gemgento/cart/add_item_worker.rb +23 -0
  310. data/app/workers/gemgento/cart/update_item_worker.rb +18 -0
  311. data/bin/rails +12 -0
  312. data/config/gemgento_config.yml +12 -0
  313. data/config/initializers/active_admin.rb +14 -0
  314. data/config/initializers/active_touch.rb +3 -0
  315. data/config/initializers/assets.rb +1 -0
  316. data/config/initializers/boolean_typecasting.rb +37 -0
  317. data/config/initializers/devise.rb +49 -0
  318. data/config/initializers/gemgento_config.rb +67 -0
  319. data/config/initializers/mime_types.rb +4 -0
  320. data/config/initializers/state_machine.rb +7 -0
  321. data/config/locales/en.yml +24 -0
  322. data/config/routes.rb +138 -0
  323. data/db/migrate/20151201231300_add_validation_indexes_to_gemgento_products.rb +22 -0
  324. data/db/migrate/20160122174450_gemgento2.rb +969 -0
  325. data/db/migrate/20160217142910_create_gemgento_imports.rb +15 -0
  326. data/db/migrate/20160219235858_add_timestamps_to_gemgento_asset_files.rb +6 -0
  327. data/gemgento.gemspec +44 -0
  328. data/lib/devise/models/validatable.rb +76 -0
  329. data/lib/gemgento.rb +24 -0
  330. data/lib/gemgento/admin/admin_user.rb +29 -0
  331. data/lib/gemgento/admin/api_jobs.rb +30 -0
  332. data/lib/gemgento/admin/image_import.rb +87 -0
  333. data/lib/gemgento/admin/inventory_import.rb +81 -0
  334. data/lib/gemgento/admin/product_import.rb +138 -0
  335. data/lib/gemgento/admin/product_positions.rb +49 -0
  336. data/lib/gemgento/admin/stores.rb +33 -0
  337. data/lib/gemgento/admin/subscribers.rb +31 -0
  338. data/lib/gemgento/admin/syncs.rb +26 -0
  339. data/lib/gemgento/api/soap/authnetcim/payment.rb +127 -0
  340. data/lib/gemgento/api/soap/catalog/category.rb +237 -0
  341. data/lib/gemgento/api/soap/catalog/product.rb +481 -0
  342. data/lib/gemgento/api/soap/catalog/product_attribute.rb +147 -0
  343. data/lib/gemgento/api/soap/catalog/product_attribute_media.rb +202 -0
  344. data/lib/gemgento/api/soap/catalog/product_attribute_set.rb +80 -0
  345. data/lib/gemgento/api/soap/catalog/product_tag.rb +146 -0
  346. data/lib/gemgento/api/soap/catalog/product_tier_price.rb +21 -0
  347. data/lib/gemgento/api/soap/catalog/search.rb +27 -0
  348. data/lib/gemgento/api/soap/catalog_inventory/stock_item.rb +87 -0
  349. data/lib/gemgento/api/soap/catalog_rule/rule.rb +54 -0
  350. data/lib/gemgento/api/soap/checkout/cart.rb +85 -0
  351. data/lib/gemgento/api/soap/checkout/coupon.rb +37 -0
  352. data/lib/gemgento/api/soap/checkout/customer.rb +87 -0
  353. data/lib/gemgento/api/soap/checkout/payment.rb +59 -0
  354. data/lib/gemgento/api/soap/checkout/product.rb +138 -0
  355. data/lib/gemgento/api/soap/checkout/shipping.rb +37 -0
  356. data/lib/gemgento/api/soap/customer/address.rb +143 -0
  357. data/lib/gemgento/api/soap/customer/customer.rb +200 -0
  358. data/lib/gemgento/api/soap/directory/country.rb +49 -0
  359. data/lib/gemgento/api/soap/directory/region.rb +50 -0
  360. data/lib/gemgento/api/soap/enterprise_gift_message/gift_message.rb +26 -0
  361. data/lib/gemgento/api/soap/gift_card.rb +35 -0
  362. data/lib/gemgento/api/soap/globalcollect/saved_cc.rb +58 -0
  363. data/lib/gemgento/api/soap/miscellaneous/store.rb +47 -0
  364. data/lib/gemgento/api/soap/sales/order.rb +249 -0
  365. data/lib/gemgento/api/soap/sales/order_shipment.rb +122 -0
  366. data/lib/gemgento/api/soap/sales/recurring_profile.rb +88 -0
  367. data/lib/gemgento/api/soap/stock_notification.rb +27 -0
  368. data/lib/gemgento/engine.rb +61 -0
  369. data/lib/gemgento/version.rb +3 -0
  370. data/lib/generators/gemgento/assets_generator.rb +11 -0
  371. data/lib/generators/gemgento/install_generator.rb +34 -0
  372. data/lib/generators/gemgento/templates/active_admin.css.scss +1 -0
  373. data/lib/generators/gemgento/templates/active_admin.js.coffee +1 -0
  374. data/lib/generators/gemgento/templates/active_admin.rb +3 -0
  375. data/lib/generators/gemgento/views_generator.rb +10 -0
  376. data/spec/dummy/README.rdoc +28 -0
  377. data/spec/dummy/Rakefile +6 -0
  378. data/spec/dummy/app/assets/images/.keep +0 -0
  379. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  380. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  381. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  382. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  383. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  384. data/spec/dummy/app/mailers/.keep +0 -0
  385. data/spec/dummy/app/models/.keep +0 -0
  386. data/spec/dummy/app/models/concerns/.keep +0 -0
  387. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  388. data/spec/dummy/bin/bundle +3 -0
  389. data/spec/dummy/bin/rails +4 -0
  390. data/spec/dummy/bin/rake +4 -0
  391. data/spec/dummy/bin/setup +29 -0
  392. data/spec/dummy/config.ru +4 -0
  393. data/spec/dummy/config/application.rb +32 -0
  394. data/spec/dummy/config/boot.rb +5 -0
  395. data/spec/dummy/config/database.yml +20 -0
  396. data/spec/dummy/config/environment.rb +5 -0
  397. data/spec/dummy/config/environments/development.rb +41 -0
  398. data/spec/dummy/config/environments/production.rb +79 -0
  399. data/spec/dummy/config/environments/test.rb +42 -0
  400. data/spec/dummy/config/gemgento_config.yml +22 -0
  401. data/spec/dummy/config/initializers/assets.rb +11 -0
  402. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  403. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  404. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  405. data/spec/dummy/config/initializers/inflections.rb +16 -0
  406. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  407. data/spec/dummy/config/initializers/session_store.rb +3 -0
  408. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  409. data/spec/dummy/config/locales/en.yml +23 -0
  410. data/spec/dummy/config/routes.rb +4 -0
  411. data/spec/dummy/config/secrets.yml +22 -0
  412. data/spec/dummy/lib/assets/.keep +0 -0
  413. data/spec/dummy/public/404.html +67 -0
  414. data/spec/dummy/public/422.html +67 -0
  415. data/spec/dummy/public/500.html +66 -0
  416. data/spec/dummy/public/favicon.ico +0 -0
  417. data/spec/factories/gemgento/price_tiers.rb +8 -0
  418. data/spec/factories/gemgento/product_attribute_sets.rb +22 -0
  419. data/spec/factories/gemgento/product_attributes.rb +5 -0
  420. data/spec/factories/gemgento/products.rb +14 -0
  421. data/spec/factories/gemgento/stores.rb +12 -0
  422. data/spec/factories/gemgento/user_groups.rb +6 -0
  423. data/spec/factories/gemgento/users.rb +13 -0
  424. data/spec/factories/gemgento_imports.rb +12 -0
  425. data/spec/model/gemgento/price_tier_spec.rb +45 -0
  426. data/spec/rails_helper.rb +55 -0
  427. data/spec/services/gemgento/price_spec.rb +152 -0
  428. data/spec/spec_helper.rb +87 -0
  429. metadata +919 -0
@@ -0,0 +1,15 @@
1
+ class CreateGemgentoImports < ActiveRecord::Migration
2
+ def change
3
+ create_table :gemgento_imports do |t|
4
+ t.string :type
5
+ t.attachment :file
6
+ t.integer :total_rows, null: false, default: 0
7
+ t.integer :current_row, null: false, default: 0
8
+ t.text :options
9
+ t.integer :state, null: false, default: 0
10
+ t.text :process_errors
11
+
12
+ t.timestamps null: false
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ class AddTimestampsToGemgentoAssetFiles < ActiveRecord::Migration
2
+ def change
3
+ add_column :gemgento_asset_files, :created_at, :datetime
4
+ add_column :gemgento_asset_files, :updated_at, :datetime
5
+ end
6
+ end
@@ -0,0 +1,44 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'gemgento/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = 'gemgento'
8
+ gem.version = Gemgento::VERSION
9
+ gem.authors = ['Philip Vasilevski', 'Kevin Pheasey']
10
+ gem.email = ['phil@mauinewyork.com', 'kevin@kpheasey.com']
11
+ gem.description = %q{rails based magento bridge for ecommerce}
12
+ gem.summary = %q{gemgento rails magento integration ecommerce platform}
13
+ gem.homepage = 'http://gemgento.com'
14
+ gem.licenses = ['MIT']
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ['lib']
20
+
21
+ gem.add_dependency 'activeadmin', '>= 1.0.0.pre1'
22
+ gem.add_dependency 'active_touch', '>= 3.0.2', '< 4'
23
+ gem.add_dependency 'jbuilder', '>= 2.1.3', '<= 3'
24
+ gem.add_dependency 'coffee-rails', '>= 4.0.0', '< 5'
25
+ gem.add_dependency 'devise', '>= 3.2.2', '< 5'
26
+ gem.add_dependency 'haml', '>= 4.0.0', '< 5'
27
+ gem.add_dependency 'kaminari', '>= 0.14', '< 1'
28
+ gem.add_dependency 'mysql2', '>= 0.3', '< 1'
29
+ gem.add_dependency 'paperclip', '>= 4.0.0', '< 5'
30
+ gem.add_dependency 'paperclip-meta', '>= 1.1.0', '< 2.1'
31
+ gem.add_dependency 'rails', '>= 4.2', '< 5'
32
+ gem.add_dependency 'sass-rails', '>= 4.0.0', '< 6'
33
+ gem.add_dependency 'savon', '~> 2.2.0', '< 3'
34
+ gem.add_dependency 'shopify_api', '~> 3.2.4', '< 4'
35
+ gem.add_dependency 'sidekiq', '>= 4.0.0', '< 5'
36
+ gem.add_dependency 'roo', '~> 2.1', '< 3'
37
+ gem.add_dependency 'roo-xls', '~> 1.0', '< 2'
38
+ gem.add_dependency 'state_machine', '>= 1.2.0', '< 2'
39
+ gem.add_dependency 'picturefill', '>= 0.1.3', '< 1'
40
+ gem.add_dependency 'sinatra', '~> 1.4.6', '< 2'
41
+
42
+ # testing
43
+ gem.test_files = Dir['spec/**/*']
44
+ end
@@ -0,0 +1,76 @@
1
+ module Devise
2
+ module Models
3
+ # Validatable creates all needed validations for a user email and password.
4
+ # It's optional, given you may want to create the validations by yourself.
5
+ # Automatically validate if the email is present, unique and its format is
6
+ # valid. Also tests presence of password, confirmation and length.
7
+ #
8
+ # == Options
9
+ #
10
+ # Validatable adds the following options to devise_for:
11
+ #
12
+ # * +email_regexp+: the regular expression used to validate e-mails;
13
+ # * +password_length+: a range expressing password length. Defaults to 8..72.
14
+ #
15
+ module Validatable
16
+ # All validations used by this module.
17
+ VALIDATIONS = [:validates_presence_of, :validates_uniqueness_of, :validates_format_of,
18
+ :validates_confirmation_of, :validates_length_of].freeze
19
+
20
+ def self.required_fields(klass)
21
+ []
22
+ end
23
+
24
+ def self.included(base)
25
+ base.extend ClassMethods
26
+ assert_validations_api!(base)
27
+
28
+ base.class_eval do
29
+ validates_presence_of :email, if: :email_required?
30
+ validates_format_of :email, with: email_regexp, allow_blank: true, if: :email_changed?
31
+
32
+ if base == Gemgento::User
33
+ validates_uniqueness_of :email, allow_blank: true, if: :email_changed?, scope: :deleted_at
34
+ else
35
+ validates_uniqueness_of :email, allow_blank: true, if: :email_changed?
36
+ end
37
+
38
+
39
+ validates_presence_of :password, if: :password_required?
40
+ validates_confirmation_of :password, if: :password_required?
41
+ validates_length_of :password, within: password_length, allow_blank: true
42
+
43
+ def unique_email_scope
44
+ []
45
+ end
46
+ end
47
+ end
48
+
49
+ def self.assert_validations_api!(base) #:nodoc:
50
+ unavailable_validations = VALIDATIONS.select { |v| !base.respond_to?(v) }
51
+
52
+ unless unavailable_validations.empty?
53
+ raise "Could not use :validatable module since #{base} does not respond " <<
54
+ "to the following methods: #{unavailable_validations.to_sentence}."
55
+ end
56
+ end
57
+
58
+ protected
59
+
60
+ # Checks whether a password is needed or not. For validations only.
61
+ # Passwords are always required if it's a new record, or if the password
62
+ # or confirmation are being set somewhere.
63
+ def password_required?
64
+ !persisted? || !password.nil? || !password_confirmation.nil?
65
+ end
66
+
67
+ def email_required?
68
+ true
69
+ end
70
+
71
+ module ClassMethods
72
+ Devise::Models.config(self, :email_regexp, :password_length)
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,24 @@
1
+ require 'haml'
2
+ require 'coffee-rails'
3
+ require 'paperclip'
4
+ require 'paperclip-meta'
5
+ require 'sass-rails'
6
+ require 'devise'
7
+ require 'activeadmin'
8
+ require 'savon'
9
+ require 'builder'
10
+ require 'paperclip'
11
+ require 'open-uri'
12
+ require 'sidekiq'
13
+ require 'state_machine'
14
+ require 'jbuilder'
15
+ require 'active_touch'
16
+ require 'roo'
17
+ require 'roo-xls'
18
+ require 'mime-types'
19
+ require 'gemgento/version'
20
+ require 'gemgento/engine'
21
+
22
+ module Gemgento
23
+
24
+ end
@@ -0,0 +1,29 @@
1
+ ActiveAdmin.register AdminUser do
2
+ permit_params :email, :password, :password_confirmation
3
+ menu priority: 100
4
+
5
+ index do
6
+ selectable_column
7
+ id_column
8
+ column :email
9
+ column :current_sign_in_at
10
+ column :sign_in_count
11
+ column :created_at
12
+ actions
13
+ end
14
+
15
+ filter :email
16
+ filter :current_sign_in_at
17
+ filter :sign_in_count
18
+ filter :created_at
19
+
20
+ form do |f|
21
+ f.inputs "Admin Details" do
22
+ f.input :email
23
+ f.input :password
24
+ f.input :password_confirmation
25
+ end
26
+ f.actions
27
+ end
28
+
29
+ end
@@ -0,0 +1,30 @@
1
+ module Gemgento
2
+ ActiveAdmin.register ApiJob do
3
+ menu priority: 100, parent: 'Gemgento', label: 'API Jobs'
4
+
5
+ actions :all, :only => [:index, :show ]
6
+
7
+ index do
8
+ column :source_type
9
+ column 'source_id' do |api_job|
10
+ if api_job.source
11
+ if api_job.source_type == 'Gemgento::Order'
12
+ api_job.source.increment_id
13
+ else
14
+ api_job.source_id
15
+ end
16
+ end
17
+ end
18
+ column :state
19
+ column :type
20
+ column :response_status
21
+ column :created_at
22
+ column :updated_at
23
+
24
+ actions :defaults => false do |job|
25
+ link_to 'Show', admin_gemgento_api_job_path(job)
26
+ end
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,87 @@
1
+ if defined?(ActiveAdmin)
2
+ module Gemgento
3
+ ActiveAdmin.register ImageImport do
4
+ menu priority: 200, parent: 'Gemgento', label: 'Image Import'
5
+ actions :all, except: [:destroy]
6
+
7
+ index do
8
+ column :created_at
9
+
10
+ column :state do |import|
11
+ import.state.humanize
12
+ end
13
+
14
+ column :progress do |import|
15
+ number_to_percentage import.percentage_complete, precision: 0
16
+ end
17
+
18
+ column :errors do |import|
19
+ import.process_errors.any? ? status_tag('yes', :ok) : status_tag('no')
20
+ end
21
+
22
+ actions
23
+ end
24
+
25
+ form as: :gemgento_image_import, multipart: true do |f|
26
+ f.inputs do
27
+ f.input :file, as: :file, label: 'Spreadsheet'
28
+ f.input :store_id,
29
+ as: :select,
30
+ include_blank: false,
31
+ collection: Store.where.not(code: 'admin').map { |s| [s.name, s.id] }
32
+ f.input :image_path, as: :string
33
+ f.input :image_file_extensions_raw, as: :string, label: 'Image File Extensions', hint: 'Enter expected image file extensions. Separate extensions with a comma. E.g. .jpg, .png, .gif'
34
+ f.input :image_labels_raw, as: :text, label: 'Image Labels', hint: 'Enter image labels in order of appearance. Separate labels with line breaks (hit enter)'
35
+ f.input :image_types_raw, as: :text, label: 'Image Types', hint: 'The default image types are: small_image, image, thumbnail. Each line corresponds to labels above, multiple types can be separated by a comma'
36
+ end
37
+
38
+ f.actions
39
+ end
40
+
41
+ show do |import|
42
+ attributes_table do
43
+ row :created_at
44
+
45
+ row :spreadsheet do
46
+ link_to import.file.instance_read(:file_name), import.file.url
47
+ end
48
+
49
+ row :image_path
50
+ row :image_file_extensions
51
+ row :image_labels
52
+ row :image_types
53
+ end
54
+
55
+ panel 'Process Details' do
56
+ attributes_table_for import do
57
+ row :state
58
+ row :progress do
59
+
60
+ "#{number_to_percentage(import.percentage_complete, precision: 0)} (#{import.current_row} /#{import.total_rows})"
61
+ end
62
+ end
63
+ end
64
+
65
+ if import.process_errors.any?
66
+ panel 'Process Errors' do
67
+ table_for import.process_errors.map { |e| { error: e } } do |error|
68
+ column :error
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ controller do
75
+ def permitted_params
76
+ params.permit(
77
+ gemgento_image_import: [
78
+ :file, :destroy_existing, :image_path, :image_file_extensions_raw, :image_labels_raw,
79
+ :image_types_raw, :store_id
80
+ ]
81
+ )
82
+ end
83
+ end
84
+
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,81 @@
1
+ if defined?(ActiveAdmin)
2
+ module Gemgento
3
+ ActiveAdmin.register InventoryImport do
4
+ menu priority: 200, parent: 'Gemgento', label: 'Inventory Import'
5
+ actions :all, except: [:destroy, :edit]
6
+
7
+ index do
8
+ column :created_at
9
+
10
+ column :state do |import|
11
+ import.state.humanize
12
+ end
13
+
14
+ column :progress do |import|
15
+ number_to_percentage import.percentage_complete, precision: 0
16
+ end
17
+
18
+ column :errors do |import|
19
+ import.process_errors.any? ? status_tag('yes', :ok) : status_tag('no')
20
+ end
21
+
22
+ actions
23
+ end
24
+
25
+ show do |import|
26
+ attributes_table do
27
+ row :created_at
28
+
29
+ row :spreadsheet do
30
+ link_to import.spreadsheet.instance_read(:file_name), import.spreadsheet.url
31
+ end
32
+
33
+ row :import_errors
34
+ end
35
+ end
36
+
37
+ form as: :gemgento_inventory_import, multipart: true do |f|
38
+ f.inputs do
39
+ f.input :file, as: :file, label: 'Spreadsheet'
40
+ end
41
+
42
+ f.actions
43
+ end
44
+
45
+ show do |import|
46
+ attributes_table do
47
+ row :created_at
48
+
49
+ row :spreadsheet do
50
+ link_to import.file.instance_read(:file_name), import.file.url
51
+ end
52
+ end
53
+
54
+ panel 'Process Details' do
55
+ attributes_table_for import do
56
+ row :state
57
+ row :progress do
58
+
59
+ "#{number_to_percentage(import.percentage_complete, precision: 0)} (#{import.current_row} /#{import.total_rows})"
60
+ end
61
+ end
62
+ end
63
+
64
+ if import.process_errors.any?
65
+ panel 'Process Errors' do
66
+ table_for import.process_errors.map { |e| { error: e } } do |error|
67
+ column :error
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ controller do
74
+ def permitted_params
75
+ params.permit(gemgento_inventory_import: [:file])
76
+ end
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,138 @@
1
+ if defined?(ActiveAdmin)
2
+ module Gemgento
3
+ ActiveAdmin.register ProductImport do
4
+ menu priority: 100, parent: 'Gemgento', label: 'Product Import'
5
+ actions :all, except: [:destroy, :edit]
6
+
7
+ index do
8
+ column :created_at
9
+
10
+ column :state do |import|
11
+ import.state.humanize
12
+ end
13
+
14
+ column :progress do |import|
15
+ number_to_percentage import.percentage_complete, precision: 0
16
+ end
17
+
18
+ column :errors do |import|
19
+ import.process_errors.any? ? status_tag('yes', :ok) : status_tag('no')
20
+ end
21
+
22
+ actions
23
+ end
24
+
25
+ form as: :gemgento_product_import, multipart: true do |f|
26
+ f.inputs do
27
+ f.input :file, as: :file, label: 'Spreadsheet'
28
+ f.input :product_attribute_set_id,
29
+ as: :select,
30
+ include_blank: false,
31
+ collection: ProductAttributeSet.all.map { |as| [as.name, as.id] }
32
+ f.input :root_category_id,
33
+ as: :select,
34
+ include_blank:
35
+ false, collection: Category.all.map { |c| [c.name, c.id] }
36
+ f.input :store_id,
37
+ as: :select,
38
+ include_blank: false,
39
+ collection: Store.where.not(code: 'admin').map { |s| [s.name, s.id] }
40
+ f.input :configurable_attribute_ids,
41
+ as: :check_boxes,
42
+ multiple: true,
43
+ collection: ProductAttribute
44
+ .where(is_configurable: true, scope: 'global', frontend_input: 'select')
45
+ .map { |pa| [pa.code, pa.id] }
46
+ f.input :simple_product_visibility,
47
+ as: :select,
48
+ include_blank: false,
49
+ collection: { 'Not Visible' => 1, 'Catalog' => 2, 'Search' => 3, 'Catalog, Search' => 4 }
50
+ f.input :configurable_product_visibility,
51
+ as: :select,
52
+ include_blank: false,
53
+ collection: { 'Not Visible' => 1, 'Catalog' => 2, 'Search' => 3, 'Catalog, Search' => 4 }
54
+ f.input :set_default_inventory_values, as: :boolean
55
+ f.input :include_images, as: :boolean
56
+ f.input :image_path
57
+ f.input :image_file_extensions_raw, as: :string, label: 'Image File Extensions', hint: 'Enter expected image file extensions. Separate extensions with a comma. E.g. .jpg, .png, .gif'
58
+ f.input :image_labels_raw, as: :text, label: 'Image Labels', hint: 'Enter image labels in order of appearance. Separate labels with line breaks (hit enter)'
59
+ f.input :image_types_raw, as: :text, label: 'Image Types', hint: 'The default image types are: small_image, image, thumbnail. Each line corresponds to labels above, multiple types can be separated by a comma'
60
+ end
61
+
62
+ f.actions
63
+ end
64
+
65
+ show do |import|
66
+ attributes_table do
67
+ row :created_at
68
+
69
+ row :spreadsheet do
70
+ link_to import.file.instance_read(:file_name), import.file.url
71
+ end
72
+
73
+ row :root_category
74
+ row :store
75
+ row :configurable_attributes
76
+ row :simple_product_visibility
77
+ row :configurable_product_visibility
78
+ row :set_default_inventory_values
79
+ end
80
+
81
+ panel 'Image Details' do
82
+ attributes_table_for import do
83
+ row :include_images
84
+ row :image_path
85
+ row :image_file_extensions
86
+ row :image_labels
87
+ row :image_types
88
+ end
89
+ end
90
+
91
+ panel 'Process Details' do
92
+ attributes_table_for import do
93
+ row :state
94
+ row :progress do
95
+
96
+ "#{number_to_percentage(import.percentage_complete, precision: 0)} (#{import.current_row} /#{import.total_rows})"
97
+ end
98
+ end
99
+ end
100
+
101
+ if import.process_errors.any?
102
+ panel 'Process Errors' do
103
+ table_for import.process_errors.map { |e| { error: e } } do |error|
104
+ column :error
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ controller do
111
+ def permitted_params
112
+ params.permit(
113
+ gemgento_product_import: [
114
+ :utf8,
115
+ :authenticity_token,
116
+ :commit,
117
+ :file,
118
+ :product_attribute_set_id,
119
+ :root_category_id,
120
+ :store_id,
121
+ :configurable_attribute_ids,
122
+ :simple_product_visibility,
123
+ :configurable_product_visibility,
124
+ :include_images,
125
+ :image_path,
126
+ :image_file_extensions,
127
+ :image_file_extensions_raw,
128
+ :image_labels,
129
+ :image_labels_raw,
130
+ :image_types_raw,
131
+ :set_default_inventory_values
132
+ ])
133
+ end
134
+ end
135
+
136
+ end
137
+ end
138
+ end