59 Commits

Author SHA1 Message Date
Gaetan Craig-Riou
bcf4507795 Only show hub with inventory enabled 2025-12-12 13:04:44 +11:00
David Cook
82f94e3969 Ensure user is loaded before loading data 2025-05-13 15:12:16 +10:00
Carlos Chitty
63168086e7 Autocorrect Style/HashConversion offenses 2025-04-29 14:27:31 -04:00
Maikel Linke
a3ec3e74ae Hide stock level of on-demand inventory items
We changed to tracking stock of on-demand items to be able to place
backorders. This is mostly hidden in the app but was still visible on
the inventory page. Now we are hiding that here, too.
2025-01-09 10:06:04 +11:00
Ahmed Ejaz
98e0b0e703 12346 - fix rubocop rails/pluck errors 2024-06-22 01:45:58 +05:00
Maikel Linke
dad4061ff9 Style Rails/ToFormattedS 2023-04-14 16:32:39 +10:00
Luis Ramos
e52937c113 Use rubocop auto correct to add frozen string literal to all files
This is an unsafe auto corection, we will need to trust our build here
2021-06-17 23:07:26 +01:00
Luis Ramos
cb8fd2131e Use body: nil instead of deprecated nothing:
Ideally we would be using render head status but it's issuing quite a lot of double render problems, we can improve later
2021-03-16 23:13:58 +00:00
Matt-Yorkley
af8d497433 Fix handling of params in variant overrides bulk update actions 2021-03-11 12:06:00 +00:00
Pau Perez
aef0d28dd1 Do not load unmodified VOs from DB
Closes #6727.

This avoids the authorization of all the VOs of the hub, which will go
through VOs that may have become invalid due to their underlying product
not belonging to the supplier the hub has permissions with (or any other
data integrity issue).

This is utterly confusing for the user who is only given a generic error
and doesn't understand what's wrong with the particular VO they changed,
while it may be fine after all. What's more, this often results in
a customer support request, which then may end up with a dev finding out
which VO is broken.

Also, there's no point in loading them from DB if the users didn't touch
them.
2021-02-02 15:39:23 +01:00
Pau Perez
0ee1e2cd72 Eager load taggings related to variant overrides
This removes an N+1 with taggings but doesn't solve the one with tags.
Using `includes(taggings: :base_tags)` based on
47da5036de/lib/acts_as_taggable_on/taggable.rb (L83-L84)
wasn't enough to solve it and I got to stop here. This is scope-creeping
too much.
2021-02-01 16:38:40 +01:00
Pau Perez
ee4f2a7b02 Remove N+1 on variants and products
We get from an initial INNER JOIN with variants and products to fetch
the variant overrides + N queries like:

```sql
SELECT "spree_variants".* FROM "spree_variants" WHERE
"spree_variants"."deleted_at" IS NULL AND "spree_variants"."id" = $1
LIMIT 1  [["id", 1545]]

SELECT "spree_products".* FROM "spree_products" WHERE
"spree_products"."id" = $1 LIMIT 1  [["id", 604]]
```

to the same initial INNER JOIN + just 2 queries like:

```sql
SELECT "spree_variants".* FROM "spree_variants" WHERE
"spree_variants"."deleted_at" IS NULL AND "spree_variants"."id" IN
(1551, 1554)

SELECT "spree_products".* FROM "spree_products" WHERE
"spree_products"."deleted_at" IS NULL AND "spree_products"."id" IN (606,
607)
```
2021-02-01 16:38:40 +01:00
Pau Perez
060530cda8 Do not fetch VOs with deleted variant
In the line below we filter them out in Ruby so it's a waste of
resources. The fundamental difference is that `#includes` and
`#references` results in LEFT JOINs, whereas `#joins` results in INNER
JOIN, and because there's a default scope on `deleted_at IS NULL`, these
are not included in the result set.

This however, requires us to move away from the current algorithm but
unfortunately we can't refactor it completely yet.

Before:

```sql
SELECT *
  FROM "variant_overrides"
  LEFT OUTER
  JOIN "spree_variants"
    ON "spree_variants"."id"              =  "variant_overrides"."variant_id"
   AND "spree_variants"."deleted_at" IS NULL
  LEFT OUTER
  JOIN "spree_products"
    ON "spree_products"."id"              =  "spree_variants"."product_id"
   AND "spree_products"."deleted_at" IS NULL
 WHERE "variant_overrides"."permission_revoked_at" IS NULL
   AND "variant_overrides"."hub_id" IN (
    SELECT "enterprises"."id"
      FROM "enterprises"
    INNER
      JOIN "enterprise_roles"
        ON "enterprise_roles"."enterprise_id" =  "enterprises"."id"
    WHERE (enterprise_roles.user_id          =  ?)
      AND (sells                             != 'none')
 ORDER BY name)
```

After:

```sql
SELECT "variant_overrides".*
  FROM "variant_overrides"
 INNER
  JOIN "spree_variants"
    ON "spree_variants"."id"              =  "variant_overrides"."variant_id"
   AND "spree_variants"."deleted_at" IS NULL
 INNER
  JOIN "spree_products"
    ON "spree_products"."id"              =  "spree_variants"."product_id"
   AND "spree_products"."deleted_at" IS NULL
 WHERE "variant_overrides"."permission_revoked_at" IS NULL
   AND "variant_overrides"."hub_id" IN (
    SELECT "enterprises"."id"
      FROM "enterprises"
    INNER
      JOIN "enterprise_roles"
        ON "enterprise_roles"."enterprise_id" =  "enterprises"."id"
    WHERE (enterprise_roles.user_id          =  ?)
      AND (sells                             != 'none')
 ORDER BY name)
```

This is covered in the test suite by
spec/controllers/admin/variant_overrides_controller_spec.rb:72. It keeps
passing so we're good to go.
2021-02-01 14:47:51 +01:00
Luis Ramos
ed0441dc41 Fix a few more rubocop issues 2021-01-14 09:41:07 +00:00
Luis Ramos
96a351ad0e Adapt usage of Sets to their new location 2021-01-14 09:41:07 +00:00
Luis Ramos
0fb9f44dda Make all controllers use new Admin::ResourceController 2020-12-03 15:32:20 -08:00
Luis Ramos
f54abbd376 Fix rubocop issues 2020-06-22 17:39:20 +01:00
Luis Ramos
8a61257547 Rename all before_filter to before_action, it's the same function with a new name 2020-06-22 13:11:57 +01:00
Luis Ramos
7e12142f91 Collection must be after load_data so that hubs are already available for VOs calculation 2020-04-28 16:31:11 +01:00
Luis Ramos
839b373b5c Merge branch 'master' into 3-0-stable-Apr28 2020-04-28 13:40:19 +01:00
Luis Ramos
a049e7a433 Add product to includes to avoid N+1 queries to fetch products when VO authorization is done right after this 2020-04-03 14:48:06 +01:00
Luis Ramos
e64d573337 Revert accidental push of a byebug statement with the direct translations push to master 🙈 2020-04-03 12:06:39 +01:00
Luis Ramos
7858a26e5e Update all locales with the latest Transifex translations 2020-04-03 12:03:40 +01:00
Luis Ramos
a261ae118d Add missing permitted attributes to variant overrides controller 2020-03-21 19:14:26 +00:00
Luis Ramos
7320b38b93 Add missing attributes to variant override controller 2020-03-21 19:14:26 +00:00
Luis Ramos
0151b5ee9a Permit extra needed params in variant overrides controller 2020-03-21 19:14:26 +00:00
Luis Ramos
5b37e89738 Handle strong params in variant_overrides_controller
We use a simpler way to permit on array within params here and change products_controller to the same style
2020-03-21 19:14:26 +00:00
Matt-Yorkley
df1299b290 Fix user not yet loaded in prepend_before_filter 2020-02-22 11:06:51 +00:00
Matt-Yorkley
c0ecdb9e3a Fix deprecated #includes in join without reference
DEPRECATION WARNING: It looks like you are eager loading table(s) (one of: variant_overrides, enterprises, enterprise_roles) that are referenced in a string SQL snippet. For example:

    Post.includes(:comments).where("comments.title = 'foo'")

Currently, Active Record recognizes the table in the string, and knows to JOIN the comments table to the query, rather than loading comments in a separate query. However, doing this without writing a full-blown SQL parser is inherently flawed. Since we don't want to write an SQL parser, we are removing this functionality. From now on, you must explicitly tell Active Record when you are referencing a table from a string:

    Post.includes(:comments).where("comments.title = 'foo'").references(:comments)

If you don't rely on implicit join references you can disable the feature entirely by setting `config.active_record.disable_implicit_join_references = true`. (called from collection at /home/user/Github/openfoodnetwork/app/controllers/admin/variant_overrides_controller.rb:77)
2020-02-22 11:06:51 +00:00
luisramos0
86b0d71c7e Result of rubocop auto-correct and rebuilding rubocop_manual_todo 2019-05-28 12:57:29 +01:00
luisramos0
340cbe5947 Eager load variants with variant overrides to avoid n+1 in the following line 2019-05-02 11:10:53 +01:00
luisramos0
a68b5eaf22 Fix bug in Variant Overrides controller. It was validating authorization for variant overrides of deleted variants 2019-04-17 15:31:19 +01:00
niko
f65d3c2815 fix rubocop issue 2018-10-04 03:30:32 +02:00
niko
3ae38178a3 Move query from variant_overrides_controller to its model scope 2018-10-04 02:43:02 +02:00
Matt-Yorkley
91521dc2b0 Improve import_date queries 2018-05-26 19:34:20 +01:00
Matt-Yorkley
d9c720e89a Tidy up import_date 2018-05-26 19:34:20 +01:00
Matt-Yorkley
c2c42e1d9a Product Import refactor 2018-05-26 19:34:20 +01:00
Matt-Yorkley
1ed49d397e Refactor PI 2018-05-26 19:34:20 +01:00
Matt-Yorkley
3a6f316ede Codeclimate refactor 2018-05-26 19:34:20 +01:00
Matt-Yorkley
b3c906b3a4 Product Import v3 with asynchronous processing
Fixed spec

Quick spec tweak
2018-05-26 19:34:19 +01:00
Matt-Yorkley
ffbb67d480 PI inventories additions 2018-05-26 19:34:19 +01:00
Rob Harrington
7bb58342fc Rubocop: Auto-correct Style/EmptyLineBetweenDefs offences 2017-06-23 16:49:08 +10:00
Rob Harrington
f06d909c23 WIP: Adding infrastructure to show/hide variants + overrides using inventory items 2016-03-02 12:10:22 +11:00
Rob Harrington
669642292b Refactoring VariantOverridesController#bulk_reset to only reset VOs for a specified hub 2016-01-15 09:07:51 +11:00
Rob Harrington
0bbae19b41 Variant Overrides Index: User can manually reset inheritance 2016-01-15 09:07:51 +11:00
Steve Pettitt
25454d3e97 Added new fields to fix VO deletion feature specs 2016-01-15 09:07:49 +11:00
Rob Harrington
94785d4157 Fixing authorization for VariantOverridesController#bulk_reset 2016-01-15 09:07:49 +11:00
Rob Harrington
d01da727f0 Removing :bulk_update action from actions allowed on nil object, using collection_actions methods on controller instead 2016-01-15 09:07:49 +11:00
Steve Pettitt
0ee078e232 Added toggle to enable/disable reset stock. Updated specs 2016-01-15 09:07:48 +11:00
Steve Pettitt
2921958788 Variant override controller spec added 2016-01-15 09:07:48 +11:00