Commit Graph

928 Commits

Author SHA1 Message Date
Luis Ramos
951787d456 Merge pull request #3987 from mkllnk/3978-optimise-products-cache
3978 Optimise products cache
2019-07-03 19:59:07 +01:00
Pau Pérez Fabregat
b3b66d5825 Merge pull request #3970 from mkllnk/444-feature-toggle-use-env
Toggle features via env instead of initializer
2019-07-03 16:27:01 +02:00
Maikel Linke
04b07a1ff5 Further optimise querying affected exchanges
The implementation queried the database for each incoming variant that
was changed. This rewrite combines ActiveRecord relations so that it
creates only one query. This saves another 5-10% of execution time when
updating enterprise fees on production instances.
2019-07-02 18:42:01 +10:00
Maikel Linke
0da7c93bc6 Collect affected exchanges more efficiently
When an incoming exchange of an order cycle changes, the ProductsCache
queries all affected outgoing exchanges to update them. It was creating
a big collection of exchanges with duplicates and then calling `uniq`.
That call was hitting a custom implementation of `eql?` which is very
inefficient. And since `Exchange.eql?` is ignoring the order cycle id,
it was probably filtering too many exchanges from the collection.

Fixed bug: If two order cycles sell exactly the same variants to the
same shop, the two outgoing exchanges are seen as equal. When the
variants change, ProductsCache would only update one of those two
exchanges, leaving one order cycle out of sync. This case is very rare.
It only happens if there is a shop with two active order cycles selling
exactly the same.

The new uniqueness test looks only at the attributes that are later used
to refresh the cache. I measured a page speed improvement from 90
seconds to 3 seconds (30 times faster).
2019-07-02 18:29:50 +10:00
Maikel Linke
bfe41d4cbc Extract method to simplify 2019-07-02 18:29:50 +10:00
Maikel Linke
3e6e0b73ee Style products cache
The `private` modifier doesn't affect class methods. Class methods have
to be declared as private separately. Also using more guard clauses,
brackets and linebreaks.
2019-07-02 18:29:49 +10:00
Maikel Linke
5d3dbca9c3 Toggle features via env instead of initializer
A FeatureToggle could be switched via a class_eval in an initializer.
The initializer was installed via ofn-install. We want to get rid of
custom, untracked initializers. Here I'm changing the FeatureToggle
class to use environment variables instead.

This change needs to be followed up with a change in ofn-install to use
the new environment variable. It affects only Australian production.
2019-06-26 11:43:22 +10:00
François Turbelin
5dcf456c90 Remove old Rake task for sample data 2019-06-25 11:18:48 +02:00
Matt-Yorkley
60e67ae1a4 Run all setup steps on startup
It's a bit dirty, but it works :)
2019-06-25 11:18:48 +02:00
François Turbelin
c5addb8c1d Fix comment spacings, gloupsss 2019-06-25 11:18:48 +02:00
François Turbelin
b4fe44510b Tune up the Rake task 2019-06-25 11:18:48 +02:00
François Turbelin
9df5d78f27 Add a Rake task in order to setup dev env 2019-06-25 11:18:48 +02:00
Maikel
5b0c8bbaef Merge pull request #3836 from Matt-Yorkley/fast_and_furious2
Improve /shops, /producers, and /groups performance
2019-06-21 15:02:19 +10:00
luisramos0
b025df1798 Fix a few more rubocop issues 2019-06-18 10:52:56 +01:00
luisramos0
ba91abd20e Adapt exchanges.with_any_variant scope to rails 4 2019-06-18 10:40:49 +01:00
Luis Ramos
91401446a5 Merge pull request #3915 from mkllnk/3844-permalink-conflicts
Consider deleted products when creating permalinks
2019-06-14 13:20:35 +01:00
Matt-Yorkley
45d65baf8e Improve shops performance 2019-06-12 09:47:01 +01:00
Maikel Linke
a10bb5acbd Consider deleted products when creating permalinks
https://github.com/openfoodfoundation/openfoodnetwork/issues/3844

Spree's implementation and our implementation to create a unique
permalink failed to notice conflicts with soft-deleted products. This
patch looks at deleted products as well.
2019-06-11 18:20:41 +10:00
Kristina Lim
75fdfb3c6a Remove some usage of guard clauses for OC update 2019-05-28 21:32:25 +08:00
Kristina Lim
56a2347ea0 Extract removal of unauthorized OC exchange attributes to method 2019-05-28 21:29:20 +08:00
Kristina Lim
ea8d189d6c Bulk update OC variant changes in OC form 2019-05-28 21:27:43 +08:00
luisramos0
07854cf372 Fix a few problems introduced by rubocop auto correct 2019-05-28 12:57:29 +01:00
luisramos0
86b0d71c7e Result of rubocop auto-correct and rebuilding rubocop_manual_todo 2019-05-28 12:57:29 +01:00
Drumstickx
414ae58cbd Rubocop changes. 2019-05-21 16:48:02 +02:00
Drumstickx
c162654757 Reduce code duplication. 2019-05-21 16:46:40 +02:00
Drumstickx
29f68ed5d8 Rubocop changes. 2019-05-21 14:51:52 +02:00
Drumstickx
2f83d02168 Reduce code duplication. 2019-05-19 22:36:55 +02:00
Drumstickx
0e6a576e33 Fix user_id IS NOT NULL check. 2019-05-19 22:05:34 +02:00
Drumstickx
4204943a7c Styling. 2019-05-19 22:04:44 +02:00
Drumstickx
1246c3b6b9 Styling. 2019-05-19 18:57:09 +02:00
Drumstickx
ec2db4dd2a Fixed sql injection vulnerability in users_and_enterprises_report. 2019-05-19 17:58:57 +02:00
Luis Ramos
3b2e614c57 Merge pull request #3734 from luisramos0/2-0-validate-distribution
Removing a variant from OC will prevent user with that variant in the cart from checking out
2019-05-02 16:12:41 +01:00
Luis Ramos
0f00f48f13 Merge pull request #3634 from luisramos0/2-0-fix-sample-data
[Spree Upgrade] Fix new sample data in v2
2019-04-11 23:07:15 +01:00
luisramos0
44b0592223 Move OrdercycleDistributedVariants from lib/open_food_network to app/services 2019-04-11 21:37:08 +01:00
luisramos0
96ee527f0c Rename distribution_change_validator to order_cycle_distributed_variants 2019-04-11 21:14:01 +01:00
luisramos0
ecc60f3b61 Merge branch 'master' into 2-0-stable-Mar29 2019-04-05 15:47:46 +01:00
luisramos0
527cfc1601 Merge branch 'master' into 2-0-stable-Mar29 2019-03-29 13:48:49 +00:00
sdbowen
0f7ef2671f Add shipping method name to orders detail report
Added column allows users to see the shipping method of each order.
2019-03-28 16:08:10 -06:00
luisramos0
249e2bc9e1 Merge branch '2-0-stable' into 2-0-fix-sample-data 2019-03-26 15:50:16 +00:00
Kristina Lim
807cdb4746 Code style changes for Customer Totals report 2019-03-25 07:46:32 +08:00
Kristina Lim
4a95578db2 Use name helpers in Customer Totals report 2019-03-25 07:46:31 +08:00
Kristina Lim
7c7d61fbc5 Simplify some logic for Customer Totals report
Line items belong to a single order.
2019-03-25 07:46:30 +08:00
Kristina Lim
c088fb9a49 Use shorter syntax for Customer Totals report 2019-03-25 07:46:30 +08:00
Kristina Lim
46e7090d11 Group report by variant and use variant SKU
This groups the Customer Totals report by variant too (among others,
including by product), and then changes the report to use the variant
SKU not the product SKU.

This adds a spec for customer totals grouping and details, which
replaces the test specific to the SKU column.
2019-03-25 07:45:32 +08:00
luisramos0
c1d14686a6 Merge branch 'master' into 2-0-stable-Mar22 2019-03-22 10:55:17 +00:00
Luis Ramos
8d2d5a8708 Merge pull request #3579 from luisramos0/sanitize_data
Add sanitize and truncate data tasks
2019-03-22 10:29:57 +00:00
luisramos0
e2f5515412 Fix sample data by setting on_demand in the product variant, setting product.on_demand is not possible in v2 2019-03-21 13:13:50 +00:00
luisramos0
88335c7f6c Fix sample data in v2 by adapting to the fact that shipping methods can now have multiple zones 2019-03-21 13:12:44 +00:00
luisramos0
98a262f86e Fix sample data in v2 by setting a Default shipping category in both products and shipping methods 2019-03-21 13:12:03 +00:00
Maikel Linke
42ee4b9f42 Remove usage of ProductDistribution which is dead
Sample data was failing since:
https://github.com/openfoodfoundation/openfoodnetwork/pull/3570
2019-03-21 13:11:05 +00:00