mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
These config values are relatively static but in some cases they can be called many times in the same request (like rendering a report or a large list of line_items in BOM). These values will now only get fetched from Redis/Postgres once at most per request/job.
195 lines
7.6 KiB
Ruby
195 lines
7.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Admin
|
|
module InjectionHelper
|
|
def admin_inject_enterprise(enterprise)
|
|
admin_inject_json_ams "admin.enterprises",
|
|
"enterprise",
|
|
enterprise,
|
|
Api::Admin::EnterpriseSerializer
|
|
end
|
|
|
|
def admin_inject_enterprises(my_enterprises, all_enterprises)
|
|
admin_inject_json_ams_array("ofn.admin",
|
|
"my_enterprises",
|
|
my_enterprises,
|
|
Api::Admin::BasicEnterpriseSerializer) +
|
|
admin_inject_json_ams_array("ofn.admin",
|
|
"all_enterprises",
|
|
all_enterprises,
|
|
Api::Admin::BasicEnterpriseSerializer)
|
|
end
|
|
|
|
def admin_inject_enterprise_relationships(enterprise_relationships)
|
|
admin_inject_json_ams_array "ofn.admin",
|
|
"enterprise_relationships",
|
|
enterprise_relationships,
|
|
Api::Admin::EnterpriseRelationshipSerializer
|
|
end
|
|
|
|
def admin_inject_payment_methods(payment_methods)
|
|
admin_inject_json_ams_array "admin.paymentMethods",
|
|
"paymentMethods",
|
|
payment_methods,
|
|
Api::Admin::IdNameSerializer
|
|
end
|
|
|
|
def admin_inject_payment_method(payment_method)
|
|
admin_inject_json_ams "admin.paymentMethods",
|
|
"paymentMethod",
|
|
payment_method,
|
|
Api::Admin::PaymentMethodSerializer
|
|
end
|
|
|
|
def admin_inject_shipping_methods(shipping_methods)
|
|
admin_inject_json_ams_array "admin.shippingMethods",
|
|
"shippingMethods",
|
|
shipping_methods,
|
|
Api::Admin::IdNameSerializer
|
|
end
|
|
|
|
def admin_inject_shipping_method(shipping_method)
|
|
admin_inject_json_ams "admin.shippingMethods",
|
|
"shippingMethod",
|
|
shipping_method,
|
|
Api::Admin::ShippingMethodSerializer
|
|
end
|
|
|
|
def admin_inject_shops(shops, opts = {})
|
|
opts.reverse_merge!(module: 'admin.customers')
|
|
admin_inject_json_ams_array opts[:module],
|
|
"shops",
|
|
shops,
|
|
Api::Admin::IdNameSerializer
|
|
end
|
|
|
|
def admin_inject_available_countries(opts = {})
|
|
opts.reverse_merge!(module: 'admin.customers')
|
|
admin_inject_json_ams_array opts[:module],
|
|
'availableCountries',
|
|
available_countries,
|
|
Api::CountrySerializer
|
|
end
|
|
|
|
def admin_inject_hubs(hubs, opts = {})
|
|
opts.reverse_merge!(module: 'ofn.admin')
|
|
admin_inject_json_ams_array opts[:module],
|
|
"hubs",
|
|
hubs,
|
|
Api::Admin::IdNameSerializer
|
|
end
|
|
|
|
def admin_inject_producers(producers, opts = {})
|
|
opts.reverse_merge!(module: 'ofn.admin')
|
|
admin_inject_json_ams_array opts[:module],
|
|
"producers",
|
|
producers,
|
|
Api::Admin::IdNameSerializer
|
|
end
|
|
|
|
def admin_inject_inventory_items(inventory_items, opts = { module: 'ofn.admin' })
|
|
admin_inject_json_ams_array opts[:module],
|
|
"inventoryItems",
|
|
inventory_items,
|
|
Api::Admin::InventoryItemSerializer
|
|
end
|
|
|
|
def admin_inject_column_preferences(opts = {})
|
|
opts.reverse_merge!(module: 'ofn.admin', action: "#{controller_name}_#{action_name}")
|
|
column_preferences = ColumnPreference.for(spree_current_user, opts[:action])
|
|
admin_inject_json_ams_array opts[:module],
|
|
"columns",
|
|
column_preferences,
|
|
Api::Admin::ColumnPreferenceSerializer
|
|
end
|
|
|
|
def admin_inject_currency_config
|
|
admin_inject_json_ams 'admin.utils',
|
|
"currencyConfig",
|
|
{},
|
|
Api::CurrencyConfigSerializer
|
|
end
|
|
|
|
def admin_inject_hub_permissions(hub_permissions)
|
|
render partial: "admin/json/injection_ams", locals: { ngModule: "admin.variantOverrides",
|
|
name: "hubPermissions",
|
|
json: hub_permissions.to_json }
|
|
end
|
|
|
|
def admin_inject_tax_categories(tax_categories, opts = { module: 'ofn.admin' })
|
|
admin_inject_json_ams_array opts[:module],
|
|
"tax_categories",
|
|
tax_categories,
|
|
Api::Admin::TaxCategorySerializer
|
|
end
|
|
|
|
def admin_inject_taxons(taxons)
|
|
admin_inject_json_ams_array "admin.taxons",
|
|
"taxons",
|
|
taxons,
|
|
Api::Admin::TaxonSerializer
|
|
end
|
|
|
|
def admin_inject_variant_overrides(variant_overrides)
|
|
admin_inject_json_ams_array "admin.variantOverrides",
|
|
"variantOverrides",
|
|
variant_overrides,
|
|
Api::Admin::VariantOverrideSerializer
|
|
end
|
|
|
|
def admin_inject_order_cycle_instance(order_cycle)
|
|
render partial: "admin/json/injection_ams",
|
|
locals: { ngModule: 'admin.orderCycles',
|
|
name: 'ocInstance',
|
|
json: "{coordinator_id: '#{order_cycle.coordinator.id}'}" }
|
|
end
|
|
|
|
def admin_inject_order_cycles(order_cycles)
|
|
admin_inject_json_ams_array "admin.orders",
|
|
"orderCycles",
|
|
order_cycles,
|
|
Api::Admin::BasicOrderCycleSerializer,
|
|
current_user: spree_current_user
|
|
end
|
|
|
|
def admin_inject_spree_api_key(spree_api_key)
|
|
render partial: "admin/json/injection_ams",
|
|
locals: { ngModule: 'admin.indexUtils',
|
|
name: 'SpreeApiKey',
|
|
json: "'#{spree_api_key}'" }
|
|
end
|
|
|
|
def admin_inject_available_units
|
|
admin_inject_json "admin.products",
|
|
"availableUnits",
|
|
CurrentConfig.get(:available_units)
|
|
end
|
|
|
|
def admin_inject_json(ng_module, name, data)
|
|
json = data.to_json
|
|
render partial: "admin/json/injection_ams",
|
|
locals: { ngModule: ng_module,
|
|
name:,
|
|
json: }
|
|
end
|
|
|
|
def admin_inject_json_ams(ng_module, name, data, serializer, opts = {})
|
|
json = serializer.new(data, { scope: spree_current_user }.merge(opts)).to_json
|
|
render partial: "admin/json/injection_ams",
|
|
locals: { ngModule: ng_module,
|
|
name:,
|
|
json: }
|
|
end
|
|
|
|
def admin_inject_json_ams_array(ng_module, name, data, serializer, opts = {})
|
|
json = ActiveModel::ArraySerializer.
|
|
new(data, { each_serializer: serializer, scope: spree_current_user }.merge(opts)).to_json
|
|
|
|
render partial: "admin/json/injection_ams",
|
|
locals: { ngModule: ng_module,
|
|
name:,
|
|
json: }
|
|
end
|
|
end
|
|
end
|