comable-core 0.6.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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +97 -0
- data/app/assets/javascripts/comable/application.js +13 -0
- data/app/assets/stylesheets/comable/application.css +13 -0
- data/app/controllers/concerns/comable/permitted_attributes.rb +15 -0
- data/app/helpers/comable/application_helper.rb +84 -0
- data/app/helpers/comable/products_helper.rb +82 -0
- data/app/mailers/comable/order_mailer.rb +18 -0
- data/app/models/comable/ability.rb +18 -0
- data/app/models/comable/address.rb +39 -0
- data/app/models/comable/category.rb +72 -0
- data/app/models/comable/image.rb +15 -0
- data/app/models/comable/order.rb +121 -0
- data/app/models/comable/order/associations.rb +22 -0
- data/app/models/comable/order/callbacks.rb +43 -0
- data/app/models/comable/order/morrisable.rb +20 -0
- data/app/models/comable/order/scopes.rb +17 -0
- data/app/models/comable/order/validations.rb +39 -0
- data/app/models/comable/order_item.rb +98 -0
- data/app/models/comable/order_item/csvable.rb +32 -0
- data/app/models/comable/page.rb +30 -0
- data/app/models/comable/payment.rb +87 -0
- data/app/models/comable/payment_method.rb +27 -0
- data/app/models/comable/product.rb +55 -0
- data/app/models/comable/product/csvable.rb +20 -0
- data/app/models/comable/shipment.rb +85 -0
- data/app/models/comable/shipment_method.rb +9 -0
- data/app/models/comable/stock.rb +71 -0
- data/app/models/comable/stock/csvable.rb +26 -0
- data/app/models/comable/store.rb +30 -0
- data/app/models/comable/theme.rb +25 -0
- data/app/models/comable/tracker.rb +17 -0
- data/app/models/comable/user.rb +130 -0
- data/app/models/concerns/comable/cart_owner.rb +94 -0
- data/app/models/concerns/comable/checkout.rb +85 -0
- data/app/models/concerns/comable/importable.rb +67 -0
- data/app/models/concerns/comable/liquidable.rb +12 -0
- data/app/models/concerns/comable/product/search.rb +41 -0
- data/app/models/concerns/comable/ransackable.rb +38 -0
- data/app/models/concerns/comable/role_owner.rb +15 -0
- data/app/models/concerns/comable/sku_choice.rb +19 -0
- data/app/models/concerns/comable/sku_item.rb +17 -0
- data/app/uploaders/image_uploader.rb +7 -0
- data/app/views/comable/order_mailer/complete.text.erb +42 -0
- data/config/initializers/comma.rb +8 -0
- data/config/locales/en.yml +424 -0
- data/config/locales/ja.yml +425 -0
- data/db/migrate/20131214194807_create_comable_products.rb +15 -0
- data/db/migrate/20140120032559_create_comable_users.rb +46 -0
- data/db/migrate/20140502060116_create_comable_stocks.rb +14 -0
- data/db/migrate/20140723175431_create_comable_orders.rb +20 -0
- data/db/migrate/20140723175810_create_comable_order_items.rb +19 -0
- data/db/migrate/20140817194104_create_comable_payment_methods.rb +13 -0
- data/db/migrate/20140921191416_create_comable_shipment_methods.rb +11 -0
- data/db/migrate/20140926063541_create_comable_stores.rb +11 -0
- data/db/migrate/20141024025526_create_comable_addresses.rb +17 -0
- data/db/migrate/20150111031228_create_comable_categories.rb +10 -0
- data/db/migrate/20150111031229_create_comable_products_categories.rb +8 -0
- data/db/migrate/20150112173706_create_comable_images.rb +9 -0
- data/db/migrate/20150423095210_create_comable_shipments.rb +13 -0
- data/db/migrate/20150511171940_create_comable_payments.rb +12 -0
- data/db/migrate/20150513185230_create_comable_trackers.rb +12 -0
- data/db/migrate/20150519080729_create_comable_pages.rb +17 -0
- data/db/migrate/20150612143226_create_comable_themes.rb +15 -0
- data/db/migrate/20150612143445_add_theme_id_to_comable_stores.rb +7 -0
- data/db/seeds.rb +5 -0
- data/db/seeds/comable/users.rb +51 -0
- data/lib/comable/core.rb +48 -0
- data/lib/comable/core/configuration.rb +22 -0
- data/lib/comable/core/engine.rb +50 -0
- data/lib/comable/deprecator.rb +26 -0
- data/lib/comable/payment_provider.rb +14 -0
- data/lib/comable/payment_provider/base.rb +42 -0
- data/lib/comable/payment_provider/general.rb +15 -0
- data/lib/comable/state_machine_patch.rb +32 -0
- data/lib/comma_extractor_extentions.rb +31 -0
- data/lib/generators/comable/install/install_generator.rb +133 -0
- data/lib/generators/comable/install/templates/config/initializers/comable.rb +31 -0
- data/lib/tasks/comable_tasks.rake +4 -0
- metadata +346 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreateComableStocks < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_stocks do |t|
|
4
|
+
t.references :product, null: false
|
5
|
+
t.string :code, null: false
|
6
|
+
t.integer :quantity, null: false, default: 0
|
7
|
+
t.string :sku_h_choice_name
|
8
|
+
t.string :sku_v_choice_name
|
9
|
+
t.timestamps null: false
|
10
|
+
end
|
11
|
+
|
12
|
+
add_index :comable_stocks, :code, unique: true
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class CreateComableOrders < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_orders do |t|
|
4
|
+
t.references :user
|
5
|
+
t.string :guest_token
|
6
|
+
t.string :code
|
7
|
+
t.string :email
|
8
|
+
t.integer :payment_fee, null: false, default: 0
|
9
|
+
t.integer :shipment_fee, null: false, default: 0
|
10
|
+
t.integer :total_price
|
11
|
+
t.references :bill_address
|
12
|
+
t.references :ship_address
|
13
|
+
t.string :state
|
14
|
+
t.datetime :completed_at
|
15
|
+
t.timestamps null: false
|
16
|
+
end
|
17
|
+
|
18
|
+
add_index :comable_orders, :code, unique: true
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class CreateComableOrderItems < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_order_items do |t|
|
4
|
+
t.references :order, null: false
|
5
|
+
t.references :stock, null: false
|
6
|
+
t.string :name, null: false
|
7
|
+
t.string :code, null: false
|
8
|
+
t.integer :price, null: false
|
9
|
+
t.string :sku_h_item_name
|
10
|
+
t.string :sku_v_item_name
|
11
|
+
t.string :sku_h_choice_name
|
12
|
+
t.string :sku_v_choice_name
|
13
|
+
t.integer :quantity, default: 1, null: false
|
14
|
+
t.timestamps null: false
|
15
|
+
end
|
16
|
+
|
17
|
+
add_index :comable_order_items, [:order_id, :stock_id], unique: true
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateComablePaymentMethods < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_payment_methods do |t|
|
4
|
+
t.string :name, null: false
|
5
|
+
t.string :payment_provider_type, null: false
|
6
|
+
t.integer :payment_provider_kind, null: false
|
7
|
+
t.integer :fee, null: false
|
8
|
+
t.integer :enable_price_from
|
9
|
+
t.integer :enable_price_to
|
10
|
+
t.timestamps null: false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class CreateComableShipmentMethods < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_shipment_methods do |t|
|
4
|
+
t.boolean :activated_flag, null: false, default: true
|
5
|
+
t.string :name, null: false
|
6
|
+
t.integer :fee, null: false
|
7
|
+
t.string :traking_url
|
8
|
+
t.timestamps null: false
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateComableAddresses < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_addresses do |t|
|
4
|
+
t.references :user
|
5
|
+
t.string :family_name, null: false
|
6
|
+
t.string :first_name, null: false
|
7
|
+
t.string :zip_code, null: false
|
8
|
+
t.references :state
|
9
|
+
t.string :state_name, null: false
|
10
|
+
t.string :city, null: false
|
11
|
+
t.string :detail
|
12
|
+
t.string :phone_number, null: false
|
13
|
+
t.datetime :last_used_at
|
14
|
+
t.timestamps null: false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateComableShipments < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_shipments do |t|
|
4
|
+
t.references :order, null: false
|
5
|
+
t.references :shipment_method, null: false
|
6
|
+
t.integer :fee, null: false
|
7
|
+
t.string :state, null: false
|
8
|
+
t.string :tracking_number
|
9
|
+
t.datetime :completed_at
|
10
|
+
t.timestamps null: false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class CreateComablePayments < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_payments do |t|
|
4
|
+
t.references :order, null: false
|
5
|
+
t.references :payment_method, null: false
|
6
|
+
t.integer :fee, null: false
|
7
|
+
t.string :state, null: false
|
8
|
+
t.datetime :completed_at
|
9
|
+
t.timestamps null: false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class CreateComableTrackers < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_trackers do |t|
|
4
|
+
t.boolean :activated_flag, null: false, default: true
|
5
|
+
t.string :name, null: false
|
6
|
+
t.string :tracker_id
|
7
|
+
t.text :code, null: false
|
8
|
+
t.string :place, null: false
|
9
|
+
t.timestamps null: false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateComablePages < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_pages do |t|
|
4
|
+
t.string :title, null: false
|
5
|
+
t.text :content, null: false
|
6
|
+
t.string :page_title
|
7
|
+
t.string :meta_description
|
8
|
+
t.string :meta_keywords
|
9
|
+
t.string :slug, null: false
|
10
|
+
t.datetime :published_at
|
11
|
+
|
12
|
+
t.timestamps null: false
|
13
|
+
end
|
14
|
+
|
15
|
+
add_index :comable_pages, :slug, unique: true
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateComableThemes < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :comable_themes do |t|
|
4
|
+
t.string :name, null: false
|
5
|
+
t.string :version, null: false
|
6
|
+
t.string :display
|
7
|
+
t.string :description
|
8
|
+
t.string :homepage
|
9
|
+
t.string :author
|
10
|
+
t.timestamps null: false
|
11
|
+
end
|
12
|
+
|
13
|
+
add_index :comable_themes, [:name, :version], unique: true
|
14
|
+
end
|
15
|
+
end
|
data/db/seeds.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'highline/import'
|
2
|
+
|
3
|
+
def default_email
|
4
|
+
'comable@example.com'
|
5
|
+
end
|
6
|
+
|
7
|
+
def default_password
|
8
|
+
'password'
|
9
|
+
end
|
10
|
+
|
11
|
+
def ask_admin_email
|
12
|
+
if ENV['ADMIN_EMAIL']
|
13
|
+
ENV['ADMIN_EMAIL']
|
14
|
+
else
|
15
|
+
ask("Email [#{default_email}]: ") do |q|
|
16
|
+
q.echo = true
|
17
|
+
q.whitespace = :strip
|
18
|
+
end
|
19
|
+
end.presence || default_email
|
20
|
+
end
|
21
|
+
|
22
|
+
def ask_admin_password
|
23
|
+
if ENV['ADMIN_PASSWORD']
|
24
|
+
ENV['ADMIN_PASSWORD']
|
25
|
+
else
|
26
|
+
ask("Password [#{default_password}]: ") do |q|
|
27
|
+
q.echo = false
|
28
|
+
q.whitespace = :strip
|
29
|
+
end
|
30
|
+
end.presence || default_password
|
31
|
+
end
|
32
|
+
|
33
|
+
def create_admin_user
|
34
|
+
email = ask_admin_email
|
35
|
+
password = ask_admin_password
|
36
|
+
|
37
|
+
if Comable::User.where(email: email).exists?
|
38
|
+
puts "WARNING: The email address has already existed: #{email}"
|
39
|
+
else
|
40
|
+
Comable::User.with_role(:admin).new do |obj|
|
41
|
+
obj.email = email
|
42
|
+
obj.password = password
|
43
|
+
end.save!
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
if Comable::User.with_role(:admin).exists?
|
48
|
+
puts 'Admin user has already been previously created.'
|
49
|
+
else
|
50
|
+
create_admin_user
|
51
|
+
end
|
data/lib/comable/core.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'devise'
|
2
|
+
require 'enumerize'
|
3
|
+
require 'state_machine'
|
4
|
+
require 'ancestry'
|
5
|
+
require 'acts_as_list'
|
6
|
+
require 'carrierwave'
|
7
|
+
require 'cancancan'
|
8
|
+
require 'comma'
|
9
|
+
require 'axlsx_rails'
|
10
|
+
require 'roo'
|
11
|
+
require 'liquid'
|
12
|
+
require 'liquid-rails'
|
13
|
+
require 'friendly_id'
|
14
|
+
|
15
|
+
require 'comable/core/configuration'
|
16
|
+
require 'comable/core/engine'
|
17
|
+
|
18
|
+
require 'comable/payment_provider'
|
19
|
+
require 'comable/state_machine_patch'
|
20
|
+
require 'comable/deprecator'
|
21
|
+
|
22
|
+
require 'comma_extractor_extentions'
|
23
|
+
|
24
|
+
module Comable
|
25
|
+
class << self
|
26
|
+
def setup(&_)
|
27
|
+
yield Comable::Config
|
28
|
+
end
|
29
|
+
|
30
|
+
def translate(key, options = {})
|
31
|
+
I18n.translate("comable.#{key}", options)
|
32
|
+
end
|
33
|
+
|
34
|
+
alias_method :t, :translate
|
35
|
+
|
36
|
+
def app_name
|
37
|
+
'Comable'
|
38
|
+
end
|
39
|
+
|
40
|
+
def homepage
|
41
|
+
'https://github.com/appirits/comable#comable'
|
42
|
+
end
|
43
|
+
|
44
|
+
def license
|
45
|
+
'https://github.com/appirits/comable/blob/master/MIT-LICENSE'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Comable
|
2
|
+
module Core
|
3
|
+
module Configuration
|
4
|
+
mattr_accessor :devise_strategies
|
5
|
+
@@devise_strategies = {
|
6
|
+
user: [:database_authenticatable, :registerable, :recoverable, :rememberable, :trackable]
|
7
|
+
}
|
8
|
+
|
9
|
+
mattr_accessor :products_per_page
|
10
|
+
@@products_per_page = 15
|
11
|
+
|
12
|
+
mattr_accessor :orders_per_page
|
13
|
+
@@orders_per_page = 5
|
14
|
+
|
15
|
+
mattr_accessor :export_xlsx_header_style
|
16
|
+
@@export_xlsx_header_style = { bg_color: '00000000', fg_color: 'ffffffff', alignment: { horizontal: :center }, bold: true }
|
17
|
+
|
18
|
+
mattr_accessor :export_xlsx_style
|
19
|
+
@@export_xlsx_style = nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Comable
|
2
|
+
module Core
|
3
|
+
class Engine < ::Rails::Engine
|
4
|
+
isolate_namespace Comable
|
5
|
+
|
6
|
+
config.generators do |g|
|
7
|
+
g.test_framework :rspec, fixture: true
|
8
|
+
g.fixture_replacement :factory_girl, dir: 'spec/factories'
|
9
|
+
end
|
10
|
+
|
11
|
+
config.autoload_paths << "#{config.root}/app/models/concerns" if Rails::VERSION::MAJOR == 3
|
12
|
+
|
13
|
+
initializer 'comable.congiguration', before: :load_config_initializers do |app|
|
14
|
+
app.config.comable = Comable::Core::Configuration
|
15
|
+
Comable::Config = app.config.comable
|
16
|
+
end
|
17
|
+
|
18
|
+
# refs: https://github.com/plataformatec/devise/wiki/How-To:-Use-devise-inside-a-mountable-engine
|
19
|
+
initializer 'comable.devise.setup', before: :load_config_initializers do
|
20
|
+
Devise.setup do |config|
|
21
|
+
config.mailer_sender = 'comable@example.com'
|
22
|
+
|
23
|
+
require 'devise/orm/active_record'
|
24
|
+
|
25
|
+
config.case_insensitive_keys = [:email]
|
26
|
+
config.strip_whitespace_keys = [:email]
|
27
|
+
config.skip_session_storage = [:http_auth]
|
28
|
+
config.stretches = Rails.env.test? ? 1 : 10
|
29
|
+
config.reconfirmable = true
|
30
|
+
config.password_length = 8..128
|
31
|
+
config.reset_password_within = 6.hours
|
32
|
+
config.sign_out_via = :delete
|
33
|
+
|
34
|
+
# ==> Mountable engine configurations
|
35
|
+
config.router_name = :comable
|
36
|
+
config.parent_controller = 'Comable::ApplicationController'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
initializer 'comable.devise.warden.manager' do
|
41
|
+
Warden::Manager.after_set_user except: :fetch do |record, warden, options|
|
42
|
+
if record.respond_to?(:after_set_user) && warden.authenticated?(options[:scope])
|
43
|
+
record.with_cookies(warden.cookies)
|
44
|
+
record.after_set_user
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
if Rails::VERSION::MAJOR > 3
|
2
|
+
module Comable
|
3
|
+
class Deprecator < ActiveSupport::Deprecation
|
4
|
+
def initialize(deprecation_horizon = '0.4.0', gem_name = 'Comable')
|
5
|
+
super
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
else
|
10
|
+
# TODO: Deprecated itself!
|
11
|
+
module Comable
|
12
|
+
class Deprecator
|
13
|
+
include Singleton
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Module
|
18
|
+
def deprecate_with_deprecator(*method_names)
|
19
|
+
options = method_names.extract_options!
|
20
|
+
options.delete(:deprecator) if options.present?
|
21
|
+
deprecate_without_deprecator
|
22
|
+
end
|
23
|
+
|
24
|
+
alias_method_chain :deprecate, :deprecator
|
25
|
+
end
|
26
|
+
end
|