Compare commits

...

916 Commits

Author SHA1 Message Date
Pau Pérez Fabregat
8a359ba1e4 Merge pull request #7086 from Matt-Yorkley/adjustments-index
[Adjustments] Add index on spree_adjustments.order_id
2021-03-15 21:52:40 +01:00
Pau Pérez Fabregat
7b6e94057c Merge pull request #7119 from Matt-Yorkley/flaky-timezones
Allow timezone from ENV vars, but use UTC as default
2021-03-15 17:53:15 +01:00
Matt-Yorkley
c045efb89d Merge pull request #7112 from Matt-Yorkley/admin-adjustments-controller
Ensure order association is set correctly when adding admin adjustments
2021-03-15 16:51:10 +01:00
Matt-Yorkley
4d7029f0c9 Allow timezone from ENV vars, but use UTC as default 2021-03-15 14:55:22 +00:00
Matt-Yorkley
657291df90 Update order total when editing admin adjustments 2021-03-15 11:46:14 +00:00
Pau Pérez Fabregat
162ae4ff24 Merge pull request #7103 from andrewpbrett/update-ci
Combine model jobs in CI
2021-03-15 12:29:09 +01:00
Matt-Yorkley
3219ea231d Ensure order association is set correctly when adding admin adjustments 2021-03-15 11:18:14 +00:00
Pau Pérez Fabregat
71aec23c0d Merge pull request #7064 from coopdevs/abstract-order-balance
Abstract order balance in a simple PORO
2021-03-15 11:35:45 +01:00
Matt-Yorkley
8531d82f02 Merge pull request #7102 from andrewpbrett/fix-ci
Update miniracer to 0.3.1
2021-03-14 15:20:00 +01:00
Andy Brett
9bcefd3605 Merge pull request #7083 from openfoodfoundation/dependabot/bundler/activerecord-import-1.0.8
Bump activerecord-import from 1.0.7 to 1.0.8
2021-03-13 11:27:49 -08:00
Andy Brett
c45bb470e7 Merge pull request #7066 from luisramos0/legacy_user
Remove dead current_api_user helper
2021-03-13 11:17:05 -08:00
Andy Brett
29db3ed3ad Merge pull request #7078 from mkllnk/coverage
Disable code coverage by default
2021-03-13 11:16:47 -08:00
dependabot[bot]
135f5c63e0 Bump activerecord-import from 1.0.7 to 1.0.8
Bumps [activerecord-import](https://github.com/zdennis/activerecord-import) from 1.0.7 to 1.0.8.
- [Release notes](https://github.com/zdennis/activerecord-import/releases)
- [Changelog](https://github.com/zdennis/activerecord-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zdennis/activerecord-import/compare/v1.0.7...v1.0.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-13 19:00:54 +00:00
Andy Brett
89e0fd8f0a combine model jobs 2021-03-13 10:30:15 -08:00
Andy Brett
902cd92f96 update miniracer 2021-03-13 10:28:09 -08:00
Andy Brett
54825aa264 Merge pull request #7099 from Matt-Yorkley/rails-5-fixes
Rails 5.0 fixes
2021-03-13 07:51:48 -08:00
Andy Brett
b7f9fb8d72 send full redirect URL to stripe 2021-03-13 10:58:33 +00:00
Andy Brett
6996001580 add defensive checking for stripe response 2021-03-13 10:58:30 +00:00
Matt-Yorkley
707d089419 Update type handling in PaymentMethodsController and add tests 2021-03-13 10:57:54 +00:00
Matt-Yorkley
6d51ece69c Tidy up payment method params 2021-03-13 10:57:51 +00:00
Matt-Yorkley
00c7ab1ebb Add index on spree_adjustments.order_id 2021-03-12 10:12:56 +00:00
Matt-Yorkley
274440acdd Migrate database
This is the first migration with Rails 5. Some of the formatting has changed. Done in a separate commit for clarity.
2021-03-12 10:11:55 +00:00
Maikel Linke
62234c0708 Configure SimpleCov as recommended by author
The configuration can go into the central .simplecov file and then we
just need to `require` simplecov to start the coverage process. This
also avoids duplicating the config if we want to start simplecov from
the rails server to cover the lines used in by the server in feature
specs.

https://github.com/simplecov-ruby/simplecov#using-simplecov-for-centralized-config
2021-03-12 11:08:38 +11:00
Maikel Linke
3ee54b1bfa Disable code coverage by default
We can activate it on demand:

  COVERAGE=1 bundle exec rspec

We often run specs in chunks but simplecov needs all tests to be run.
2021-03-12 11:03:12 +11:00
Matt-Yorkley
2c0e9d77b8 Merge pull request #6832 from openfoodfoundation/rails-5-upgrade
Rails 5.0 -> master
2021-03-11 20:20:36 +01:00
Matt-Yorkley
321da76005 Update regression test
This error is no longer thrown by the payment object creation
2021-03-11 12:23:00 +00:00
Matt-Yorkley
6bb85e9acd Fix payment and shipment states issue
For some reason the order objects were stale here when calling order.update! from either a payment or shipment callback, which was overwriting those states as nil on the order.
2021-03-11 12:23:00 +00:00
Matt-Yorkley
ac37db7e00 Update test setup in OrderCycleManagement report 2021-03-11 12:23:00 +00:00
Matt-Yorkley
04a13a4f6f Update Boolean typecasting to Rails 5 version 2021-03-11 12:23:00 +00:00
Matt-Yorkley
7bc63e6e81 Re-add db2fog
Turns out it works with Rails 5
2021-03-11 12:23:00 +00:00
Matt-Yorkley
096b693461 Update Gemfile.lock 2021-03-11 12:23:00 +00:00
Matt-Yorkley
6c00fe44ae Revert order permissions changes 2021-03-11 12:19:55 +00:00
Matt-Yorkley
7924865ff8 Set clearer version 2021-03-11 12:19:55 +00:00
Matt-Yorkley
8d8df447c6 Remove debugging 2021-03-11 12:19:55 +00:00
Matt-Yorkley
25139178b5 Fix appending to collection (take 2) 2021-03-11 12:19:55 +00:00
Matt-Yorkley
c827d77236 Fix reloading completed_order_with_fees factory 2021-03-11 12:19:55 +00:00
Matt-Yorkley
4542a3464e Fix params in Admin::ProductsController 2021-03-11 12:19:55 +00:00
Matt-Yorkley
4c2871e572 Refactor and fix params issues in Admin::OrderCyclesController 2021-03-11 12:19:55 +00:00
Matt-Yorkley
64b52527fd Fix params issues in Admin::SubsciptionsController 2021-03-11 12:19:55 +00:00
Matt-Yorkley
bbbce4e6c9 Fix params issues in Api::EnterprisesController 2021-03-11 12:19:55 +00:00
Matt-Yorkley
c2c8dbfb38 Add strong params in Api::ExchangeProductsController and deal with boolean issue 2021-03-11 12:19:55 +00:00
Matt-Yorkley
9e83cb65db Set concurrency spec to pending
It's not working at all in Rails 5. There's new concurrency modules in Rails 5, we should investigate them...
2021-03-11 12:19:55 +00:00
Matt-Yorkley
3748d92bc8 Fix modifying taxons in ShopsCaching spec
This was triggering an error via the callback Spree::Product#remove_previous_primary_taxon_from_taxons
2021-03-11 12:19:55 +00:00
Matt-Yorkley
aea8d1dc99 Fix appending to Relation in in EnterpriseFeesController 2021-03-11 12:19:55 +00:00
Matt-Yorkley
95b5586f9b Using strings for keys in FormAdapter spec 2021-03-11 12:19:55 +00:00
Matt-Yorkley
e11d1e6cdb Add strong params to Spree::Admin::SearchController 2021-03-11 12:19:55 +00:00
Matt-Yorkley
6087a4b969 Fix rendering of javascript template
The erb tags in this partial were not being parsed as erb, breaking various other things on the page.
2021-03-11 12:19:55 +00:00
Matt-Yorkley
688b3c98d7 Use strong params in variants search 2021-03-11 12:19:55 +00:00
Matt-Yorkley
4ff56ce625 Update deprecated use of #uniq in OrderCyle scopes 2021-03-11 12:19:55 +00:00
Matt-Yorkley
ccf0556711 Fix params mangling in Admin::EnterprisesController 2021-03-11 12:19:55 +00:00
Matt-Yorkley
83278b17db Fix test controller issue 2021-03-11 12:19:55 +00:00
Matt-Yorkley
190770b9df Update query filter params handling 2021-03-11 12:19:55 +00:00
Matt-Yorkley
bd408e02b0 Update OrderCyclesController params usage 2021-03-11 12:19:55 +00:00
Matt-Yorkley
0393ea4219 Update variant params in CartController 2021-03-11 12:19:55 +00:00
Matt-Yorkley
ec597aab1a Fix params issue in ReportsController expectation 2021-03-11 12:19:55 +00:00
Matt-Yorkley
e46fe3735b Fix params issue in controller specs 2021-03-11 12:19:54 +00:00
Matt-Yorkley
1911d25959 Fix Sets::ModelSet spec 2021-03-11 12:19:54 +00:00
Matt-Yorkley
29c34060e9 Add tight pinning on wkhtmltopdf-binary gem version 2021-03-11 12:19:54 +00:00
Matt-Yorkley
2ac4ace3e8 Fix params issues in UserPasswordsController 2021-03-11 12:19:54 +00:00
Matt-Yorkley
dcecfaea87 Fix params issues in OrderCyclescontroller spec 2021-03-11 12:19:54 +00:00
Matt-Yorkley
31df28b348 Fix params mangling in Api::ProductController 2021-03-11 12:19:54 +00:00
Matt-Yorkley
304da48d50 Remove dual boot 2021-03-11 12:19:54 +00:00
Matt-Yorkley
f28cd4a4e5 Adapt checkout FormDataAdapter 2021-03-11 12:06:00 +00:00
Matt-Yorkley
fd1b14ca4a Fix string/integer issues in states controller spec 2021-03-11 12:06:00 +00:00
Matt-Yorkley
ff722e6969 Fix cookie issues in i18n helper spec 2021-03-11 12:06:00 +00:00
Matt-Yorkley
5e3d646f8c Fix params access in reports views 2021-03-11 12:06:00 +00:00
Matt-Yorkley
dcf982c1c3 Fix params mangling issues in SubscriptionsController 2021-03-11 12:06:00 +00:00
Matt-Yorkley
af8d497433 Fix handling of params in variant overrides bulk update actions 2021-03-11 12:06:00 +00:00
Matt-Yorkley
7bf4f88034 Fix params issues in Api::TaxonsController 2021-03-11 12:06:00 +00:00
Matt-Yorkley
c5feb19e5b Fix use of ActiveRecord::Type::Boolean#type_cast_from_database
This method longer exists.
2021-03-11 12:06:00 +00:00
Matt-Yorkley
009844bfe7 Update expected params in reports controller tests 2021-03-11 12:06:00 +00:00
Matt-Yorkley
0f1142b5c4 Fix more broken specs related to accessing params hash 2021-03-11 12:06:00 +00:00
Matt-Yorkley
ed09db6003 Fix broken specs related to accessing params hash 2021-03-11 12:06:00 +00:00
Matt-Yorkley
2fdb1861a6 Fix uses of ActionController::TestResponse in specs
This class has moved / changed slightly.
2021-03-11 12:06:00 +00:00
Matt-Yorkley
5bd1e9c37c Add rails-controller-testing gem
```
Spree::Admin::PaymentMethodsController#create and #update can create a payment method of a valid type
      Failure/Error: expect(response).to redirect_to spree.edit_admin_payment_method_path(assigns(:payment_method))

      NoMethodError:
        assigns has been extracted to a gem. To continue using it,
                add `gem 'rails-controller-testing'` to your Gemfile.
      # ./spec/controllers/spree/admin/payment_methods_controller_spec.rb:41:in `block (3 levels) in <module:Spree>'
```
2021-03-11 12:06:00 +00:00
Matt-Yorkley
120a2c4f3a Merge pull request #7036 from Matt-Yorkley/adjustments-callbacks
[Adjustments] Reduce adjustments callbacks
2021-03-11 12:59:34 +01:00
Matt-Yorkley
29c5703161 Improve OrdersHelper spec and delete dead code
The removed test here was checking for adjustments that have an amount of zero and are eligible. If the amount is zero, it will already be marked as ineligible.
2021-03-11 11:22:35 +00:00
Matt-Yorkley
c5a47b51a6 Update order totals during CheckoutController#update 2021-03-11 11:20:01 +00:00
Matt-Yorkley
714e4f7896 Update test setup in checkout helper spec 2021-03-11 11:20:01 +00:00
Matt-Yorkley
90712647b1 Update totals when processing a return 2021-03-11 11:20:01 +00:00
Matt-Yorkley
4c64aaed77 Remove callbacks in Adjustment that call order.update! 2021-03-11 11:20:01 +00:00
Matt-Yorkley
791a47d170 Merge pull request #6858 from Matt-Yorkley/adjustments-shipping-cost
[Adjustments] Move shipping adjustment from order to shipment
2021-03-11 12:17:14 +01:00
Luis Ramos
12d5120629 Remove dead current_api_user helper 2021-03-11 00:40:51 +00:00
Pau Pérez Fabregat
41adacbffb Merge pull request #7056 from jibees/6978-unit-prices-transform-question-mark-to-cross-to-close-it
Transform question mark to cross to close it (unit price)
2021-03-10 17:08:05 +01:00
Pau Pérez Fabregat
e341b04487 Merge pull request #6902 from openfoodfoundation/setup-postgres-gh-actions
Setup Github Actions as CI
2021-03-10 16:59:59 +01:00
Pau Perez
42d0f16773 Abstract order balance in a simple PORO
This new class lets us [Branch by
abstraction](https://www.martinfowler.com/bliki/BranchByAbstraction.html)
by encapsulating an order's balance. As a result, that's the only place
where we need to check the feature toggle, instead of every place where
`#outstanding_balance` is called (quite some). That would be very hard
to review and it'd be more likely to introduce bugs.

What I like about this is that we also managed to group together the
data and logic that we had spread in a few places and have it nicely
encapsulated. So, where we had a number, we'll now have an object.

Once we fully change all `#outstanding_balance` consumers to use this
new abstraction we'll be able to remove the methods this class replaces.
These are: `Spree::Order#outstanding_balance?`,
`Spree::Order#display_oustanding_balance` and
`OrderHelper.outstanding_balance_label`.

This is just the first step. I'll follow this up with a PR per
page/mailer/whatever where we use the balance to replace it with an
instance of `OrderBalance`. That is, splitting up what I explored in
https://github.com/openfoodfoundation/openfoodnetwork/pull/6959 but in
very small and manageable pieces.
2021-03-10 16:09:09 +01:00
Pau Pérez Fabregat
82257185c4 Merge pull request #7057 from Matt-Yorkley/missing-tax-translation
Update untranslated string
2021-03-10 10:42:14 +01:00
Pau Pérez Fabregat
66201c6618 Merge pull request #7055 from coopdevs/remove-js-capabilities-to-test
Remove unnecessary JS-capabilites for test
2021-03-10 09:53:23 +01:00
Andy Brett
05a074d33a Merge pull request #7041 from Matt-Yorkley/adjustments-set-eligibility
[Adjustments] Remove Adjustment#set_eligibility
2021-03-09 13:33:21 -08:00
Pau Pérez Fabregat
332d7b8482 Merge pull request #7044 from filipefurtad0/transaction_fees_specs
adds coverage to transacion fees/payment methods
2021-03-09 18:52:58 +01:00
Matt-Yorkley
11d5c6a2f1 Update untranslated string
This translation already exists, we just weren't using it in this view.
2021-03-09 17:19:40 +00:00
Jean-Baptiste Bellet
2414161210 Remove useless and error-prone css specification
- This shouldn't be a general specification, but eventually used inside context. By default, no need to this.
2021-03-09 17:25:32 +01:00
Jean-Baptiste Bellet
5239b259d0 Transform question mark to cross when tooltip is open
- Behavior consistent w/ price_breakdown feature.
2021-03-09 17:22:07 +01:00
Pau Pérez Fabregat
64a2493cc7 Merge pull request #7001 from coopdevs/add-bullet-for-development
Set up Bullet for development and testing
2021-03-09 16:47:53 +01:00
Pau Pérez Fabregat
3543e7f005 Merge pull request #6894 from jibees/6878-question-mark-icon-as-svg
Use svg icon instead of CSS `before` for the question mark icon
2021-03-09 16:47:30 +01:00
Pau Pérez Fabregat
4a6de97935 Merge pull request #7054 from coopdevs/removes-puts-debugging
Remove puts debugging in tests
2021-03-09 16:27:32 +01:00
Pau Perez
5b31e06cab Add Github Actions badge to README 2021-03-09 16:22:46 +01:00
Pau Perez
8301f2d550 Output RSpec profiling data
This shows things like:

```
Top 10 slowest examples (32.34 seconds, 87.1% of total time):

  As a site administrator
  I want to configure the site content
 fills in a setting shows the result on the home page
    19.12 seconds ./spec/features/admin/configuration/content_spec.rb:17
  States creating and editing states should allow an admin to edit existing states
    7.36 seconds ./spec/features/admin/configuration/states_spec.rb:40
  Tax Rates while editing can be deleted
    1.22 seconds ./spec/features/admin/configuration/tax_rates_spec.rb:58
  States creating and editing states should allow an admin to create states for non default countries
    1.16 seconds ./spec/features/admin/configuration/states_spec.rb:52
  States creating and editing states should show validation errors
    1 seconds ./spec/features/admin/configuration/states_spec.rb:68
  Zones edit existing zone
    0.90067 seconds ./spec/features/admin/configuration/zones_spec.rb:42
```

and

```
Top 8 slowest example groups:

  As a site administrator
  I want to configure the site content
    6.64 seconds average (19.93 seconds / 3 examples) ./spec/features/admin/configuration/content_spec.rb:5
  States
    2.42 seconds average (9.68 seconds / 4 examples) ./spec/features/admin/configuration/states_spec.rb:5
  Tax Rates
    0.51138 seconds average (2.56 seconds / 5 examples) ./spec/features/admin/configuration/tax_rates_spec.rb:4
  Zones
    0.49488 seconds average (1.48 seconds / 3 examples) ./spec/features/admin/configuration/zones_spec.rb:5
  Tax Categories
    0.32438 seconds average (1.3 seconds / 4 examples) ./spec/features/admin/configuration/tax_categories_spec.rb:5
  Taxonomies
    0.30578 seconds average (1.22 seconds / 4 examples) ./spec/features/admin/configuration/taxonomies_spec.rb:5
  General Settings
    0.28868 seconds average (0.57737 seconds / 2 examples) ./spec/features/admin/configuration/general_settings_spec.rb:5
  Mail Methods
    0.26415 seconds average (0.26415 seconds / 1 example) ./spec/features/admin/configuration/mail_methods_spec.rb:5

Finished in 37.11 seconds (files took 6.27 seconds to load)
26 examples, 0 failures
```

which is essential to speed up our test suite.
2021-03-09 16:22:46 +01:00
Andy Brett
5e19e5e83d use UTC 2021-03-09 16:22:46 +01:00
Andy Brett
b5b751fa39 fix admin feature spec 2021-03-09 16:22:46 +01:00
Andy Brett
bc7469c7aa fix order test 2021-03-09 16:22:46 +01:00
Pau Perez
a5fbd6bb57 DRY downloads directory path 2021-03-09 16:22:46 +01:00
Pau Perez
0e4f9d18d4 Fix browser's download path configuration
The CI build can't find the downloaded file and fails like:

```
2) enterprise fee summaries csv downloads smoke test for generation of report based on permissions when logged in as enterprise user generates file with data for the enterprise
     Failure/Error: sleep 0.1 until downloaded?

     Timeout::Error:
       execution expired
     # ./spec/support/downloads_helper.rb:34:in `sleep'
     # ./spec/support/downloads_helper.rb:34:in `block in wait_for_download'
     # ./spec/support/downloads_helper.rb:33:in `wait_for_download'
     # ./spec/support/downloads_helper.rb:11:in `downloaded_filename'
     # ./engines/order_management/spec/features/order_management/reports/enterprise_fee_summaries_spec.rb:119:in `block (5 levels) in <top (required)>'
     # ./engines/order_management/spec/features/order_management/reports/enterprise_fee_summaries_spec.rb:80:in `block (4 levels) in <top (required)>'
     # ./spec/support/downloads_helper.rb:22:in `with_empty_downloads_folder'
     # ./engines/order_management/spec/features/order_management/reports/enterprise_fee_summaries_spec.rb:80:in `block (3 levels) in <top (required)>'
```
2021-03-09 16:19:27 +01:00
Andy Brett
ae3b186bcd remove hardcoded time string in T&C spec 2021-03-09 16:19:27 +01:00
Pau Perez
42c9050a17 Fix cookie retrieval in feature spec
I also took the chance to reduce some redundant assertions.
2021-03-09 16:19:27 +01:00
Pau Perez
c61fc25e9f Disable Knapsack only to Github workflow 2021-03-09 16:19:27 +01:00
Pau Perez
838563a80b Skip code coverage in Github Actions
No need to slow down the build with partial coverage analysis that won't
be merged in a single report for the whole build.

Also, this makes builds fail because we are not running the whole suite.
2021-03-09 16:19:27 +01:00
Pau Perez
3cef261de1 Force RSpec's output to be in color
While also simplifying the configuration using the default `progress`
RSpec formatter.
2021-03-09 16:18:29 +01:00
Pau Perez
1f0b597120 Run tests in a Github workflow
Things to be aware of:

  * Allows manually triggering GH workflow. See:
  https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch.
  * Installs versions in the yarn.lock and prevents updates to the yarn.lock.
  * Yarn and npm come pre-installed in Github's runner VMs. See
https://docs.github.com/en/actions/guides/building-and-testing-nodejs#installing-dependencies.
  * We use the latest LTS Node version so it can read ES6 syntax `let`.
  * Karma tests require RAILS_ENV. In lib/tasks/karma.rake we default to
  `test` so that means someone else is setting `RAILS_ENV` before that.
  We'll need to find out who so we can avoid this.
  * We run the CI build only on pushes to any branch. This the
  redundancy of all build jobs due to the `push` and `pull_request`
  events. I still don't see what's the exact difference between these
  two events. See:
  https://docs.github.com/en/actions/reference/events-that-trigger-workflows.
2021-03-09 16:18:04 +01:00
filipefurtad0
f26a7befab removes default value assertions 2021-03-09 15:18:02 +00:00
Pau Perez
c986583d09 Remove unnecessary JS-capabilites for test
This gets this file execution time from ~10s to ~2s.
2021-03-09 16:04:29 +01:00
Pau Perez
333c669fbf Remove puts debugging in tests 2021-03-09 16:01:55 +01:00
Pau Pérez Fabregat
6b111561e8 Merge pull request #7000 from Matt-Yorkley/dead-code-tax-total
DCOTW: Order#tax_total
2021-03-08 16:57:59 +01:00
Matt-Yorkley
c99a9f4ee1 Remove Adjustment#set_eligibility 2021-03-08 15:29:04 +00:00
Jean-Baptiste Bellet
ac70bbfd9b Add missing closing curly bracket 2021-03-08 15:58:26 +01:00
Pau Pérez Fabregat
876c378e4f Merge pull request #7028 from Matt-Yorkley/dead-code-available-shipment
DCOTW: Order#has_available_shipment
2021-03-08 15:25:39 +01:00
Pau Pérez Fabregat
696a429bcb Merge pull request #7030 from Matt-Yorkley/dcotw-item-count
DCOTW: Order#item_count
2021-03-08 15:23:09 +01:00
Pau Pérez Fabregat
367882951b Merge pull request #7039 from openfoodfoundation/dependabot/bundler/webmock-3.12.1
Bump webmock from 3.12.0 to 3.12.1
2021-03-08 13:43:17 +01:00
Pau Pérez Fabregat
da2b36449d Merge pull request #7040 from openfoodfoundation/transifex
Transifex
2021-03-08 13:42:40 +01:00
filipefurtad0
3b81f51fe4 adds coverage to transacion fees/payment methods 2021-03-08 12:35:35 +00:00
Transifex-Openfoodnetwork
e7e812bee7 Updating translations for config/locales/en_FR.yml 2021-03-08 20:28:18 +11:00
Transifex-Openfoodnetwork
a7919c72e3 Updating translations for config/locales/fr.yml 2021-03-08 20:27:46 +11:00
Transifex-Openfoodnetwork
096b31f783 Updating translations for config/locales/en_GB.yml 2021-03-08 20:19:16 +11:00
dependabot[bot]
844c8b85d9 Bump webmock from 3.12.0 to 3.12.1
Bumps [webmock](https://github.com/bblimke/webmock) from 3.12.0 to 3.12.1.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.12.0...v3.12.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-08 05:58:15 +00:00
Matt-Yorkley
af29c67ea5 Update Order#ship_total 2021-03-06 14:14:56 +00:00
Andy Brett
5f01fcd902 Merge pull request #7017 from openfoodfoundation/dependabot/bundler/geocoder-1.6.6
Bump geocoder from 1.6.5 to 1.6.6
2021-03-05 20:32:09 -08:00
Matt-Yorkley
f894473e03 Delete dead code: Order#item_count 2021-03-06 00:04:46 +00:00
Matt-Yorkley
68e752ef32 Delete dead code: Order#has_available_shipment 2021-03-05 23:42:08 +00:00
Pau Perez
d814f98bb6 Update all locales with the latest Transifex translations 2021-03-05 13:46:14 +01:00
Pau Pérez Fabregat
2f81af3818 Merge pull request #7010 from openfoodfoundation/transifex
Transifex
2021-03-05 13:43:13 +01:00
Transifex-Openfoodnetwork
918db44925 Updating translations for config/locales/it.yml 2021-03-05 21:58:06 +11:00
Transifex-Openfoodnetwork
f5e6a98360 Updating translations for config/locales/ru.yml 2021-03-05 20:55:59 +11:00
Transifex-Openfoodnetwork
7db560341b Updating translations for config/locales/es.yml 2021-03-05 18:43:17 +11:00
Transifex-Openfoodnetwork
cc65aba292 Updating translations for config/locales/ca.yml 2021-03-05 18:42:59 +11:00
Pau Pérez Fabregat
b354a4226a Merge pull request #7009 from coopdevs/remove-subs-performance-specs
Remove subs-related performance specs
2021-03-05 08:37:13 +01:00
dependabot[bot]
6033c276d8 Bump geocoder from 1.6.5 to 1.6.6
Bumps [geocoder](https://github.com/alexreisner/geocoder) from 1.6.5 to 1.6.6.
- [Release notes](https://github.com/alexreisner/geocoder/releases)
- [Changelog](https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alexreisner/geocoder/compare/v1.6.5...v1.6.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-05 05:30:15 +00:00
Andy Brett
7bf1bd6287 Merge pull request #6995 from coopdevs/add-good-migrations
Add gem to watch after data migrations
2021-03-04 12:09:22 -08:00
Transifex-Openfoodnetwork
2ea9664ecb Updating translations for config/locales/en_US.yml 2021-03-05 05:13:51 +11:00
Transifex-Openfoodnetwork
dfdc97cfa4 Updating translations for config/locales/de_DE.yml 2021-03-05 05:00:27 +11:00
Pau Pérez Fabregat
674f0f87a3 Merge pull request #6528 from mprieger/5546-cart-page-last-item-deletion
Fix users removing last item of confirmed order on /cart page
2021-03-04 17:27:51 +01:00
Pau Pérez Fabregat
982c3d2215 Merge pull request #6965 from andrewpbrett/fix-sca-snail
Fix #6964: don't try to complete a failed payment
2021-03-04 17:26:24 +01:00
Pau Pérez Fabregat
ff239802b6 Merge pull request #6982 from andrewpbrett/canceled-order-payments
Fix #5018: Allow access to payments tab for canceled orders
2021-03-04 17:25:30 +01:00
Matt-Yorkley
3396319f29 Fix test setup in Order spec 2021-03-04 14:27:02 +00:00
Matt-Yorkley
9deadc8ae1 Simplify order.adjustment_total sum 2021-03-04 14:27:02 +00:00
Matt-Yorkley
1afcd70510 Simplify Order#total_tax 2021-03-04 14:27:02 +00:00
Matt-Yorkley
9cf8c84a7d Add model definition to migration 2021-03-04 14:27:02 +00:00
Matt-Yorkley
ff58e2da54 Use AR syntax in queries 2021-03-04 14:27:02 +00:00
Matt-Yorkley
b1bf2487e2 Update adjustment scope use in Xero Invoices report 2021-03-04 14:27:02 +00:00
Matt-Yorkley
e33950721c Change misleading method name in Xero Invoices code 2021-03-04 14:27:02 +00:00
Matt-Yorkley
945605e3a8 Rename Shipment #adjustment to #fee_adjustment for clarity 2021-03-04 14:27:02 +00:00
Matt-Yorkley
a5929b489a Ensure order object has line items in bulk_invoice_service 2021-03-04 14:27:02 +00:00
Matt-Yorkley
eed71d795e Use persisted shipment in shipping adjustment test 2021-03-04 14:27:02 +00:00
Matt-Yorkley
57b54637e3 Ensure order factory selects shipping rates correctly 2021-03-04 14:27:02 +00:00
Matt-Yorkley
434c9f1c7c Fix test setup in adjustments_spec
The order association is required for these objects to be found
2021-03-04 14:27:02 +00:00
Matt-Yorkley
0e2c1d0317 Refresh shipment rates when changing shipping method cost
The test setup here wasn't correctly updating he shipment's shipping_rates, so they were still zero.
2021-03-04 14:27:02 +00:00
Matt-Yorkley
55db911334 Update sales tax report 2021-03-04 14:27:02 +00:00
Matt-Yorkley
f956aca82f Use shipping fee adjustment as single source of truth, and persist it on the shipment :cost field when it changes. 2021-03-04 14:27:02 +00:00
Matt-Yorkley
bcbea618e8 Fix adjustment spec
The tested adjustment isn't found correctly if it isn't associated to the order...
2021-03-04 14:27:02 +00:00
Matt-Yorkley
7fb5bf217f Update checkout spec adjustment fetching 2021-03-04 14:27:02 +00:00
Matt-Yorkley
aa16c64f20 Update Order#finalize! to include all adjustments 2021-03-04 14:27:02 +00:00
Matt-Yorkley
c0b33de0f0 Move #adjustment_label to shipment 2021-03-04 14:27:02 +00:00
Matt-Yorkley
e67c29872a Update OrderMailer spec 2021-03-04 14:27:02 +00:00
Matt-Yorkley
86110f2f40 Improve shipment factory 2021-03-04 14:27:02 +00:00
Matt-Yorkley
f0de09da84 Update order correctly in ReturnAuthorizationsController 2021-03-04 14:27:02 +00:00
Matt-Yorkley
833aae23e5 Update admin adjustments controller 2021-03-04 14:27:02 +00:00
Matt-Yorkley
f94f424b63 Update fee fetching in controller tests 2021-03-04 14:27:02 +00:00
Matt-Yorkley
65bcf83552 Migrate shipping fee adjustments to shipments 2021-03-04 14:27:02 +00:00
Matt-Yorkley
c093701adf Improve UserBalanceCalculator spec test setup
Previously we were creating order objects that were not actually complete, and manually setting the `completed_at` field. This meant the order objects being tested were not actually in the correct state, ie: pre-checkout orders that had not been processed properly.
2021-03-04 14:27:02 +00:00
Matt-Yorkley
d4c9d70caa Update Adjustment specs 2021-03-04 14:27:02 +00:00
Matt-Yorkley
045cdec23c Update OrderDetailedSerializer 2021-03-04 14:27:02 +00:00
Matt-Yorkley
80aefa8e73 Update OrderTaxAdjustmentsFetcher 2021-03-04 14:27:02 +00:00
Matt-Yorkley
02fb2c6a55 Update CheckoutHelper 2021-03-04 14:27:02 +00:00
Matt-Yorkley
f0aa43e198 Update Order shipment adjustments fetching 2021-03-04 14:27:01 +00:00
Matt-Yorkley
00f116f35f Update Order::Updater to include shipment adjustments 2021-03-04 14:27:01 +00:00
Matt-Yorkley
1aec324269 Update shipment cost spec 2021-03-04 14:27:01 +00:00
Matt-Yorkley
f5d3e22730 Add shipment_adjustments association to Order 2021-03-04 14:27:01 +00:00
Matt-Yorkley
9ed6ae588f Update EnterpriseFeeSummary report adjustment scopes 2021-03-04 14:27:01 +00:00
Matt-Yorkley
4c57addb02 Move shipping fee adjustment from the order to the shipment 2021-03-04 14:27:01 +00:00
Matt-Yorkley
551cb9a2d2 Remove Shipment#cost method
Cost is now recorded on the shipment record itself
2021-03-04 14:27:01 +00:00
Matt-Yorkley
81cdc2eac1 Bring in Shipment#update_amounts method 2021-03-04 14:27:01 +00:00
Matt-Yorkley
2a0f132b8b Improve ShippingMethod -> Shipment association
5a54a0b6b0
2021-03-04 14:27:01 +00:00
Matt-Yorkley
f33c881503 Set default 0 on spree_shipments cost 2021-03-04 14:27:01 +00:00
Pau Pérez Fabregat
1ad3f38942 Merge pull request #6981 from drummer83/missing-translations
Updated translations to close #6666
2021-03-04 15:01:36 +01:00
Pau Pérez Fabregat
d856e006ec Merge pull request #6989 from andrewpbrett/fix-group-map-icons
Update path to +1 map icon
2021-03-04 11:31:17 +01:00
Pau Pérez Fabregat
ab5bb03b04 Merge pull request #7007 from openfoodfoundation/dependabot/bundler/ddtrace-0.46.0
Bump ddtrace from 0.45.0 to 0.46.0
2021-03-04 10:40:26 +01:00
Pau Pérez Fabregat
5c0e55a281 Merge pull request #7005 from openfoodfoundation/transifex
Transifex
2021-03-04 10:39:47 +01:00
Pau Perez
07481575dc Remove subs-related performance specs
This is a rather naive take on assessing performance, it slows down the
test suite and clutters the output with timings without providing value
in return.

Stems from
https://github.com/openfoodfoundation/openfoodnetwork/pull/6902.
2021-03-04 10:33:20 +01:00
dependabot[bot]
9bd85804b9 Bump ddtrace from 0.45.0 to 0.46.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.45.0 to 0.46.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.45.0...v0.46.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-04 05:33:57 +00:00
Transifex-Openfoodnetwork
baa0f82ede Updating translations for config/locales/de_DE.yml 2021-03-04 08:12:09 +11:00
Transifex-Openfoodnetwork
546fa6e6c4 Updating translations for config/locales/es.yml 2021-03-04 06:37:35 +11:00
Transifex-Openfoodnetwork
72f9f944af Updating translations for config/locales/ca.yml 2021-03-04 06:37:13 +11:00
Pau Pérez Fabregat
5985344166 Merge pull request #6999 from coopdevs/add-missing-translation-key
Add missing shipment_states I18n key
2021-03-03 17:55:01 +01:00
Pau Pérez Fabregat
094ef28456 Merge pull request #6996 from filipefurtad0/payment_method_spec
fixes a pending test case for hubs w/ several distributors
2021-03-03 16:48:10 +01:00
Pau Pérez Fabregat
3539ceaec1 Merge pull request #6986 from coopdevs/fix-pending-locale-spec
Fix old pending locale-related spec
2021-03-03 16:15:03 +01:00
Pau Perez
ed41888ba4 Set up Bullet for development and testing
This will log any N+1 it finds, pointing to the line causing it and
a way to solve it, aka. which `#includes` to add. Like so

```
web_1     | GET /admin/order_cycles.json?ams_prefix=index&q%5Borders_close_at_gt%5D=Sun+Jan+31+2021+00:00:00+GMT%2B0100+(Central+European+Standard+Time)
web_1     | USE eager loading detected
web_1     |   OrderCycle => [:coordinator]
web_1     |   Add to your query: .includes([:coordinator])
web_1     | Call stack
web_1     |   /usr/src/app/app/serializers/api/admin/index_order_cycle_serializer.rb:41:in `coordinator'
web_1     |   /usr/src/app/app/controllers/spree/admin/base_controller.rb:98:in `render_as_json'
web_1     |   /usr/src/app/app/controllers/admin/order_cycles_controller.rb:17:in `block (2 levels) in index'
web_1     |   /usr/src/app/app/controllers/admin/order_cycles_controller.rb:14:in `index'
web_1     |   bin/rails:4:in `require'
web_1     |   bin/rails:4:in `<main>'
```

We gave a try at Bullet long ago and abandoned it because it's not
a silver bullet (pun intended) due to false positives. However, it's
pretty clear that this won't happen often; we have endless N+1 still to fix.

I recently experienced how, relying on Bullet made it just extra 30s to fix
additional N+1s other than the one I was fixing. Usually, finding the
culprit line takes me more of 30min.
2021-03-03 13:50:03 +01:00
Pau Pérez Fabregat
d7ee7e02dd Merge pull request #6987 from coopdevs/remove-delegation-specs
Remove unnecessary delegation specs
2021-03-03 13:44:00 +01:00
Pau Pérez Fabregat
433b9c030c Merge pull request #6988 from coopdevs/remove-unused-rspec-filtering
Remove unused RSpec specs filtering
2021-03-03 13:43:36 +01:00
Matt-Yorkley
d17ff38a7e Delete Order#tax_total
#display_tax_total is not used anywhere, #tax_total is used in once place but it's not needed.
2021-03-03 11:26:32 +00:00
Pau Perez
c83cb554d5 Add missing shipment_states I18n key
I spot `[missing "en.spree.shipment_states.canceled" translation]` while
checking the transactions tab on /account for an order that was
canceled.
2021-03-03 12:17:14 +01:00
filipefurtad0
1c018bdd90 fixes a pending test case for hubs w/ several distributors 2021-03-03 08:59:56 +00:00
Pau Pérez Fabregat
03e969fa51 Merge pull request #6993 from openfoodfoundation/dependabot/bundler/delayed_job_web-1.4.4
Bump delayed_job_web from 1.4.3 to 1.4.4
2021-03-03 08:30:53 +01:00
Pau Pérez Fabregat
1cfee50300 Merge pull request #6983 from openfoodfoundation/dependabot/bundler/rubocop-1.11.0
Bump rubocop from 1.10.0 to 1.11.0
2021-03-03 08:30:29 +01:00
Pau Perez
63f82bd142 Add gem to watch after data migrations
> This gem prevents Rails from auto-loading app code while it's running
migrations, preventing the common mistake of referencing ActiveRecord
models from migration code.

This will make us stop relying on @mkllnk to have robust data migrations
that don't cause trouble in the future.
2021-03-03 08:22:32 +01:00
dependabot[bot]
b9bf084136 Bump delayed_job_web from 1.4.3 to 1.4.4
Bumps [delayed_job_web](https://github.com/ejschmitt/delayed_job_web) from 1.4.3 to 1.4.4.
- [Release notes](https://github.com/ejschmitt/delayed_job_web/releases)
- [Changelog](https://github.com/ejschmitt/delayed_job_web/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ejschmitt/delayed_job_web/compare/v1.4.3...v1.4.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-03 05:17:59 +00:00
Andy Brett
5966557b59 update path to +1 map icon 2021-03-02 08:53:13 -08:00
Pau Perez
742b54376d Remove unused RSpec specs filtering
This was introduced ages ago and became dead code as no specs use these
filters anymore.

It stems from the work done in
https://github.com/openfoodfoundation/openfoodnetwork/pull/6902/.
2021-03-02 14:40:44 +01:00
Pau Perez
d439a5074b Remove unnecessary delegation specs
The custom RSpec matchers they use raises the following deprecation
warning

```
Using `stub` from rspec-mocks' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` instead. Called from /home/runner/work/openfoodnetwork/openfoodnetwork/spec/support/matchers/delegate_matchers.rb:22:in `block (2 levels) in <top (required)>'.
```

It's not worth maintaining those matchers to test such
implementation-related thing. Whether or not any delegations work is
something that will be caught by integration tests or directly stubbing
the collaborator object's methods.

This stems from
https://github.com/openfoodfoundation/openfoodnetwork/pull/6902.
2021-03-02 11:54:46 +01:00
Pau Perez
45d0501ca6 Fix old pending locale-related spec
This is the correct behavior: if you set a language that is not
available, it'll fallback to English.
2021-03-02 11:42:45 +01:00
dependabot[bot]
54409265d0 Bump rubocop from 1.10.0 to 1.11.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.10.0...v1.11.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-02 05:20:56 +00:00
Andy Brett
ad8973d74b add messages object to order controller 2021-03-01 21:01:34 -08:00
Andy Brett
6b1a1a59b1 update cart spec 2021-03-01 20:42:06 -08:00
Andy Brett
72b7fe723f fix indentation 2021-03-01 20:42:05 -08:00
Andy Brett
5751e247bd Update app/assets/javascripts/darkswarm/controllers/edit_bought_order_controller.js.coffee 2021-03-01 20:42:05 -08:00
Andy Brett
3725ba0fc4 Update app/assets/javascripts/darkswarm/services/cart.js.coffee 2021-03-01 20:42:05 -08:00
Matthew Rieger
651bdad7b9 Fix users removing last item of confirmed order on /cart page 2021-03-01 20:42:05 -08:00
Andy Brett
a02065b66f allow access to payments tab for canceled orders 2021-03-01 19:51:50 -08:00
Andy Brett
3b15e0ee15 only complete the payment if it is in a completable state 2021-03-01 18:51:14 -08:00
Konrad
97d2c0e255 Updated translations to close #6666 2021-03-02 01:02:36 +01:00
Andy Brett
b3610e035d Merge pull request #6961 from openfoodfoundation/dependabot/bundler/i18n-js-3.8.1
Bump i18n-js from 3.8.0 to 3.8.1
2021-03-01 09:34:49 -08:00
Pau Pérez Fabregat
b701098dee Merge pull request #6975 from openfoodfoundation/dependabot/bundler/webdrivers-4.6.0
Bump webdrivers from 4.5.0 to 4.6.0
2021-03-01 17:29:02 +01:00
Pau Pérez Fabregat
6d42f93f8a Merge pull request #6979 from openfoodfoundation/transifex
Transifex
2021-03-01 17:27:45 +01:00
Jean-Baptiste Bellet
d6cf69df34 Fix vertical alignment using flex
- Firefox displayed the icon above the legend
 - Use `display: flex;` and `align-items: center;` to vertical align icon and text
2021-03-01 16:40:02 +01:00
Jean-Baptiste Bellet
36573701dc Use svg icon instead of CSS before
CSS can be sometimes a little bit inconsistent to create such an icon. Using SVG is better solution to create beautiful icon.
2021-03-01 16:39:53 +01:00
Transifex-Openfoodnetwork
8e477fef9e Updating translations for config/locales/es.yml 2021-03-02 02:15:01 +11:00
Transifex-Openfoodnetwork
ab8ac24797 Updating translations for config/locales/ca.yml 2021-03-02 02:14:44 +11:00
Pau Pérez Fabregat
c7577e29d6 Merge pull request #6977 from openfoodfoundation/transifex
Transifex
2021-03-01 16:13:43 +01:00
Transifex-Openfoodnetwork
79d4f4127a Updating translations for config/locales/ru.yml 2021-03-02 01:33:23 +11:00
Transifex-Openfoodnetwork
5682f87893 Updating translations for config/locales/en_FR.yml 2021-03-01 23:56:18 +11:00
Transifex-Openfoodnetwork
846cfe0050 Updating translations for config/locales/fr.yml 2021-03-01 23:56:05 +11:00
Pau Pérez Fabregat
7f4849da25 Merge pull request #6971 from Matt-Yorkley/dead-code-assassin
Remove dead code Order#display_ship_total
2021-03-01 10:07:30 +01:00
Pau Pérez Fabregat
8d31ba2677 Merge pull request #6966 from Matt-Yorkley/dead-code-totals
Dead code of the week
2021-03-01 10:05:31 +01:00
Pau Pérez Fabregat
68aafb9d4d Merge pull request #6967 from Matt-Yorkley/spree-missing-translations
Add missing Spree translation keys
2021-03-01 10:04:49 +01:00
Transifex-Openfoodnetwork
ea2139b9f2 Updating translations for config/locales/ca.yml 2021-03-01 20:04:42 +11:00
Pau Pérez Fabregat
9389de9aa1 Merge pull request #6970 from andrewpbrett/flaky-spec
Remove duplicate specs
2021-03-01 10:03:23 +01:00
Transifex-Openfoodnetwork
a6f72d3311 Updating translations for config/locales/es.yml 2021-03-01 20:02:18 +11:00
Transifex-Openfoodnetwork
066708fad0 Updating translations for config/locales/ca.yml 2021-03-01 20:01:37 +11:00
Pau Pérez Fabregat
be2dc2df09 Merge pull request #6976 from openfoodfoundation/dependabot/bundler/webmock-3.12.0
Bump webmock from 3.11.3 to 3.12.0
2021-03-01 10:00:07 +01:00
Pau Pérez Fabregat
a0aeb1ceb4 Merge pull request #6889 from mkllnk/6102-footer
Emphasise ways to get help in user emails
2021-03-01 09:59:18 +01:00
Transifex-Openfoodnetwork
7647d961fe Updating translations for config/locales/en_FR.yml 2021-03-01 19:46:21 +11:00
Transifex-Openfoodnetwork
0e888f1793 Updating translations for config/locales/fr.yml 2021-03-01 19:45:55 +11:00
Transifex-Openfoodnetwork
fbd24fac43 Updating translations for config/locales/en_GB.yml 2021-03-01 18:03:38 +11:00
dependabot[bot]
eace7822b6 Bump webmock from 3.11.3 to 3.12.0
Bumps [webmock](https://github.com/bblimke/webmock) from 3.11.3 to 3.12.0.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.11.3...v3.12.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-01 06:41:44 +00:00
dependabot[bot]
dbccc95aaf Bump webdrivers from 4.5.0 to 4.6.0
Bumps [webdrivers](https://github.com/titusfortner/webdrivers) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/titusfortner/webdrivers/releases)
- [Changelog](https://github.com/titusfortner/webdrivers/blob/master/CHANGELOG.md)
- [Commits](https://github.com/titusfortner/webdrivers/compare/v4.5.0...v4.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-01 06:39:15 +00:00
Matt-Yorkley
4c3ff402e6 Remove dead code Order#display_ship_total 2021-02-28 13:49:38 +00:00
Andy Brett
448c0e0ce3 Remove duplicate specs
The second of these is flaky; moreover, the OrdersController doesn't specifically have a method that they're testing. I think the ready_to_capture behaviors is adequately covered by 006236b8dd/spec/serializers/api/admin/order_serializer_spec.rb (L39-L68)
2021-02-27 15:05:11 -08:00
Matt-Yorkley
1f2e9a6b58 Add missing Spree translation keys 2021-02-27 12:07:17 +00:00
Matt-Yorkley
16eff698df Remove dead code; Spree::Order #line_item_adjustment_totals and #price_adjustment_totals 2021-02-27 11:56:44 +00:00
Andy Brett
006236b8dd Merge pull request #6919 from andrewpbrett/authorize-payment-links
Show authorization links in separate table
2021-02-26 18:31:26 -08:00
Andy Brett
855e38cd73 add I18n 2021-02-26 07:47:58 -08:00
Pau Perez
c3179b4304 Restore table's top rounded corners 2021-02-26 07:44:09 -08:00
Pau Perez
2146ed277f Fix table header spacing when status is hidden 2021-02-26 07:44:09 -08:00
Pau Perez
ad147ed8f5 Make payment auth table as wide as table below
This makes this page look a bit more consistent. Note I also had to fix
the price in the value column.

To do this I pulled out the width property from `.orders` which defines
too many things. This way we can make the auth table full-width while
not being tied to all the other properties which are not needed in this
table. Then, `.orders`'s nested `.order1, .order2` etc. column class
become useless.
2021-02-26 07:44:09 -08:00
Pau Perez
cbb919f28b Left-align table with table below 2021-02-26 07:44:09 -08:00
Pau Perez
8696882549 Refactor payment auth button to fit into table row
This looks a bit more cohesive with the rest of the row cells while
still standing out from the rest.
2021-02-26 07:44:08 -08:00
Andy Brett
7bbfb6b8db use rpsec subject in payments spec 2021-02-26 07:44:08 -08:00
Andy Brett
c23fb27031 remove unnecessary join 2021-02-26 07:44:08 -08:00
Andy Brett
7bb49b51fd use scope on payment model 2021-02-26 07:44:08 -08:00
Andy Brett
e5eb8f97f9 add basic feature spec for authorisation table 2021-02-26 07:44:08 -08:00
Andy Brett
83bc9d2a12 add unit spec for Payments query 2021-02-26 07:44:08 -08:00
Andy Brett
0b245ad7b1 make user attr private 2021-02-26 07:44:08 -08:00
Andy Brett
ee351d91a9 show authorization links in separate table 2021-02-26 07:44:08 -08:00
Matt-Yorkley
f1fca874a1 Update all locales with the latest Transifex translations 2021-02-26 13:13:59 +00:00
dependabot[bot]
e6b5775327 Bump i18n-js from 3.8.0 to 3.8.1
Bumps [i18n-js](https://github.com/fnando/i18n-js) from 3.8.0 to 3.8.1.
- [Release notes](https://github.com/fnando/i18n-js/releases)
- [Changelog](https://github.com/fnando/i18n-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fnando/i18n-js/compare/v3.8.0...v3.8.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-26 05:25:43 +00:00
Pau Pérez Fabregat
4116066a75 Merge pull request #6725 from Matt-Yorkley/adjustments-tax-totals
[Adjustments] Order tax totals
2021-02-25 19:24:23 +01:00
Pau Pérez Fabregat
5ded4ed938 Merge pull request #6958 from Matt-Yorkley/remove-weird-file
Remove dead file
2021-02-25 15:56:04 +01:00
Matt-Yorkley
d92de62a0b I guess this was committed by mistake 2021-02-25 12:56:07 +00:00
Pau Pérez Fabregat
404ec7bf92 Merge pull request #6950 from andrewpbrett/fix-nil-enterprise-category
Fix #6949: Add default icon value if enterprise.category is nil
2021-02-25 13:20:10 +01:00
Pau Pérez Fabregat
a6d6530852 Merge pull request #6957 from openfoodfoundation/dependabot/bundler/webmock-3.11.3
Bump webmock from 3.11.2 to 3.11.3
2021-02-25 13:19:54 +01:00
Pau Pérez Fabregat
dc4ec4d69d Merge pull request #6955 from openfoodfoundation/transifex
Transifex
2021-02-25 11:49:49 +01:00
dependabot[bot]
5cf7fbd48c Bump webmock from 3.11.2 to 3.11.3
Bumps [webmock](https://github.com/bblimke/webmock) from 3.11.2 to 3.11.3.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.11.2...v3.11.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-25 05:31:20 +00:00
Transifex-Openfoodnetwork
2c66184f73 Updating translations for config/locales/es_US.yml 2021-02-25 09:31:10 +11:00
Transifex-Openfoodnetwork
b81686133e Updating translations for config/locales/ca.yml 2021-02-25 09:31:08 +11:00
Transifex-Openfoodnetwork
a4ea792325 Updating translations for config/locales/en_GB.yml 2021-02-25 09:31:07 +11:00
Transifex-Openfoodnetwork
4c28bcf0d1 Updating translations for config/locales/fr_CA.yml 2021-02-25 09:31:05 +11:00
Transifex-Openfoodnetwork
3cbb14af04 Updating translations for config/locales/en_CA.yml 2021-02-25 09:31:02 +11:00
Transifex-Openfoodnetwork
f77417acef Updating translations for config/locales/en_US.yml 2021-02-25 09:31:00 +11:00
Transifex-Openfoodnetwork
65e040948f Updating translations for config/locales/fr.yml 2021-02-25 09:30:58 +11:00
Transifex-Openfoodnetwork
2fa6583176 Updating translations for config/locales/es.yml 2021-02-25 09:30:55 +11:00
Andy Brett
bc7477795c Merge pull request #6910 from andrewpbrett/remove-order-capture
Make orders not capturable if they have a payment pending authorization
2021-02-24 12:20:43 -08:00
Pau Pérez Fabregat
d7d86729ad Merge pull request #6929 from efgalvao/issue#6892
Fix the issue #6892
2021-02-24 20:48:27 +01:00
Andy Brett
741ed73cf5 add specs for enterprises with nil or unknown category 2021-02-24 11:43:53 -08:00
Andy Brett
106803cc0b Merge pull request #6945 from openfoodfoundation/dependabot/bundler/stripe-5.30.0
Bump stripe from 5.29.1 to 5.30.0
2021-02-24 10:11:24 -08:00
Pau Pérez Fabregat
15e6c28cc5 Merge pull request #6954 from coopdevs/remove-dead-serializer
Remove dead serializer
2021-02-24 18:01:29 +01:00
Transifex-Openfoodnetwork
6b0339df63 Updating translations for config/locales/fr_CA.yml 2021-02-25 03:33:32 +11:00
Transifex-Openfoodnetwork
3eec52b8f1 Updating translations for config/locales/en_CA.yml 2021-02-25 03:33:26 +11:00
Transifex-Openfoodnetwork
7b52abbd35 Updating translations for config/locales/fr_CA.yml 2021-02-25 03:30:39 +11:00
Transifex-Openfoodnetwork
3825712755 Updating translations for config/locales/es_US.yml 2021-02-25 03:30:28 +11:00
Transifex-Openfoodnetwork
0a0ba1255a Updating translations for config/locales/ca.yml 2021-02-25 03:30:26 +11:00
Transifex-Openfoodnetwork
dbb0d9bd38 Updating translations for config/locales/en_GB.yml 2021-02-25 03:30:24 +11:00
Transifex-Openfoodnetwork
583e091f67 Updating translations for config/locales/de_DE.yml 2021-02-25 03:30:23 +11:00
Transifex-Openfoodnetwork
c169e63b53 Updating translations for config/locales/fr.yml 2021-02-25 03:30:19 +11:00
Matt-Yorkley
0f0f3e1ab4 Merge pull request #6940 from drummer83/patch-1
Create independent title string for 'Map' page
2021-02-24 17:24:25 +01:00
Pau Perez
ec3b402856 Remove dead serializer
This became unused in
b9d72ce4cf (diff-5df9d1d16b9e9ac1724af5c6180ca86f7caeb6a4880d2f77ac25fbe757b597b9).
2021-02-24 17:09:16 +01:00
Pau Pérez Fabregat
0e03864aa9 Merge pull request #6906 from jibees/6895-close-tooptip-when-user-clicks-anywhere-else
Close unit price tooltip when user click outside the tooltip
2021-02-24 15:19:25 +01:00
Pau Pérez Fabregat
d513dc31de Merge pull request #6905 from jibees/6498-show-unit-price-in-checkout
Show unit price in checkout process (both cart page and cart sidebar)
2021-02-24 11:59:25 +01:00
Maikel
0654e3d1cf Merge pull request #6854 from openfoodfoundation/dependabot/bundler/rswag-2.4.0
Bump rswag from 2.3.3 to 2.4.0
2021-02-24 15:47:31 +11:00
Maikel Linke
bcd9ea2b87 Update generated swagger file
rake rswag PATTERN="spec/requests/api/*_spec.rb"

This file is just a demo so far. The more complete description of the
API is: /swagger.yaml
2021-02-24 15:45:47 +11:00
Andy Brett
2d304bd997 add default icon value if enterprise.category is nil 2021-02-23 11:37:36 -08:00
Pau Pérez Fabregat
89947c8154 Merge pull request #6946 from openfoodfoundation/dependabot/bundler/awesome_nested_set-3.4.0
Bump awesome_nested_set from 3.3.1 to 3.4.0
2021-02-23 20:37:07 +01:00
Pau Perez
116109c63d Make /api/orders N+1 free
With the help of the bullet gem, and since we remove a couple of N+1s
already, remove them all was just a few keystrokes away. This commits
gets us from 42 SQL queries to 17, and 364.5ms to 253.9ms on my machine
where I just have the sample data's orders. As usual, this will have
a much bigger impact in scenarios with more data.
2021-02-23 10:26:12 -08:00
Pau Perez
20a7f2f24e Eager load payment and subs. order associations
This removes the N+1 queries caused by
`Api::Admin::OrderSerialier#ready_to_capture` when used from
`Api::OrdersController#index`. While it's fine for the single-order
controller actions, it's not for this one that deals with a collection
of orders.

Fortunately, `SearchOrders` is used only in this controller action so we
can put the `includes` calls there, otherwise, we would need to refactor
it a bit to pass in a context-specific AR relation.
2021-02-23 10:26:12 -08:00
Andy Brett
d62a984939 make orders not capturable if they have a payment pending authorization 2021-02-23 10:26:04 -08:00
Matt-Yorkley
9852470ef6 Merge pull request #6913 from Matt-Yorkley/rails-5-backports
Rails 5 backports
2021-02-23 11:55:31 +01:00
dependabot[bot]
37707f4a5b Bump awesome_nested_set from 3.3.1 to 3.4.0
Bumps [awesome_nested_set](https://github.com/collectiveidea/awesome_nested_set) from 3.3.1 to 3.4.0.
- [Release notes](https://github.com/collectiveidea/awesome_nested_set/releases)
- [Changelog](https://github.com/collectiveidea/awesome_nested_set/blob/master/CHANGELOG)
- [Commits](https://github.com/collectiveidea/awesome_nested_set/compare/v3.3.1...v3.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-23 05:35:38 +00:00
dependabot[bot]
f7173ff0b0 Bump stripe from 5.29.1 to 5.30.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 5.29.1 to 5.30.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v5.29.1...v5.30.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-23 05:35:07 +00:00
Maikel Linke
b61ce13a1b Add missing helper to UserMailer 2021-02-23 11:24:55 +11:00
Maikel Linke
a971b62068 Emphasise ways to get help in user emails
We had a very prominent footer showing how to get in contact with the
local instance people but most users need to get in contact with the
enterprise they are buying from. So removing all those details and
replacing them by a simple "powered by" line will hopefully direct
attention to the shop's contact details.
2021-02-23 11:24:55 +11:00
Maikel
3e0547f563 Merge pull request #6926 from andrewpbrett/check-nan
Ensure unit_value is a number
2021-02-23 10:40:00 +11:00
drummer83
7e01b76af2 Create independent title string for 'Map' page
The "map" page didn't have a separate Transifex string for the page title. Instead the string 'label_map' was being used, which is also used elsewhere on the website. 
To make the page title independent from 'label_map' the title string 'map_title' is added (like on shops page, producers page etc.).
2021-02-22 22:13:46 +01:00
drummer83
43055d8704 Create independent title string for 'Map' page
The "map" page didn't have a separate Transifex string for the page title. Instead the string 'label_map' was being used, which is also used elsewhere on the website. So no good idea to change that.
To make the page title independent from 'label_map' the title string is changed to 'map_title' (like on shops page, producers page etc.).
2021-02-22 21:29:42 +01:00
Matt-Yorkley
0e3429dc35 Merge pull request #6758 from Matt-Yorkley/enterprise-fees-refactor
Enterprise fees refactor
2021-02-22 17:59:18 +01:00
Andy Brett
dac7176bde Merge pull request #6922 from jibees/6917-fix-prefilled-date-for-new-date-picker-
Separate date format used for server communication from user-readable date
2021-02-22 08:23:51 -08:00
Andy Brett
ff243c40a7 Merge pull request #6885 from andrewpbrett/fix-group-map-icons
Move map icons to /public
2021-02-22 08:11:54 -08:00
Pau Pérez Fabregat
fd067d01f6 Merge pull request #6937 from openfoodfoundation/transifex
Transifex
2021-02-22 16:37:54 +01:00
Transifex-Openfoodnetwork
13f5083386 Updating translations for config/locales/de_DE.yml 2021-02-23 02:05:31 +11:00
Transifex-Openfoodnetwork
2aa90a4bbe Updating translations for config/locales/de_DE.yml 2021-02-23 02:02:28 +11:00
Pau Pérez Fabregat
f7f8ecf654 Merge pull request #6930 from openfoodfoundation/dependabot/bundler/activerecord-import-1.0.8
Bump activerecord-import from 1.0.7 to 1.0.8
2021-02-22 13:05:41 +01:00
Pau Pérez Fabregat
9c75efdce8 Merge pull request #6921 from openfoodfoundation/transifex
Transifex
2021-02-22 13:05:04 +01:00
Jean-Baptiste Bellet
9bc5aa69bb Use the right default date time format
- Using the altInput from flatpickr forces us to use this default date format which is `%Y-%m-%d %H:%M`
2021-02-22 13:00:43 +01:00
Jean-Baptiste Bellet
c22101783c Forward focus event on original input as flatpickr instance is open
- Thus, warning about modifying the opening date of an order cycle with active subscription will trigger (see `spec/features/admin/order_cycles/list_spec.rb`)
2021-02-22 13:00:43 +01:00
Jean-Baptiste Bellet
e93474d493 Look for hidden input using the right date time format
- This is an option, and by default it has the previous behavior: look only for visible element
 - This option allows us to look for non-visible elements
 - Using new altInput from flatpickr create a input hidden element. This is why we need to look at this element.
 - Using the altInput from flatpickr forces us to use this default date format
 - As we now use `altInput` from flatpickr, the value used to communicate between backend and frontend is stored into an input type hidden.
2021-02-22 13:00:04 +01:00
Jean-Baptiste Bellet
fbe53a3a2e Use UI to fill date into datetimepicker
This creates a new method to select date and time from datetimepicker.

Field cannot be filled "manually" (ie. by entering its value)
2021-02-22 12:58:29 +01:00
Transifex-Openfoodnetwork
83ed5dde85 Updating translations for config/locales/es_US.yml 2021-02-22 20:59:57 +11:00
Transifex-Openfoodnetwork
3698d0b4ad Updating translations for config/locales/en_GB.yml 2021-02-22 20:10:03 +11:00
Andy Brett
5dcda317d2 add bugsnag alert 2021-02-21 22:27:58 -08:00
Andy Brett
dec6d2189f add unit test for unit_value 2021-02-21 22:26:36 -08:00
dependabot[bot]
9b13ac78be Bump activerecord-import from 1.0.7 to 1.0.8
Bumps [activerecord-import](https://github.com/zdennis/activerecord-import) from 1.0.7 to 1.0.8.
- [Release notes](https://github.com/zdennis/activerecord-import/releases)
- [Changelog](https://github.com/zdennis/activerecord-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zdennis/activerecord-import/compare/v1.0.7...v1.0.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-22 05:56:33 +00:00
Andy Brett
55215bb59a Merge pull request #6899 from Matt-Yorkley/cost-price-dead-code
Remove cost_price and other dead code
2021-02-21 11:10:17 -08:00
edmar.galvao@codeminer42.com
cf6fe1a903 Fix the issue #6892 2021-02-21 15:08:50 -03:00
Transifex-Openfoodnetwork
467c05bc50 Updating translations for config/locales/fr_CA.yml 2021-02-22 01:13:31 +11:00
Transifex-Openfoodnetwork
4cc4d1aa68 Updating translations for config/locales/en_CA.yml 2021-02-22 01:05:41 +11:00
Matt-Yorkley
54cd543118 Update data migration to use raw SQL 2021-02-20 19:03:19 +00:00
Matt-Yorkley
24dd971943 Include scopes in migration 2021-02-20 19:03:19 +00:00
Matt-Yorkley
1aeee83c29 Populate tax total fields on spree_orders 2021-02-20 19:03:19 +00:00
Matt-Yorkley
ec7d1d8133 Introduce tax totals in Order::Updater 2021-02-20 19:03:19 +00:00
Andy Brett
e06843c445 ensure unit_value is a number 2021-02-19 14:38:08 -08:00
Transifex-Openfoodnetwork
a5c633cd89 Updating translations for config/locales/en_US.yml 2021-02-20 07:30:09 +11:00
Andy Brett
05736884fe prepend / to route 2021-02-19 07:43:29 -08:00
Andy Brett
e7489965c5 move map icons to public/ 2021-02-19 07:43:23 -08:00
Matt-Yorkley
90f5659e68 Merge pull request #6923 from openfoodfoundation/filipefurtad0-update-doc-1
Update CONTRIBUTING.md
2021-02-19 15:56:01 +01:00
Jean-Baptiste Bellet
ce0d33caa6 Add needed class to be displayed as datetimepicker input
- + Remplace `ng-disabled` by `ng-if` as its correctly handled by flatpickr/altInput combo.
2021-02-19 15:37:12 +01:00
Jean-Baptiste Bellet
2a504f7359 Add a flatpickr plugin to attach 'id' attribute to input element
- As we use `altInput`, the original input is hidden. This plugin forward the `id` attribute of the original input to the input created on-the-fly and used by end user.
2021-02-19 14:59:13 +01:00
filipefurtad0
cc009ba33f Update CONTRIBUTING.md
Added lines on bundle and yarn install. For context see this thread:
https://openfoodnetwork.slack.com/archives/C2GQ45KNU/p1613393033083800
2021-02-19 13:02:03 +00:00
Matt-Yorkley
40eab5f73c Use params.dig in TaxonsController 2021-02-19 12:12:20 +00:00
Matt-Yorkley
f858fe3c68 Improve coverage in admin_orders_controller_spec 2021-02-19 11:18:00 +00:00
Matt-Yorkley
cc55e9eeda Improve coverage in orders_controller_spec 2021-02-19 11:17:59 +00:00
Matt-Yorkley
d4750b9f26 Improve clarity of orders controller test 2021-02-19 11:17:59 +00:00
Matt-Yorkley
ba81bd8395 Remove after_action callback in Admin:OrdersController 2021-02-19 11:17:59 +00:00
Matt-Yorkley
5c5d687c9b Remove hacks for working around closed adjustments
The enterprise fees are recreated and the shipping and payment fees are updated. The rest of the deleted code is not necessary (eg #with_open_adjustments). Everything else that needs to happen here is already done automatically (eg updating order totals).
2021-02-19 11:17:59 +00:00
Matt-Yorkley
9303d61db1 Update specs 2021-02-19 11:17:58 +00:00
Jean-Baptiste Bellet
424067d2dd Add mandatory class for date input
- Using flatpickr component, we need to add class to have a beautiful input with white background and pointer hover it.
2021-02-19 11:22:52 +01:00
Jean-Baptiste Bellet
26be76b95c Add new CSS specifications for flatpickr input as using altInput
- We now use altInput which is the only visible input to the end user.
 - This input inherits all the classes from the component who instantiated it, but not the `.flatpickr-input` class.
 - Add more specification to have a beautiful white background with pointer component.
2021-02-19 11:21:04 +01:00
Jean-Baptiste Bellet
c9cf989b27 Introduce altInput for flatpickr date(time)picker
- altInput is used to display the date to the end user: this field must be i18nized
 - dateFormat is the date format used through the front and the backend
2021-02-19 11:16:43 +01:00
Transifex-Openfoodnetwork
c80b67ed9c Updating translations for config/locales/es.yml 2021-02-19 21:10:34 +11:00
Transifex-Openfoodnetwork
1ae4786a06 Updating translations for config/locales/ca.yml 2021-02-19 21:10:00 +11:00
Transifex-Openfoodnetwork
5782504b3a Updating translations for config/locales/en_FR.yml 2021-02-19 21:01:34 +11:00
Transifex-Openfoodnetwork
86fa186421 Updating translations for config/locales/fr.yml 2021-02-19 21:01:32 +11:00
Maikel Linke
fe3fb78f76 Update from Transifex 2021-02-19 15:56:50 +11:00
Maikel
af832666ff Merge pull request #6916 from openfoodfoundation/transifex
Transifex
2021-02-19 15:50:04 +11:00
Maikel Linke
5b94049620 Whitelist params for several settings for Rails 5
Rails 5 is a bit stricter and Spree's Config#set method doesn't work
with a Parameters object.
2021-02-19 14:20:15 +11:00
Matt-Yorkley
5d1af5620c Merge pull request #6674 from cillian/include-ready-for-in-producer-notification
Include the 'Ready for' time for the order cycle in the Notify Producers email
2021-02-18 22:01:08 +01:00
Transifex-Openfoodnetwork
5c431fa99c Updating translations for config/locales/en_IE.yml 2021-02-19 04:34:00 +11:00
Matt-Yorkley
c47902d932 Fix params in Admin::EnterprisesController#register 2021-02-18 15:04:09 +00:00
Matt-Yorkley
84f56b2b44 Fix relation/array handling in OrderCycles List 2021-02-18 14:59:38 +00:00
Matt-Yorkley
aebd785a54 Fix persistence issue in view test setup 2021-02-18 14:58:25 +00:00
Jean-Baptiste Bellet
dd0ef0d599 Display unit price info if feature is enabled 2021-02-18 15:05:40 +01:00
Jean-Baptiste Bellet
ee4943f6e2 Display unit price on /cart page
- Use a new class to specify css customization
 - Add to `line_item.rb` a fake method: `unit_price_price_and_unit` @andrewpbrett will change it with real values.
 - Add a new variable: $text-xs to specify small font-size


squash "Display unit price on /cart page"
2021-02-18 15:02:30 +01:00
Jean-Baptiste Bellet
5914e6c885 Add a context to question mark icon with tooltip to display it adjusted
- This behavior permit use to create custom CSS specifications to display this tooltip best fitted to the context.
2021-02-18 15:02:30 +01:00
Jean-Baptiste Bellet
5b91f096ba Add unit price information into the cart
- .total-price element must be a div (display: block) to be text right aligned (and not being float: right)
 - use .option-text to display a grey text
 - use display: flex to display question mark icon and text information
2021-02-18 15:02:30 +01:00
Matt-Yorkley
76009c259f Ensure encodable object in StripeAccountsController
Fixes:
```
Admin::StripeAccountsController#connect redirects to Stripe Authorization url constructed OAuth
     Failure/Error: url_params = { state: JWT.encode(payload, key, 'HS256'), scope: "read_write" }

     JSON::GeneratorError:
       only generation of JSON objects or arrays allowed
     # ./app/controllers/admin/stripe_accounts_controller.rb:8:in `connect'
     # ./spec/controllers/admin/stripe_accounts_controller_spec.rb:18:in `block (3 levels) in <top (required)>'
```
2021-02-18 13:51:01 +00:00
Matt-Yorkley
3976f8ef89 Use params.dig when traversing nested params in passwords controllers 2021-02-18 13:05:16 +00:00
Matt-Yorkley
12c9ac7ccd Use params.dig when traversing nested params in views 2021-02-18 13:02:58 +00:00
Matt-Yorkley
219c982db7 Re-implement pre-Rails-5 versions of #implement! and #decrement! on Spree::LineItem
Rails 5 introduced some breaking changes to these built-in methods, and the new versions no longer work correctly in relation to decrementing stock with VariantOverrides.
2021-02-18 12:28:24 +00:00
Matt-Yorkley
dfadcbd2e0 Fix relation/array modification issues in EnterprisesHelper 2021-02-18 12:28:24 +00:00
Pau Pérez Fabregat
1fc21bdcb3 Merge pull request #6903 from openfoodfoundation/transifex
Transifex
2021-02-18 13:23:02 +01:00
Matt-Yorkley
18a354ec1e Fix private method called
```
Failure/Error: variant.stock_items.first.update_attribute(:count_on_hand, 10)

     NoMethodError:
       private method `count_on_hand=' called for #<Spree::StockItem:0x00005573998948a8>
       Did you mean?  count_on_hand
                      count_on_hand?
                      count_on_hand_was
     # ./spec/models/spree/variant_spec.rb:249:in `block (5 levels) in <module:Spree>'
     # -e:1:in `<main>'
```
2021-02-18 12:20:29 +00:00
Matt-Yorkley
a8009d044b Use permit in StripeAccountsController 2021-02-18 12:20:29 +00:00
Matt-Yorkley
1535c680f5 Fix direct params access in StripeAccountsController 2021-02-18 12:20:28 +00:00
Pau Pérez Fabregat
3c208a4fe9 Merge pull request #6911 from mkllnk/remove-dead-rails3-code
Remove dead code needed for Rails 3
2021-02-18 12:45:03 +01:00
Pau Pérez Fabregat
a21a8b18b1 Merge pull request #6861 from ccozkan/new-product-form-on_hand-field-improvements
Remove required field asterisk from on_hand's field on new products form
2021-02-18 12:39:58 +01:00
Matt-Yorkley
5a260b4e71 Update deprecated middleware configurations 2021-02-18 11:03:20 +00:00
Matt-Yorkley
7230d2767c Add concern for accessing raw params hash 2021-02-18 11:02:22 +00:00
Matt-Yorkley
c8824ec59f Fix undefined method #push on ActiveRecord::Relation 2021-02-18 11:00:24 +00:00
Matt-Yorkley
2413afa355 Update patch with warning 2021-02-18 10:57:03 +00:00
Transifex-Openfoodnetwork
1e51884cb2 Updating translations for config/locales/en_FR.yml 2021-02-18 21:46:42 +11:00
Transifex-Openfoodnetwork
cb5543ea75 Updating translations for config/locales/fr.yml 2021-02-18 21:43:20 +11:00
Matt-Yorkley
c8ff745471 Patch paperclip bug 2021-02-18 10:42:57 +00:00
Transifex-Openfoodnetwork
ff423a7b7c Updating translations for config/locales/de_DE.yml 2021-02-18 20:57:34 +11:00
Transifex-Openfoodnetwork
88e8d110b3 Updating translations for config/locales/es.yml 2021-02-18 18:45:06 +11:00
Transifex-Openfoodnetwork
ce501d4715 Updating translations for config/locales/ca.yml 2021-02-18 18:44:58 +11:00
Maikel Linke
29d7596b4e Remove dead code needed for Rails 3
This was initially added to allow unprivileged database users to run the
app but Rails 4 contains that patch already.

References:

  b70edd542
  719c45b40
2021-02-18 16:18:54 +11:00
Transifex-Openfoodnetwork
a48d8d8a61 Updating translations for config/locales/pt_BR.yml 2021-02-18 10:16:53 +11:00
Andy Brett
f463af327c Merge pull request #6808 from andrewpbrett/authorize-payment-links
Allow a customer to perform further action for a Stripe payment if needed (#4181)
2021-02-17 10:17:51 -08:00
Pau Pérez Fabregat
8068c6015f Merge pull request #6836 from coopdevs/customer-balance-reports
Customer balance reports
2021-02-17 17:34:37 +01:00
Matt-Yorkley
719b65138f Add tax total fields to spree_orders 2021-02-17 16:15:34 +00:00
Matt-Yorkley
899552cfee Improve summing of line item totals 2021-02-17 16:15:34 +00:00
Matt-Yorkley
752d8bd5a0 Start refactoring Order::Updater class 2021-02-17 16:15:34 +00:00
Matt-Yorkley
b31d75aa67 Remove cost_price fields from database 2021-02-17 14:29:30 +00:00
Matt-Yorkley
42a5d7cdc7 Delete dead code Variant#set_option_value 2021-02-17 14:27:51 +00:00
Matt-Yorkley
105f59d959 Delete dead code Variant#default_price? 2021-02-17 14:27:51 +00:00
Matt-Yorkley
4213f66afb Delete dead code Variant#name_and_sku 2021-02-17 14:27:51 +00:00
Matt-Yorkley
d06fee026c Delete dead code Variant#on_backorder 2021-02-17 14:27:51 +00:00
Matt-Yorkley
81ac2c5add Delete code related to :cost_price field 2021-02-17 14:27:51 +00:00
Matt-Yorkley
12dedf8a3b Merge pull request #6774 from Matt-Yorkley/increase-precision
Increase limit on database columns that involve prices
2021-02-17 15:06:19 +01:00
Jean-Baptiste Bellet
c313083593 Specify background position and with/height
- Click on this background trigger the tooltip close event.
2021-02-17 14:59:29 +01:00
Transifex-Openfoodnetwork
789e2dca7b Updating translations for config/locales/de_DE.yml 2021-02-17 23:15:21 +11:00
Pau Pérez Fabregat
766acdf75b Merge pull request #6900 from openfoodfoundation/try-out-gh-actions-as-ci
Add Github CI build workflow
2021-02-17 12:45:15 +01:00
Pau Perez
e4c0fa5043 Add Github CI build workflow
based on
https://docs.github.com/en/actions/guides/building-and-testing-ruby#starting-with-the-ruby-workflow-template.

Things worth mentioning:

* ruby/setup-ruby reads `.ruby-version` by default. See:
https://github.com/ruby/setup-ruby#supported-version-syntax
* I chose to run on ubuntu-18.04 because that's what we use in
production. This should reduce potential "it runs on machine but fails
in CI" due to different system libraries versions and such.

We're temporarily running only `spec/queries/` specs because we want it
to finish quickly as we iterate on its configuration.
2021-02-17 12:37:11 +01:00
Pau Pérez Fabregat
a88280566c Merge branch 'master' into increase-precision 2021-02-17 11:36:36 +01:00
Pau Pérez Fabregat
297927c8df Merge pull request #6897 from openfoodfoundation/transifex
Transifex
2021-02-17 11:12:14 +01:00
Pau Pérez Fabregat
16140b7b0b Merge pull request #6843 from Matt-Yorkley/tax-rates-double-take
Also soft-delete tax rates when changing `included_in_price`
2021-02-17 09:41:07 +01:00
Transifex-Openfoodnetwork
4d07faff06 Updating translations for config/locales/es.yml 2021-02-17 19:37:21 +11:00
Transifex-Openfoodnetwork
93bb84ddd0 Updating translations for config/locales/ca.yml 2021-02-17 19:37:10 +11:00
Andy Brett
cfd8403125 Merge pull request #6865 from jibees/6833-bom-fix-display-issue-for-product
Fix some display issues on Bulk Order Management page
2021-02-16 19:06:42 -08:00
Maikel
10c86e852f Merge pull request #6888 from mkllnk/use-google-tiles-with-google-maps
Use Google's map tiles with Google Maps
2021-02-17 08:56:03 +11:00
Transifex-Openfoodnetwork
5bd336ac09 Updating translations for config/locales/en_FR.yml 2021-02-17 05:38:48 +11:00
Transifex-Openfoodnetwork
3dd2dd31cd Updating translations for config/locales/fr.yml 2021-02-17 05:38:37 +11:00
Andy Brett
d444c5d6d4 Merge pull request #6893 from openfoodfoundation/transifex
Transifex
2021-02-16 08:32:07 -08:00
Pau Pérez Fabregat
71c8a62351 Merge pull request #6851 from jibees/6497-show-unit-price-in-shopfront
Show unit price in shopfront
2021-02-16 16:33:49 +01:00
Transifex-Openfoodnetwork
6de797c0a4 Updating translations for config/locales/fr_CA.yml 2021-02-17 02:33:21 +11:00
Transifex-Openfoodnetwork
1ceda0c076 Updating translations for config/locales/en_CA.yml 2021-02-17 02:29:14 +11:00
Jean-Baptiste Bellet
a8cc0d1001 add translation for question mark tooltip 2021-02-16 15:26:36 +01:00
Jean-Baptiste Bellet
e509925789 Use question mark with tooltip directive
Needs some css customization due to the use of a button element (instead of a basic span)
2021-02-16 15:26:21 +01:00
Jean-Baptiste Bellet
4be2b42fe1 create a new directive: question mark with tooltip
- Display a rounded blue question mark icon
 - Show (hide) on click a blue tooltip on top of the question mark icon
2021-02-16 15:26:21 +01:00
Jean-Baptiste Bellet
7442d06bed add new template to manage variant
- The aim of this template is to display unit price
 - Duplicate the angular directive
 - Add a question mark icon and its own file
 - Add some needed colors in the branding file
2021-02-16 15:26:21 +01:00
Jean-Baptiste Bellet
8c42388af1 add a randomized unit price for variant
unit price is composed with :
 - a unit_price_price which is a number that can be localized (depending on the currency)
- a unit_price_unit which can be either `item` of `kg`

@andrewpbrett will do stuff to have a relevant unit price for each variant
2021-02-16 15:26:21 +01:00
Jean-Baptiste Bellet
d97b46cd5b add new feature for beta testers: unit_price
The aim of this "feature toggle" is to enable the unit price display for each product/variants.
By default activate on both development and staging environment.
2021-02-16 15:26:21 +01:00
Matt-Yorkley
3da5c0d7fd Update TaxRate transition spec
Setting a tax rate to included fails a validation if a default zone doesn't exist, so that's added. Also improved the tested scenarios and some of the details checked on the updated objects.
2021-02-16 13:21:57 +00:00
Pau Perez
36ce39a217 Sort OC report orders by completed_at
This is then consistent with the ordering we use to list orders in
/admin, which is more useful. As a result, the test is also more robust.
2021-02-16 13:25:21 +01:00
dependabot[bot]
c56c5d0028 Bump rswag from 2.3.3 to 2.4.0
Bumps [rswag](https://github.com/rswag/rswag) from 2.3.3 to 2.4.0.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.3.3...2.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-16 08:52:23 +00:00
Pau Pérez Fabregat
77dc6b7d57 Merge pull request #6890 from openfoodfoundation/dependabot/bundler/rubocop-1.10.0
Bump rubocop from 1.9.1 to 1.10.0
2021-02-16 09:51:15 +01:00
Pau Pérez Fabregat
fc25a921d3 Merge pull request #6891 from openfoodfoundation/transifex
Transifex
2021-02-16 09:50:13 +01:00
Transifex-Openfoodnetwork
67a201de55 Updating translations for config/locales/en_GB.yml 2021-02-16 18:07:29 +11:00
dependabot[bot]
e87550f1e9 Bump rubocop from 1.9.1 to 1.10.0
Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 1.9.1 to 1.10.0.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v1.9.1...v1.10.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-16 05:32:38 +00:00
Maikel Linke
445fae4d09 Use Google's map tiles with Google Maps
We started to move to Open Street Maps (OSM) and one simple change was
to show OSM tiles on top of the current Google Maps functionality. This
hybrid use violates Google's terms and conditions though and I'm
reverting it here (basically reverting daa5b00a2).

Another branch of work was already started to use OSM without Google
functionality and it's available behind a feature toggle. We can
continue that work in our own time without a license violation. This
change is only changing the tiles, the look of the map and doesn't touch
any functionality which was always provided by Google Maps.
2021-02-16 14:30:24 +11:00
Andy Brett
560ad49057 unit tests for ProcessPaymentIntent 2021-02-15 18:09:07 -08:00
Andy Brett
05e762ff21 add controller specs for confirming payment intent 2021-02-15 17:09:38 -08:00
Andy Brett
f8239ed3ed use image path generator for map icons 2021-02-15 14:43:34 -08:00
Çağrı Özkan
dee2095a13 Remove required star from on_hand field 2021-02-16 00:23:53 +03:00
Çağrı Özkan
6fad35a975 Checkout upstream's admin/products/new view 2021-02-16 00:22:09 +03:00
Pau Pérez Fabregat
897a0c7779 Merge pull request #6880 from openfoodfoundation/transifex
Transifex
2021-02-15 16:47:51 +01:00
Transifex-Openfoodnetwork
8277093fa9 Updating translations for config/locales/de_DE.yml 2021-02-15 23:32:14 +11:00
Pau Pérez Fabregat
ffc850a794 Merge pull request #6876 from openfoodfoundation/transifex
Transifex
2021-02-15 11:50:41 +01:00
Transifex-Openfoodnetwork
347f193aeb Updating translations for config/locales/es.yml 2021-02-15 19:56:52 +11:00
Transifex-Openfoodnetwork
0084aff9d4 Updating translations for config/locales/ca.yml 2021-02-15 19:56:38 +11:00
Transifex-Openfoodnetwork
03d8ecbb56 Updating translations for config/locales/en_FR.yml 2021-02-15 19:27:01 +11:00
Transifex-Openfoodnetwork
41defd3d2f Updating translations for config/locales/fr.yml 2021-02-15 19:26:36 +11:00
Andy Brett
01293a3a3a Merge pull request #6863 from turinglabsorg/master
deleting only OFN related Docker containers and images
2021-02-13 09:24:00 -08:00
Andy Brett
77a3649e50 documentation 2021-02-12 13:46:05 -08:00
Andy Brett
c851705d5a reload order's new state after processing payment 2021-02-12 13:36:17 -08:00
Andy Brett
cd2b4d2fb2 advance order after processing payment intent 2021-02-12 13:36:04 -08:00
Andy Brett
8c7bf863f8 return pending payments in order serializer 2021-02-12 12:20:35 -08:00
Andy Brett
6efad74c5c add authorize link to transactions page 2021-02-12 12:20:35 -08:00
Andy Brett
1b2416652f update translations 2021-02-12 10:45:54 -08:00
Andy Brett
538dfb1e59 Merge pull request #6868 from openfoodfoundation/transifex
Transifex
2021-02-12 10:36:46 -08:00
Andy Brett
0a7396eb1c Merge pull request #6713 from andrewpbrett/sca-subs-emails
Send emails when subscription payments require SCA auth
2021-02-12 08:23:32 -08:00
Jean-Baptiste Bellet
034153dacf Fix some columns grid system issues
- Use class directly instead of attribut of element (`.three` instead of `%div{ :class => "three"}` )
 - Correct a lots of bad calculation about columns grid system
 - Use class instead of style if it's possible (`.text-center` instead of `:style => 'text-align: center;'`)
2021-02-12 10:02:27 +01:00
Transifex-Openfoodnetwork
2981be7013 Updating translations for config/locales/en_US.yml 2021-02-12 12:56:39 +11:00
Maikel
9aa7dd3206 Merge pull request #6714 from luisramos0/rails5-new
[Rails 5] Update Gemfile_next.lock and fix app/services/permissions/order.rb
2021-02-12 12:32:39 +11:00
Andy Brett
7c2febdd78 Merge pull request #6813 from jibees/6795-missing-cases-for-loading-spinner
Make loading spinner visible
2021-02-11 10:55:05 -08:00
Andy Brett
b5e9c935e9 Merge pull request #6821 from cillian/admin-product-sorting-bug
Include sort direction parameter during bulk product update to prevent JS error causing 'Saving' text to hang
2021-02-11 10:54:24 -08:00
Andy Brett
5a8a3b8d6b Merge pull request #6822 from arku/chore/cost-price-removal
Remove cost price field field from product variant form
2021-02-11 10:48:00 -08:00
Andy Brett
96a746175d update spec with new behavior 2021-02-11 10:36:50 -08:00
Pau Pérez Fabregat
7f882bfe92 Merge pull request #6295 from luisramos0/remove_pin
Remove Pin Payments
2021-02-11 18:04:59 +01:00
Transifex-Openfoodnetwork
96dea93745 Updating translations for config/locales/en_FR.yml 2021-02-12 03:56:37 +11:00
Transifex-Openfoodnetwork
6d87861efc Updating translations for config/locales/fr.yml 2021-02-12 03:55:05 +11:00
Transifex-Openfoodnetwork
69724cfc24 Updating translations for config/locales/ru.yml 2021-02-12 02:51:41 +11:00
Transifex-Openfoodnetwork
09575b20bd Updating translations for config/locales/de_DE.yml 2021-02-12 02:51:40 +11:00
Transifex-Openfoodnetwork
e168393662 Updating translations for config/locales/es.yml 2021-02-12 02:37:16 +11:00
Transifex-Openfoodnetwork
ae8488da92 Updating translations for config/locales/ca.yml 2021-02-12 02:35:35 +11:00
turinglabsorg
07a42e8a21 deleting only OFN related Docker containers and images 2021-02-11 14:30:07 +01:00
Pau Pérez Fabregat
99dbd8afa7 Merge pull request #6791 from filipefurtad0/customers_spec
enhances customers_spec.rb to check customer balance, after additional payments were added to an order
2021-02-11 11:36:30 +01:00
Pau Pérez Fabregat
5fd1bc3604 Merge pull request #6862 from openfoodfoundation/dependabot/bundler/geocoder-1.6.5
Bump geocoder from 1.6.4 to 1.6.5
2021-02-11 11:23:13 +01:00
Pau Pérez Fabregat
7fe79eccea Merge pull request #6691 from jibees/6664-new-datetimepicker
6664 new datetimepicker
2021-02-11 11:21:19 +01:00
Pau Pérez Fabregat
34ce3c0db1 Merge branch 'master' into remove_pin 2021-02-11 11:19:18 +01:00
Pau Perez
23b0885f4b Turn ivars into private attr_readers
This makes them more changeable and robust. Ruby will raise
NoMethodError on typos while it'll silently create a new ivar without
us noticing. Also, in my experience, a reader method gives more room to
future refactorings and eases testing because methods are easier to
stub.
2021-02-11 11:04:39 +01:00
Pau Perez
e2853b9afb Do not load order twice
The controller already does so, then, we can pass it to the service and
avoid that extra round-trip to the DB and save some memory. Spree::Order
is a rather bulky object (God object code smell perhaps) and it'll
surely make a difference.
2021-02-11 11:04:21 +01:00
Pau Perez
e703113c08 Fix typo in test wording 2021-02-11 10:29:56 +01:00
filipefurtad0
33f7335c02 splitted testcases into different context blocks 2021-02-11 10:29:56 +01:00
filipefurtad0
82b93fc757 declared relevant variables with let! 2021-02-11 10:29:56 +01:00
filipefurtad0
3160d723b0 checks whether second payment was added correctly to the order 2021-02-11 10:29:56 +01:00
filipefurtad0
467b9e71a2 adds additional test case, in which a negative payment is added to an order 2021-02-11 10:29:56 +01:00
filipefurtad0
c722e1c082 declares variables for orders using let; prepares additional test cases 2021-02-11 10:29:56 +01:00
dependabot[bot]
f3d1206de8 Bump geocoder from 1.6.4 to 1.6.5
Bumps [geocoder](https://github.com/alexreisner/geocoder) from 1.6.4 to 1.6.5.
- [Release notes](https://github.com/alexreisner/geocoder/releases)
- [Changelog](https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alexreisner/geocoder/compare/v1.6.4...v1.6.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-11 09:29:01 +00:00
Pau Pérez Fabregat
752421cd8b Merge pull request #6814 from jibees/6797-to-much-white-space-when-editing-subscription
6797 Too much white space when editing subscription
2021-02-11 10:18:31 +01:00
Çağrı Özkan
4db41f8a16 Change on_hand's field to number_field and add required attribute 2021-02-10 22:52:31 +03:00
Andy Brett
891874995b refactor ProcessPaymentIntent to service 2021-02-10 11:22:29 -08:00
Andy Brett
ef6d1a3afb refactor flag param to module 2021-02-10 11:06:01 -08:00
Pau Pérez Fabregat
3a3485614d Merge pull request #6839 from openfoodfoundation/transifex
Transifex
2021-02-10 18:52:35 +01:00
Pau Pérez Fabregat
38da86c65b Merge pull request #6857 from andrewpbrett/remove-variant-migration
Remove variant migration
2021-02-10 18:45:03 +01:00
Pau Pérez Fabregat
8af805d10c Merge pull request #6840 from coopdevs/temp-skip-flaky-specs
Temporarily skip very flaky specs
2021-02-10 18:42:43 +01:00
Andy Brett
9104ca72a9 refactor to descriptive method authorization_action_required? 2021-02-10 09:36:35 -08:00
Pau Pérez Fabregat
98aed88295 Merge pull request #6853 from openfoodfoundation/dependabot/bundler/stripe-5.29.1
Bump stripe from 5.29.0 to 5.29.1
2021-02-10 18:31:28 +01:00
Pau Pérez Fabregat
3f20d939fa Merge pull request #6852 from openfoodfoundation/dependabot/bundler/timecop-0.9.4
Bump timecop from 0.9.3 to 0.9.4
2021-02-10 18:29:52 +01:00
Andy Brett
7814e74649 remove migration 2021-02-10 08:56:35 -08:00
Pau Pérez Fabregat
b7af92abb2 Merge pull request #6801 from coopdevs/toggle-customer-balance-to-entire-instance
Toggle customer balance to entire instance
2021-02-10 17:32:35 +01:00
dependabot[bot]
7baaa6f046 Bump stripe from 5.29.0 to 5.29.1
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 5.29.0 to 5.29.1.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v5.29.0...v5.29.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-10 05:31:53 +00:00
dependabot[bot]
dc74be45b9 Bump timecop from 0.9.3 to 0.9.4
Bumps [timecop](https://github.com/travisjeffery/timecop) from 0.9.3 to 0.9.4.
- [Release notes](https://github.com/travisjeffery/timecop/releases)
- [Changelog](https://github.com/travisjeffery/timecop/blob/master/History.md)
- [Commits](https://github.com/travisjeffery/timecop/compare/v0.9.3...v0.9.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-10 05:30:17 +00:00
Matt-Yorkley
ff549fb62e Also soft-delete tax rates when changing included_in_price
We need to do this when the included_in_price boolean changes as well, for the same reasons.
2021-02-09 17:26:16 +00:00
Matt-Yorkley
a811fb3783 Merge pull request #6838 from Matt-Yorkley/minor-rails-5-bits
Minor Rails 5 bits -> master
2021-02-09 14:40:13 +01:00
Matt-Yorkley
d6442bb16f Fix get requests in API controller spec 2021-02-09 11:57:00 +00:00
Matt-Yorkley
78eb5d23f9 Update TaxRatesController spec
BigDecimal was throwing an error here (in Rails 5) unless it received a string, but I think this is actually an issue with the way params were being passed in the relevant spec, as opposed to the controller itself.
2021-02-09 11:57:00 +00:00
Matt-Yorkley
4c4142c56d Fix HAML "unbalanced brackets" errors 2021-02-09 11:57:00 +00:00
Matt-Yorkley
1b947d30fa Pass ids in params that should be ids 2021-02-09 11:57:00 +00:00
Matt-Yorkley
d9bd0e8f0e Use alternate method for setting request.referer in controller specs
Apparently stubbing `request.referer` is tricky business in Rails 5... :shrugs:
2021-02-09 11:57:00 +00:00
Pau Pérez Fabregat
41410fdab5 Merge pull request #6834 from andrewpbrett/fix-variants-with-no-products
Remove variants with no product
2021-02-09 12:07:54 +01:00
Pau Perez
31d3854a74 Temporarily skip very flaky specs
These are the tests that are failing a lot across all builds, slowing
down everything in the pipe. It's better to skip these rather than
paying this huge toll. They can be restored once we spike a new CI service.
2021-02-09 11:48:06 +01:00
Pau Perez
50c429f393 Update db/schema's timestamp after migration 2021-02-09 11:27:48 +01:00
Transifex-Openfoodnetwork
66c331542c Updating translations for config/locales/it.yml 2021-02-09 18:39:59 +11:00
Matt-Yorkley
12a513c54c Apply an upstream fix to Spree::I18n
See: fe95f637c9

Fixes error mentioned in the above Spree commit.
2021-02-08 22:14:42 +00:00
Matt-Yorkley
bd7bc803cb Fix broken syntax in multiple angular files
I have no idea how this was not already throwing errors before...
2021-02-08 22:13:50 +00:00
Andy Brett
9a2bf9d333 use #destroy_all 2021-02-08 13:12:40 -08:00
Pau Pérez Fabregat
a820304166 Merge pull request #6819 from openfoodfoundation/transifex
Transifex
2021-02-08 22:10:59 +01:00
Jean-Baptiste Bellet
653f576bb1 Fill date and time value into the fields
as the new datetimepicker provide a disabled input field, it needs to be virtualized (and cannot be filled in with method `fill_in`)
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
57e20373fc overriding flatpickr selectors needs to be with uppercase
so disable the scss-lint check SelectorFormat
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
6a2461b30b overriding specific selectors needs to be as specific
so disable the scss-lint check QualifyingElement
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
fbd6db89c9 avoid selecting the day in the previous month
When you select date at the end of the month (27,28,29,30,...) it is likely possible that this date is already displayed by the calender but for the previous month.
Avoid this by using css selector :not()
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
8383b19458 factorize as we need only one file for datepicker 2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
9619ea06de code climate checks
- use variables for colors instead of values
 - trailinf line at the end of file
 - new line after each declaration
 - 2 spaces of indentation
 - avoid qualifying elements in selectors
 - prefer lowercase in hexa color
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
54f34093b4 reorder tests and set oc1 to an "updated" value
Seems like we need to set a value to "" before fill_in the input.
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
f5c77f17a6 remove useless files.
As we use flatpickr, these files are useless. Delete it.
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
b72ef18ad6 update datepicker_helper and add method to select date
Introduce a new method `select_date_from_datepicker` and then use it on test
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
3ab1d728a1 update helper with right selectors
As we now use flatpickr, need to update css/xpath selectors used by tests.
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
1dbafcaf7d remove animation
To make tests ok.
I could use Capybara.disable_animation = true, but there was no animation to old datetimepicker, so it's more consistant like this.
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
6dbaf1f7f3 specify date and datetime format 2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
e3db4e2e86 update test to match new datepicker
And use the method choose_today_from_datepicker
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
11d62eb331 add translation for "today" and "now" buttons
and remove useless translations
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
83f5d49ce2 remove references to jquery-ui datetimepicker
need to add dialog module from jquery-ui
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
84b402675a force onChange events to fire
And so the "You have unsaved changes" bar appears
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
079008d99b introduce "Now" button
Throught the plugin: https://github.com/jcsmorais/shortcut-buttons-flatpickr
import js library via yarn
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
329ec3455f update order_cycles (both list and simple) tests
As we know use a new datepicker (flatpickr), we need to update our test.
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
2ce361c655 code climate update
"color white should be written in hexadecimal form as #ffffff"
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
947a9da18b remove useless translations
as flatpickr is already translated
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
6c3ededb0b apply flatpickr on element
- update flatpickr instance value with `onOpen` callback
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
a5d58ea36c change css selector and use a precise one
Be more precise on selector. `flatpickr-input` is more selective.
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
e06ea6ccd3 remove unused options
as we use flatpickr, we don't need these options
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
4f7f8b559a localize flatpickr date format
Flatpickr can format date. Use a localized dateFormat.
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
4d9289c45b Render flatpickr input more enabled
by default, `input[readonly]` is styled as disable one. Using flatpickr with these disable inputs need to be customized. By clinking on it, it opens the datepicker widget.
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
6cf172abc9 add flatpickr to order cycle and .datetimepicker
Add your new date(time)picker on both order cycle and elements with class `.datetimepicker`
set the right options to datetimepicker
2021-02-08 22:09:06 +01:00
Jean-Baptiste Bellet
c8a3951830 add flatpickr
add flatpick as a yarn package and import it into the appropriate files (both js and scss)
2021-02-08 22:09:06 +01:00
Transifex-Openfoodnetwork
f6d47bc3e4 Updating translations for config/locales/de_DE.yml 2021-02-09 07:00:15 +11:00
Pau Perez
cbfea1ba97 Hide new report's balance under toggle 2021-02-08 19:43:45 +01:00
Pau Perez
e4319b06e6 Take into account other finalized order states
This makes it consistent with other places where we show order balances.
Here though, we purposefully skip canceled ones.
2021-02-08 19:34:42 +01:00
Pau Perez
a66d1b7299 Compute order balance chaining with query object 2021-02-08 19:34:42 +01:00
Pau Perez
106dcbae01 Add test coverage to the two distinct output rows 2021-02-08 19:34:42 +01:00
Pau Perez
412bb24e42 Ensure report rows are always in the same order
I saw the row were returned not respecting any ordering when refreshing
the page locally. It made it hard to debug whether or not the customer
balance was right.

It's less than ideal to use `allow_any_instance_of` but with this legacy
and very coupled code, it's the best we can do.
2021-02-08 19:34:42 +01:00
Pau Pérez Fabregat
d7cf265f0e Merge pull request #6831 from Matt-Yorkley/netread-timeout
Add retry handling for flaky spec timeouts
2021-02-08 19:26:01 +01:00
Andy Brett
8f59d76eb2 remove variants with no product 2021-02-08 08:57:11 -08:00
Pau Pérez Fabregat
ed1c1e5607 Merge pull request #6823 from Matt-Yorkley/dead-code-shipment
Dead code: Shipment#total_cost
2021-02-08 13:44:14 +01:00
Pau Pérez Fabregat
8fcfcfe813 Merge pull request #6826 from openfoodfoundation/dependabot/bundler/rswag-2.3.3
Bump rswag from 2.3.2 to 2.3.3
2021-02-08 13:43:23 +01:00
Pau Pérez Fabregat
8d1354f07a Merge pull request #6827 from openfoodfoundation/dependabot/bundler/timecop-0.9.3
Bump timecop from 0.9.2 to 0.9.3
2021-02-08 13:42:58 +01:00
Matt-Yorkley
dcc3d933bc Add retry handling for flaky spec timeouts 2021-02-08 12:38:22 +00:00
Transifex-Openfoodnetwork
af7ba5c535 Updating translations for config/locales/ru.yml 2021-02-08 23:32:39 +11:00
Transifex-Openfoodnetwork
fe04295ea5 Updating translations for config/locales/en_GB.yml 2021-02-08 22:33:05 +11:00
Transifex-Openfoodnetwork
6a9f6c82ef Updating translations for config/locales/es.yml 2021-02-08 20:19:50 +11:00
Transifex-Openfoodnetwork
c638729df2 Updating translations for config/locales/ca.yml 2021-02-08 20:19:34 +11:00
Transifex-Openfoodnetwork
96c017939c Updating translations for config/locales/en_FR.yml 2021-02-08 19:27:38 +11:00
Transifex-Openfoodnetwork
662c65665c Updating translations for config/locales/fr.yml 2021-02-08 19:27:27 +11:00
dependabot[bot]
da71cd0b84 Bump timecop from 0.9.2 to 0.9.3
Bumps [timecop](https://github.com/travisjeffery/timecop) from 0.9.2 to 0.9.3.
- [Release notes](https://github.com/travisjeffery/timecop/releases)
- [Changelog](https://github.com/travisjeffery/timecop/blob/master/History.md)
- [Commits](https://github.com/travisjeffery/timecop/compare/v0.9.2...v0.9.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-08 05:59:25 +00:00
dependabot[bot]
c49122461c Bump rswag from 2.3.2 to 2.3.3
Bumps [rswag](https://github.com/rswag/rswag) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.3.2...2.3.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-08 05:47:09 +00:00
Maikel
173cf9e536 Merge pull request #6565 from Matt-Yorkley/adjustments-inclusive
[Adjustments] Improve inclusive/additional tax recording
2021-02-08 09:38:31 +11:00
Transifex-Openfoodnetwork
f97fd8f8a7 Updating translations for config/locales/de_DE.yml 2021-02-08 02:01:06 +11:00
Matt-Yorkley
14530ddbc5 Remove dead code: Shipment#total_cost 2021-02-07 13:41:44 +00:00
Matt-Yorkley
8d6468dab1 Remove dead code: Shipment#display_total_cost 2021-02-07 13:41:40 +00:00
Matt-Yorkley
b9f46d4253 Increase precision on database columns that involve prices
Increases the maximum number of digits (on the left side of the decimal place) that the column can hold, to allow larger values. This change is made in Spree 2.2 and is relevant in cases with either large order values, or certain currencies that have large values as standard. For example, 100 UK Pounds is roughly 4000 Thai Baht. 1 million pounds is unlikely to ever be needed as a value, but 1 million Baht is not so unlikely...
2021-02-07 00:16:32 +00:00
Matt-Yorkley
7bf31d120b Add price field test 2021-02-07 00:05:39 +00:00
Arun Kumar Mohan
beece545de Remove cost price field from product variant form 2021-02-06 18:48:06 -05:00
Luis Ramos
e9aa6a5cd4 Rename Pin payment methods to check 2021-02-06 11:17:11 +00:00
Luis Ramos
c0ddeceb1e Remove Pin Payments 2021-02-06 11:15:48 +00:00
Transifex-Openfoodnetwork
5c96b3e070 Updating translations for config/locales/en_IE.yml 2021-02-06 03:50:32 +11:00
Cillian O'Ruanaidh
1fcf797d4e Include sort direction parameter during bulk product update to prevent JS error causing 'Saving' text to hang
Before if you did a bulk product update there was an error:

> TypeError: Cannot set property 'variants' of null

It only seemed to happen if pagination was required i.e. more than 15 products. It seemed to be happening because the default sort order on the products API endpoint which handles the bulk update is 'created desc' but 'name asc' on the /admin/products controller.

Another fix included here is for the sorting direction arrows which were not displaying on the admin products page. The sorting arrows require the sorting expression to be on the :sorting var instead of :q.sorting.

Fixes #6399
2021-02-05 16:08:08 +00:00
Transifex-Openfoodnetwork
5eb88f60e4 Updating translations for config/locales/fr_CA.yml 2021-02-06 00:23:51 +11:00
Transifex-Openfoodnetwork
52fc9cee31 Updating translations for config/locales/en_CA.yml 2021-02-06 00:14:49 +11:00
Matt-Yorkley
9851c9a762 Merge pull request #6678 from Matt-Yorkley/soft-deprecate-tax-rates
Introduce soft-deprecation strategy when modifying tax rates
2021-02-05 13:16:40 +01:00
Transifex-Openfoodnetwork
1dcdbd83a2 Updating translations for config/locales/es.yml 2021-02-05 21:46:31 +11:00
Transifex-Openfoodnetwork
f941ce1c7a Updating translations for config/locales/ca.yml 2021-02-05 21:46:27 +11:00
Pau Perez
5832bce1e4 Update all locales with the latest Transifex translations 2021-02-05 11:28:29 +01:00
Pau Pérez Fabregat
6ccf4b0245 Merge pull request #6817 from openfoodfoundation/transifex
Transifex
2021-02-05 11:24:00 +01:00
Transifex-Openfoodnetwork
dd2baf7e96 Updating translations for config/locales/en_FR.yml 2021-02-05 20:23:24 +11:00
Transifex-Openfoodnetwork
4a619e596e Updating translations for config/locales/fr.yml 2021-02-05 20:22:32 +11:00
Pau Pérez Fabregat
aee56f6331 Merge pull request #6812 from openfoodfoundation/transifex
Transifex
2021-02-05 08:45:46 +01:00
Andy Brett
d3ad997964 Merge pull request #6792 from andrewpbrett/migrate-variant-unit-values
Migrate variants with nil unit_value
2021-02-04 18:00:23 -08:00
Andy Brett
f746dec537 update spec 2021-02-04 13:52:45 -08:00
Andy Brett
1e863c6e65 Merge branch 'master' into migrate-variant-unit-values 2021-02-04 13:27:30 -08:00
Andy Brett
9c135ee0f7 add default to unit_value and weight 2021-02-04 13:17:43 -08:00
Pau Pérez Fabregat
3ab6da03e7 Merge pull request #6296 from luisramos0/remove_migs
Remove Migs payment gateway
2021-02-04 22:07:35 +01:00
Pau Pérez Fabregat
4b892d408e Merge pull request #6809 from andrewpbrett/remove-bogus-providers
Remove "Bogus" payment providers from staging and production
2021-02-04 21:09:16 +01:00
Pau Pérez Fabregat
35a76a313a Merge pull request #6807 from jibees/6798-new-product-form-fill-all-space
New Product Form: Fill all space available
2021-02-04 21:08:56 +01:00
Andy Brett
212186e059 check all variants, not just where we use 'items' 2021-02-04 11:45:36 -08:00
Andy Brett
d642984261 add db constraint; check for existing nil/nan in migration 2021-02-04 11:24:35 -08:00
Pau Pérez Fabregat
f6e6b6041c Merge pull request #6734 from coopdevs/disable-ui-mail-settings
Disable mail methods form so no one can edit
2021-02-04 17:57:32 +01:00
Andy Brett
91245ae6ab also set weight to default to 0.0 2021-02-04 08:05:48 -08:00
Pau Pérez Fabregat
76fa63fd71 Merge pull request #6789 from coopdevs/authorize-only-changed-vos
Authorize only changed vos
2021-02-04 15:22:50 +01:00
Pau Perez
655fe887f9 Distinguish user not present and list empty
This is a bit more thorough.
2021-02-04 13:19:04 +01:00
Pau Perez
88e22a78c2 Execute Ruby file in each test example
Kernel#require prevented this from happening thus, the file was only
loaded once so tests were passing so far by pure luck.
2021-02-04 13:16:03 +01:00
Jean-Baptiste Bellet
ef42653fee Use all available space
Don't need to put the table into a `.seven.columns.alpha.omega` div: use the maximum available space.
2021-02-04 12:53:12 +01:00
Jean-Baptiste Bellet
502ef8f6f2 Use as many space as available
Each row is sixteen long, use all space (five + eleven = sixteen)
2021-02-04 12:52:07 +01:00
Jean-Baptiste Bellet
7aef8a609e Use method image_path
Instead of using URL, use the image_path method which computes the path to an image asset in the public images directory.
2021-02-04 11:51:46 +01:00
Pau Perez
d6350c3d0b Remove deprecated Feature class implementation
This became dead code now.
2021-02-04 10:20:54 +01:00
Pau Perez
14cee0e45d Add new Feature class to toggle based on a closure
This enables toggling features as best fits us in each case. With this
new approach we can then toggle :customer_balance to an entire instance,
which is what we want in France.
2021-02-04 10:20:54 +01:00
Transifex-Openfoodnetwork
6c4f74e4e4 Updating translations for config/locales/es.yml 2021-02-04 20:06:10 +11:00
Transifex-Openfoodnetwork
3505ced3c2 Updating translations for config/locales/ca.yml 2021-02-04 20:05:50 +11:00
Pau Pérez Fabregat
4d7b29ca33 Merge pull request #6811 from openfoodfoundation/transifex
Transifex
2021-02-04 10:05:07 +01:00
Transifex-Openfoodnetwork
ea134d4600 Updating translations for config/locales/en_FR.yml 2021-02-04 19:07:08 +11:00
Transifex-Openfoodnetwork
e3b7736c68 Updating translations for config/locales/fr.yml 2021-02-04 19:06:37 +11:00
Transifex-Openfoodnetwork
439280d046 Updating translations for config/locales/de_DE.yml 2021-02-04 10:52:26 +11:00
Andy Brett
51630ac77b remove "Bogus" payment providers from staging and production 2021-02-03 14:03:13 -08:00
Luis Ramos
e5e2402a7c Add migrate to rename Migs payments to check 2021-02-03 21:53:15 +00:00
Luis Ramos
60667e23d9 Remove en.yml migs entry 2021-02-03 21:47:37 +00:00
Luis Ramos
e69eefdc0f Remove Migs payment gateway 2021-02-03 21:41:40 +00:00
Jean-Baptiste Bellet
4cb98dd4ac Fill all space available
These two fields (Display As, and Unit Names) are mutually exclusive: they are never displayed at the same time. Use all the available space.
2021-02-03 21:44:33 +01:00
Andy Brett
5d2c612839 don't send emails if auth required during checkout 2021-02-03 10:05:51 -08:00
Andy Brett
5160140d88 move SCA Auth module out of Subscriptions since we reuse it in Checkout 2021-02-03 10:05:47 -08:00
Andy Brett
5f84cd9f13 add param to ScaAuthorize call for redirect url 2021-02-03 09:50:42 -08:00
Andy Brett
6e735739a5 after customer auth + redirect, process payment and clear cvv_response_message 2021-02-03 09:50:37 -08:00
Andy Brett
558b01896f extract url helpers to helper module 2021-02-03 09:50:37 -08:00
Andy Brett
c0b3fc301e add email template to notify hub that auth is required 2021-02-03 09:50:28 -08:00
Andy Brett
4e3594b8f8 remove redundant url check method 2021-02-03 09:09:05 -08:00
Andy Brett
84db1c9bb4 update text of auth emails 2021-02-03 09:07:16 -08:00
Andy Brett
50074aae9d update db schema 2021-02-03 08:45:42 -08:00
Matt-Yorkley
389e149ded Wrap updates in a transaction block
Ensures the operation will be rolled ack if either saving the new record or deleting the old record fail
2021-02-03 11:54:54 +00:00
Pau Pérez Fabregat
79f98bdfa7 Merge pull request #6770 from Matt-Yorkley/more-dead-code
Dead code: Spree::Order#clear_adjustments
2021-02-03 09:37:42 +01:00
Pau Pérez Fabregat
fbab5120f1 Merge pull request #6771 from Matt-Yorkley/touch-updated-at
Touch updated_at column when updating records via #update_column
2021-02-03 09:33:37 +01:00
Luis Ramos
0a1863aa2d Remove extra empty line 2021-02-02 23:05:11 +00:00
Luis Ramos
54489948b9 Remove useless assignment 2021-02-02 23:04:12 +00:00
Luis Ramos
eb56d1ff28 Put the workaround inside a if clause on rails version so it works in both rails 4 and rails 5 2021-02-02 23:00:21 +00:00
Luis Ramos
886888c2a8 Workaround to get where_values to work in rails 5 2021-02-02 22:51:34 +00:00
Luis Ramos
bb91d37270 Force angular-rails-templates to be below 1.1.0 2021-02-02 22:51:34 +00:00
Luis Ramos
c171441b6c Add rails-controller-testing to rails 5 2021-02-02 22:51:34 +00:00
Luis Ramos
08d5a82627 Move some entries in Gemfile to general part, no need to keep these as rails 5 exceptions as a general rule works well 2021-02-02 22:51:34 +00:00
Luis Ramos
068b72e41a Update Gemfile_next.log by running bundle install 2021-02-02 22:51:34 +00:00
Andy Brett
4ba5d9dafc Merge pull request #6779 from openfoodfoundation/dependabot/bundler/test-unit-3.4.0
Bump test-unit from 3.3.9 to 3.4.0
2021-02-02 14:50:23 -08:00
Andy Brett
83d7d49e44 refactor sub confirm job; move email to service 2021-02-02 10:43:37 -08:00
Andy Brett
142af0055c use #find_each instead of #each 2021-02-02 09:40:17 -08:00
Andy Brett
109a3da104 use more efficient query; enforce not null at db level 2021-02-02 09:32:47 -08:00
Pau Pérez Fabregat
19636c687e Merge pull request #6796 from openfoodfoundation/transifex
Transifex
2021-02-02 15:50:15 +01:00
Pau Pérez Fabregat
32892b7ae5 Merge pull request #6793 from openfoodfoundation/dependabot/bundler/rubocop-1.9.1
Bump rubocop from 1.9.0 to 1.9.1
2021-02-02 15:49:48 +01:00
Pau Pérez Fabregat
9bb2970a07 Merge pull request #6782 from jibees/6766-manage-hover-on-account-tabs
User profile tabs: specify :hover rule only for devices that can effectively handle it
2021-02-02 15:47:03 +01:00
Pau Perez
a19aceae8c Replace spree_put with put in controller tests
This removes the following annoying deprecation warnings that happen in
each test.

```
DEPRECATION WARNING: You are trying to generate the URL for a named route called :main_app but no such route was found. In the future, this will result in an `ActionController::UrlGenerationError` exception. (called from process_action_with_route at /usr/s
rc/app/spec/support/controller_requests_helper.rb:49)
DEPRECATION WARNING: Passing the `use_route` option in functional tests are deprecated. Support for this option in the `process` method (and the related `get`, `head`, `post`, `patch`, `put` and `delete` helpers) will be removed in the next version without
 replacement. Functional tests are essentially unit tests for controllers and they should not require knowledge to how the application's routes are configured. Instead, you should explicitly pass the appropiate params to the `process` method. Previously th
e engines guide also contained an incorrect example that recommended using this option to test an engine's controllers within the dummy application. That recommendation was incorrect and has since been corrected. Instead, you should override the `@routes`
variable in the test case with `Foo::Engine.routes`. See the updated engines guide for details. (called from process_action_with_route at /usr/src/app/spec/support/controller_requests_helper.rb:49)
```
2021-02-02 15:39:24 +01: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 Pérez Fabregat
d48aa4a73f Merge pull request #6748 from coopdevs/dont-fetch-vos-with-deleted-variant
Do not fetch VOs with deleted variant
2021-02-02 15:38:29 +01:00
Matt-Yorkley
d7b130d293 Update all locales with the latest Transifex translations 2021-02-02 12:23:25 +00:00
Matt-Yorkley
617d914835 Merge pull request #6788 from jibees/6783-align-new-product-form
Use full width for "new product" form
2021-02-02 13:11:12 +01:00
Matt-Yorkley
b1349306f9 Merge pull request #6787 from jibees/6784-align-items-on-shipping-and-payment-methods-forms
Align items on shipping and payment methods forms
2021-02-02 13:08:28 +01:00
Pau Perez
cdcda46bff Re-enable mail_bcc field in mail method settings
This feels safer because we don't risk messing up with any instance's
operations while still moving us towards removing this page.
2021-02-02 12:16:55 +01:00
Jean-Baptiste Bellet
a82b24d4c1 specify width and height
Was too small, almost invisible.
2021-02-02 11:19:20 +01:00
Transifex-Openfoodnetwork
596e8a6828 Updating translations for config/locales/ru.yml 2021-02-02 20:48:36 +11:00
dependabot[bot]
1613c2e6fb Bump rubocop from 1.9.0 to 1.9.1
Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 1.9.0 to 1.9.1.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v1.9.0...v1.9.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-02 05:34:32 +00:00
Andy Brett
850dfd776a migrate variants with nil unit_value 2021-02-01 21:27:32 -08:00
Pau Pérez Fabregat
9db9d2d138 Merge pull request #6786 from jibees/6781-align-packages-selection-on-registration
Package selection: use "columns" system to display 3 items on same line
2021-02-01 21:06:00 +01:00
Pau Pérez Fabregat
bcbd1ce8bc Merge pull request #6790 from openfoodfoundation/transifex
Transifex
2021-02-01 21:05:16 +01:00
Pau Perez
20b9ac89b8 Fix missing translation
The used key doesn't exist.
2021-02-01 18:45:02 +01:00
Pau Perez
063d44fecc Disable mail methods form fields except mails_from
This moves a step closer to having a simple and straightforward way to
configure the app's mail delivery which doesn't require to be a nuclear
engineer to troubleshoot mail issues.

It happens way too often that servers have mail config broken when
restarted or redeployed and it takes too much brain power to fix it. No
doubt; it's way too complex.

I chose to leave this page's form fields but "Send mails as" as
read-only. This other field is still used by instance manager to
troubleshoot mail issues.
2021-02-01 18:45:02 +01:00
Jean-Baptiste Bellet
370a108b3d Add stripe account owner selector as a new row
Otherwise, not displayed.
2021-02-01 18:00:28 +01:00
Transifex-Openfoodnetwork
38dde5e063 Updating translations for config/locales/es.yml 2021-02-02 03:04:56 +11:00
Transifex-Openfoodnetwork
fe79186bec Updating translations for config/locales/ca.yml 2021-02-02 03:03:33 +11:00
Pau Pérez Fabregat
d5413224b7 Merge pull request #6769 from openfoodfoundation/transifex
Transifex
2021-02-01 16:57:45 +01:00
Pau Pérez Fabregat
90466e19dc Merge pull request #6776 from Matt-Yorkley/dead-argument
Dead code: superfluous argument in CartService#populate
2021-02-01 16:49:02 +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
6584f510e8 Remove now dead code 2021-02-01 16:38:40 +01:00
Jean-Baptiste Bellet
acbe0faa1e use full width for new product form
- use the sixteen full width: eight + eight or eight + four + four, ...
2021-02-01 16:35:55 +01:00
Pau Pérez Fabregat
1420c43a0a Merge pull request #6778 from openfoodfoundation/dependabot/bundler/database_cleaner-1.99.0
Bump database_cleaner from 1.8.5 to 1.99.0
2021-02-01 16:06:51 +01:00
Jean-Baptiste Bellet
adf67475be special aligment for stripe form 2021-02-01 15:39:51 +01:00
Jean-Baptiste Bellet
c44ce85f30 alignment for specific provider settings form in payment method 2021-02-01 15:31:39 +01:00
Jean-Baptiste Bellet
46e6bc6179 align payment method form
- enlarge the form to be "full size" (four + twelve = 16 columns)
2021-02-01 15:18:45 +01:00
Jean-Baptiste Bellet
e57acd3163 align shipping method form (editing)
- use `row` and no more `field` to be consistent
- enlarge the form to be "full size" (four + twelve = 16 columns)
- enlarge "hubs sidebar"
2021-02-01 15:11:47 +01:00
Pau Pérez Fabregat
0878db70fe Merge pull request #6780 from openfoodfoundation/dependabot/bundler/webmock-3.11.2
Bump webmock from 3.11.1 to 3.11.2
2021-02-01 14:57:45 +01:00
Pau Pérez Fabregat
640681d664 Merge pull request #6719 from coopdevs/stop-using-spree-req-helpers-in-users-controller-spec
[Rails 5] Stop using deprecated req. helpers in users specs
2021-02-01 14:56:28 +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
Jean-Baptiste Bellet
b7e23a7401 user "columns" system to display 3 items on same line 2021-02-01 14:15:50 +01:00
Jean-Baptiste Bellet
fcd304182b specify :hover rule only for devices that can handle it
Since mobile device cannot handle :hover rule (hover is non sense for touch devices), specify css for only devices that effectivly handle it.

see https://css-tricks.com/solving-sticky-hover-states-with-media-hover-hover/
and https://caniuse.com/mdn-css_at-rules_media_hover for compatibility (quite good)
2021-02-01 10:53:34 +01:00
dependabot[bot]
863a7ec688 Bump webmock from 3.11.1 to 3.11.2
Bumps [webmock](https://github.com/bblimke/webmock) from 3.11.1 to 3.11.2.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.11.1...v3.11.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-01 06:29:04 +00:00
dependabot[bot]
6f4b18a7d5 Bump test-unit from 3.3.9 to 3.4.0
Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.3.9 to 3.4.0.
- [Release notes](https://github.com/test-unit/test-unit/releases)
- [Commits](https://github.com/test-unit/test-unit/compare/3.3.9...3.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-01 06:23:46 +00:00
dependabot[bot]
e9c789a459 Bump database_cleaner from 1.8.5 to 1.99.0
Bumps [database_cleaner](https://github.com/DatabaseCleaner/database_cleaner) from 1.8.5 to 1.99.0.
- [Release notes](https://github.com/DatabaseCleaner/database_cleaner/releases)
- [Changelog](https://github.com/DatabaseCleaner/database_cleaner/blob/master/History.rdoc)
- [Commits](https://github.com/DatabaseCleaner/database_cleaner/compare/v1.8.5...v1.99.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-01 06:20:51 +00:00
Matt-Yorkley
3da21ce2bd Add historical note to CartService
Useful background when applying upstream fixes from Spree::OrderPopulator, and means grepping for OrderPopulator doesn't come up empty.
2021-01-30 16:57:05 +00:00
Matt-Yorkley
d39468013e Clarify CartService#populate arguments
This method doesn't use :products anywhere, it doesn't need to be passed in as part of the argument.
2021-01-30 16:52:59 +00:00
Matt-Yorkley
2de54e5ae2 Fix updated_at issue in RemoveTransientData spec
The value in the test setup was not what was expected after the updates to touching the updated_at columns.
2021-01-30 13:10:38 +00:00
Matt-Yorkley
0e82160b76 Touch the updated_at column when updating records via #update_column
#update_column(s) skips callbacks (which is useful), but it doesn't change the updated_at field on the record by default (which we should be doing in these cases).

This change is made in Spree 2.2 here: b367c629ce
2021-01-30 12:49:38 +00:00
Andy Brett
c28b65f772 update subs jobs delivery methods 2021-01-29 21:08:41 -08:00
Andy Brett
e694449dcc move subs jobs out of spree namespace 2021-01-29 21:08:41 -08:00
Andy Brett
3da0c2e386 send authorization emails when running the subscriptionconfirmjob 2021-01-29 21:08:41 -08:00
Andy Brett
87bce505ec Merge pull request #6765 from openfoodfoundation/dependabot/bundler/rack-mini-profiler-2.3.1
Bump rack-mini-profiler from 2.3.0 to 2.3.1
2021-01-29 20:04:13 -08:00
Andy Brett
fb5668afa6 Merge pull request #6764 from openfoodfoundation/dependabot/bundler/rubocop-1.9.0
Bump rubocop from 1.8.1 to 1.9.0
2021-01-29 20:03:56 -08:00
Matt-Yorkley
8466ab5675 Extract more OFN fee-handling code from Spree::Order class 2021-01-29 22:51:21 +00:00
Matt-Yorkley
793baca44f Update fees on single line item and then order fees in LineItemsController#delete
Fees on other line items are left alone (not recreated), and whatever fees on the order are updated.
2021-01-29 21:53:11 +00:00
Matt-Yorkley
ce5f9a9a94 Update existing closed order fees when deleting line items on completed orders in LineItemsController#delete
Whatever fee adjustments there are on other line items should be left alone (not recreated), and whatever fee adjustments are already on the order should just be updated.
2021-01-29 21:53:11 +00:00
Matt-Yorkley
58c7c90624 Refactor methods for updating closed adjustments 2021-01-29 21:53:11 +00:00
Matt-Yorkley
b2b6d3ab87 Relocate specs for #provided_by_order_cycle? method extracted from Order class to service 2021-01-29 21:53:11 +00:00
Matt-Yorkley
dffa4d4f39 Update order methods delegation 2021-01-29 21:53:09 +00:00
Matt-Yorkley
3ecdfca9cf Rename fee adjustment clear-all method 2021-01-29 21:52:28 +00:00
Matt-Yorkley
9abf6cdcdf Rename expensive method Order#update_distribution_charge!
This method is named "update distribution charge". What this method actually does is delete all of the fee adjustments on an order and all it's line items, then recreate them all from scratch. We call this from lots of different places all the time, and it's incredibly expensive. It even gets called from inside of transactions being run inside callbacks. Renaming it hopefully will add a bit of clarity.

This needs to be a lot more granular!
2021-01-29 21:52:28 +00:00
Matt-Yorkley
785cdf9bdc Extract order fees logic to service 2021-01-29 21:52:27 +00:00
Matt-Yorkley
fc06e5e4c3 Remove dead code Spree::Order#clear_adjustments 2021-01-29 19:58:05 +00:00
Transifex-Openfoodnetwork
8f163cf5b5 Updating translations for config/locales/en_CA.yml 2021-01-30 06:08:22 +11:00
Matt-Yorkley
e7866db7b1 Improve efficiency in applying enterprise fees in Order#update_distribution_charge! 2021-01-29 18:32:26 +00:00
Matt-Yorkley
b97734d918 Merge pull request #6720 from cillian/cancel-email-for-shop
When an order is cancelled by a customer send an email to the shop.
2021-01-29 18:30:28 +01:00
Cillian O'Ruanaidh
0cfd7de8a8 Fix the link to the order in the order cancelled email. 2021-01-29 14:14:11 +00:00
Matt-Yorkley
d03be3b8dc Update all locales with the latest Transifex translations 2021-01-29 11:42:09 +00:00
Matt-Yorkley
e4d7e03903 Merge pull request #6740 from Matt-Yorkley/carts-cleanup
Remove old abandoned carts
2021-01-29 12:32:16 +01:00
Cillian O'Ruanaidh
c8198ff67c Merge branch 'master' into include-ready-for-in-producer-notification 2021-01-29 11:30:11 +00:00
Cillian O'Ruanaidh
899dffec96 When an order is cancelled by a customer send an email to the shop.
Fixes #6435 i.e. If the customer paid for their order by Stripe/Paypal then the Enterprise needs to know that the order was cancelled in order to arrange a refund.  Refunds are not automatically processed when an order is cancelled.

This will send a very basic email to the shop, it only includes a link to view the cancelled order in the admin area initially.

I created a CustomerOrderCancellation object here because orders can be cancelled in two ways (1) by the customer, so an email should be sent to the shop. (2) by the shop, so an email doesn't need to be sent. However the code for cancelling order happens in Order#cancel via the state machine. Rather than passing some sort of parameter into #cancel to indicate whether it is a customer or shop cancelled order it might be clearer to have a CustomerOrderCancellation object, there could be other differences between customer or shop cancelled orders in future maybe.
2021-01-29 11:23:05 +00:00
Pau Pérez Fabregat
818dfc0399 Merge pull request #6751 from jibees/4971-profile-tabs-back-forward-buttons
Make user's profile tabs aware of location change event
2021-01-29 10:01:58 +01:00
dependabot[bot]
32761baa68 Bump rack-mini-profiler from 2.3.0 to 2.3.1
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.3.0...v2.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-29 05:38:38 +00:00
dependabot[bot]
36380414a4 Bump rubocop from 1.8.1 to 1.9.0
Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 1.8.1 to 1.9.0.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v1.8.1...v1.9.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-29 05:35:09 +00:00
Matt-Yorkley
4ec68dcd85 Update migration to include TaxRate model 2021-01-29 02:37:35 +00:00
Matt-Yorkley
9791287712 Run data cleanup job at 4:30am 2021-01-28 21:51:50 +00:00
Matt-Yorkley
4f7c8062a1 Create class to map join table and simplify code 2021-01-28 21:51:50 +00:00
Matt-Yorkley
d502320b14 Enable cascading deletes 2021-01-28 21:51:47 +00:00
Andy Brett
6fea2dbe46 Merge pull request #6760 from openfoodfoundation/dependabot/bundler/rswag-2.3.2
Bump rswag from 2.3.1 to 2.3.2
2021-01-28 13:11:33 -08:00
Pau Pérez Fabregat
45573dc522 Merge pull request #6753 from jibees/6746-epic-fullwdith-admin-layout-quick-wins
FullWidth admin layout quick wins
2021-01-28 21:10:06 +01:00
Pau Pérez Fabregat
0a1d4873e3 Merge pull request #6736 from jibees/6707-remove-anchor-jump
Remove anchor in URL so avoid browser scrolling to the top of the page when editing order
2021-01-28 21:09:08 +01:00
Pau Pérez Fabregat
abe2cb9fac Merge pull request #6728 from emclaughlin1215/add_tax_rates_i18n_key
Adding a tax_rates key to en.yml to match the key used everywhere.
2021-01-28 21:04:22 +01:00
Matt-Yorkley
dcbe9c4011 Merge pull request #6756 from andrewpbrett/fix-sca-regression
Fix SCA regression
2021-01-28 19:45:08 +01:00
Pau Pérez Fabregat
d4f6f903c9 Merge pull request #6759 from openfoodfoundation/dependabot/bundler/ddtrace-0.45.0
Bump ddtrace from 0.44.0 to 0.45.0
2021-01-28 16:40:29 +01:00
Pau Pérez Fabregat
6cc19ac6d5 Merge pull request #6726 from filipefurtad0/shipping_methods_spec_pending_fix
Fixes a pending test case and improves the spec run time
2021-01-28 16:39:39 +01:00
Pau Pérez Fabregat
2668747237 Merge pull request #6723 from luisramos0/spree_routes_2
Move spree orders routes out of the spree engine routes into the main app routes
2021-01-28 16:31:49 +01:00
Matt-Yorkley
57f429db58 Merge pull request #6606 from mkllnk/6081-add-to-cart
Add quantity input to shop front
2021-01-28 15:51:08 +01:00
Matt-Yorkley
de530c2a46 Merge pull request #6750 from mkllnk/6749-i18n-in-assets
Use JS I18n function in assets to avoid parsing error
2021-01-28 15:50:22 +01:00
Jean-Baptiste Bellet
553053bad1 use find instead of click_link because <a> element no longer has href attribute
- click_link only looks for <a> element with href attribute
 - Use a regexp for a case-insensitive search (as CSS use a uppercase transform)
2021-01-28 09:45:24 +01:00
dependabot[bot]
55cddbbc1a Bump rswag from 2.3.1 to 2.3.2
Bumps [rswag](https://github.com/rswag/rswag) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/rswag/rswag/releases)
- [Changelog](https://github.com/rswag/rswag/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rswag/rswag/compare/2.3.1...2.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-28 05:46:19 +00:00
dependabot[bot]
0a128d83d0 Bump ddtrace from 0.44.0 to 0.45.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.44.0 to 0.45.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.44.0...v0.45.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-28 05:41:53 +00:00
Matt-Yorkley
c65f623ed8 Memoize and simplify objects being checked in Order#provided_by_order_cycle? 2021-01-28 01:02:57 +00:00
Luis Ramos
7cea4138c2 Fix spec setup 2021-01-27 22:44:52 +00:00
Matt-Yorkley
85c489d303 Ignore carts with failed payments in cleanup 2021-01-27 22:40:23 +00:00
Matt-Yorkley
e6c59fbd96 Update data retention periods
Sessions and cart data are removed if older than 3 months, instead of 6.
2021-01-27 22:40:23 +00:00
Matt-Yorkley
3fddaba4bf Extract private methods 2021-01-27 22:40:23 +00:00
Matt-Yorkley
0a88712926 Clear orphaned records in join table spree_option_value_line_items 2021-01-27 22:40:23 +00:00
Matt-Yorkley
4230d46a06 Remove carts older than 6 months 2021-01-27 22:40:23 +00:00
Maikel
8a757812e7 Merge pull request #6735 from coopdevs/enable-mail-delivery-always
Enable mail delivery always
2021-01-28 09:31:12 +11:00
Matt-Yorkley
f49355e5d3 Merge pull request #6724 from Matt-Yorkley/remove-price-adjustments
Delete dead code Spree::Order#price_adjustments
2021-01-27 23:29:38 +01:00
Luis Ramos
12dac82b8a Delete dead route 2021-01-27 22:08:06 +00:00
Luis Ramos
c604f4c0c6 Remove dead endpoint 2021-01-27 22:05:04 +00:00
Jean-Baptiste Bellet
bb21543ae0 remove useless brackets 2021-01-27 21:35:55 +01:00
Pau Pérez Fabregat
c3897dd3df Merge pull request #6643 from coopdevs/customer-balance-frontoffice
Customer balance frontoffice
2021-01-27 19:55:56 +01:00
Andy Brett
e6e20309aa Revert "don't try to process a payment if it's pending auth"
This reverts commit bba9e55006.
2021-01-27 08:06:20 -08:00
Jean-Baptiste Bellet
9b1c0e6806 avoid inserting div in the columns grid system
it break the css selectors (as :first-child, ...)

fixe: #6747
2021-01-27 15:05:48 +01:00
Jean-Baptiste Bellet
c5edd74d05 remove useless wrapper and align items (both right and left)
Fixe: #6747
2021-01-27 15:04:45 +01:00
Jean-Baptiste Bellet
a6fba8a065 Put content into grid columns system
Two columns of three + a ten column rather than empty column + content outside column system

correct #6745
2021-01-27 14:40:50 +01:00
Matt-Yorkley
7525620d6c Merge pull request #6070 from Matt-Yorkley/responsive-admin
Full-width admin layout
2021-01-27 12:45:06 +01:00
Matt-Yorkley
feca9e7838 Improve hubs sidebar in payment methods edit 2021-01-27 11:38:01 +00:00
Matt-Yorkley
398b4a09a1 Improve enterprise fees calculator fields 2021-01-27 11:38:01 +00:00
Matt-Yorkley
366588de95 Improve <legend> element centering 2021-01-27 11:38:01 +00:00
Matt-Yorkley
b5ab6cbf69 Improve button spacing in enterprises submenu 2021-01-27 11:38:01 +00:00
Matt-Yorkley
e762c1d02f Adjust buttons layout on enterprise shipping and payment methods page 2021-01-27 11:38:01 +00:00
Matt-Yorkley
f72cd6222f Adjust variant columns in inventory pages 2021-01-27 11:38:01 +00:00
Matt-Yorkley
79316560d6 Remove skeleton.css from /vendor/assets
This was recently imported from spree_core
2021-01-27 11:38:01 +00:00
Matt-Yorkley
539ff228e0 Adjust form layout on order cycle edit form (simple view) 2021-01-27 11:38:01 +00:00
Matt-Yorkley
afdb5e8c6f Add a max-width of 1400px for huge monitors (1600px or more) 2021-01-27 11:38:01 +00:00
Matt-Yorkley
d40ec2d63c Adjust order cycle edit form layout 2021-01-27 11:38:01 +00:00
Matt-Yorkley
0d99656b1b Adjust dashboard layout 2021-01-27 11:38:01 +00:00
Matt-Yorkley
52cfa0a103 Remove old Javascript hacks for the main menu and replace with flex-based CSS properties 2021-01-27 11:38:01 +00:00
Matt-Yorkley
d886b1dcea Tweak some styles and layout classes 2021-01-27 11:38:01 +00:00
Matt-Yorkley
29e74017a6 Replace fixed 960 grid 2021-01-27 11:38:01 +00:00
Pau Pérez Fabregat
9fe2cb1a30 Merge pull request #6681 from luisramos0/css
[Rails 5] Make the app work in rails 5
2021-01-27 12:08:27 +01:00
Jean-Baptiste Bellet
0242e1a0c9 avoid unnecessary javascript:void(0) 2021-01-27 10:26:05 +01:00
Jean-Baptiste Bellet
48c667d2dd add onLocationChangeSuccess event handler
watch this event and toggle class if needed.
2021-01-27 10:25:05 +01:00
Maikel Linke
06983c4dc7 Use JS I18n function in asset, avoid parsing error
A deployment to the French server failed because a translation contained
an apostrophe `'` and we were rendering it without escaping in
Javascript. We don't have that problem and avoid other issues by using
the javascript translate function. That way the error message is
translated in the browser with the user's language and we don't have to
do any additional escaping.
2021-01-27 14:12:25 +11:00
Maikel Linke
0393e902c4 Update translations from Transifex 2021-01-27 08:28:37 +11:00
Luis Ramos
ab135e30c0 Fix order_path in stripe connect spec 2021-01-25 20:25:13 +00:00
Luis Ramos
11fdbe5e9f Switch spree from namespace to scope in routes so helpers like order_path keep working 2021-01-25 20:01:08 +00:00
Luis Ramos
34ae3ca24d Replace spree_order_url with order_url so we can use scope in the routes file 2021-01-25 19:56:25 +00:00
Luis Ramos
f3da7afd55 Replace spree_order_path with order_path so we can use scope in the routes file 2021-01-25 19:55:42 +00:00
Luis Ramos
dbef7b60a6 Adapt spec to new orders url 2021-01-25 19:52:48 +00:00
Luis Ramos
21f48b52c8 Fix cancel order route 2021-01-25 19:52:48 +00:00
Luis Ramos
592474189d Fix order route in paypal controller 2021-01-25 19:52:48 +00:00
Luis Ramos
d52661fe0a Fix admin order form to use admin orders route 2021-01-25 19:52:48 +00:00
Luis Ramos
00fcb89af1 Fix order_url routes in a few places 2021-01-25 19:52:48 +00:00
Luis Ramos
dd4ca8a8e6 Fix order path in subs emailer view 2021-01-25 19:52:48 +00:00
Luis Ramos
f25e06ddb6 Fix order path route in payments controller 2021-01-25 19:52:48 +00:00
Luis Ramos
3813b80615 Adapt order path route in order details view 2021-01-25 19:52:48 +00:00
Luis Ramos
88c21ef82e Fix order path 2021-01-25 19:52:48 +00:00
Luis Ramos
60c3557c2d Fix checkout form order path 2021-01-25 19:52:48 +00:00
Luis Ramos
6e7ee02191 Change spree.order_path to spree_order_path everywhere 2021-01-25 19:52:48 +00:00
Luis Ramos
e98d97ae0d Move spree orders routes out of the spree engine routes into the main app routes, still inside the spree namespace 2021-01-25 19:52:48 +00:00
Pau Pérez Fabregat
10a60b1f72 Merge pull request #6729 from openfoodfoundation/dependabot/bundler/shoulda-matchers-4.5.1
Bump shoulda-matchers from 4.5.0 to 4.5.1
2021-01-25 16:34:13 +01:00
Jean-Baptiste Bellet
686dcaaa1b remove '#' as path for link_to
Adding '#' to the current url makes most of browser jump to the top of the page. Avoid this by deleting this added # (meaningless) and replacing it by empty string.
2021-01-25 16:09:12 +01:00
Pau Perez
5677c86f9b Remove enable_mail_delivery preference from DB
It's no longer used.
2021-01-25 13:34:13 +01:00
Pau Perez
4a5869b60c Remove ability to toggle mail delivery
OFN requires mails to work so there's no point in having this
conditional with the maintenance cost it entails.
2021-01-25 13:27:44 +01:00
Pau Pérez Fabregat
efd2c81877 Merge pull request #6722 from luisramos0/spree_routes
Replace spree_get with simple get
2021-01-25 09:12:51 +01:00
dependabot[bot]
70bd81430d Bump shoulda-matchers from 4.5.0 to 4.5.1
Bumps [shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/thoughtbot/shoulda-matchers/releases)
- [Changelog](https://github.com/thoughtbot/shoulda-matchers/blob/master/CHANGELOG.md)
- [Commits](https://github.com/thoughtbot/shoulda-matchers/compare/v4.5.0...v4.5.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-25 06:13:04 +00:00
filipefurtad0
c5c9e803ab Fixes a pending test case and improves the spec run time 2021-01-24 13:32:04 +00:00
Erin McLaughlin
609db647bb Adding a tax_rates key to en.yml to match the key used everywhere. 2021-01-23 22:07:07 -05:00
Matt-Yorkley
ff54426e30 Expand tests on additional and inclusive taxes. 2021-01-23 03:59:32 +00:00
Matt-Yorkley
7940a42e8c Add Spree::Order#all_adjustments scope, which can be used to get all adjustments on an order, and order's line_items, etc, not just adjustments directly on the order itself. 2021-01-23 03:59:32 +00:00
Matt-Yorkley
4d4c055577 Loosen Spree::Adjustment#tax scope to include any tax adjustments 2021-01-23 03:59:32 +00:00
Matt-Yorkley
ddfcda0c0b Adapt imported Paypal code
The #additional scope from Spree 2.2 is now present, so we can tidy up this conditional.
2021-01-23 03:59:32 +00:00
Matt-Yorkley
173e502c98 Rename #included scope to #inclusive
This method name (#included) is reserved and used internally by ActiveRecord. After updating Ruby, this has changed from a silent warning to a fatal error.
2021-01-23 03:59:32 +00:00
Matt-Yorkley
a328a9bc1b Use included boolean in tax adjustments 2021-01-23 03:59:32 +00:00
Matt-Yorkley
8be18cd05c Add #included and #additional scopes to Spree::Adjustment
We can now do things like:
```
included_tax = order.adjustments.tax.included.sum(:amount)
additional_tax = order.adjustments.tax.additional.sum(:amount)
```
2021-01-23 03:59:32 +00:00
Matt-Yorkley
66bf69b52c Add included column to spree_adjustments table 2021-01-23 03:59:31 +00:00
Matt-Yorkley
0247386f82 Delete dead code Spree::Order#price_adjustments
This method returns the same thing as the Spree::Order#line_items_adjustments scope, but in a slightly less useful format (an array instead of a relation). The method's name is also totally inaccurate, as currently the only adjustments that appear on line items are tax adjustments for inclusive tax rates, which by definition have no effect on the price whatsoever...
2021-01-23 00:05:56 +00:00
Luis Ramos
1643636d43 Replace spree_get with simple call to get 2021-01-22 22:32:48 +00:00
Luis Ramos
d6a53cb84f Replace spree_get with simple call to get 2021-01-22 22:30:11 +00:00
Luis Ramos
94275eedfb Replace spree_get with simple call to get 2021-01-22 22:28:53 +00:00
Luis Ramos
59e900826e Replace spree_get with get
Spree helper method is not needed
2021-01-22 22:22:50 +00:00
Luis Ramos
be9ee376a3 Use get instead of spree_get
spree_get is not needed in these cases
2021-01-22 22:20:52 +00:00
Cillian O'Ruanaidh
9c6e97f90d Merge branch 'master' into include-ready-for-in-producer-notification 2021-01-22 11:45:01 +00:00
Cillian O'Ruanaidh
70a557cea3 Display the pickup time for each distributor, not the coordinator, in the Notify Producers email 2021-01-22 11:39:46 +00:00
Pau Perez
cc2e46890e Stop using deprecated req. helpers in users specs
This removes the following two deprecation warnings that we are getting
by millions (the two for each controller action test):

```
DEPRECATION WARNING: You are trying to generate the URL for a named route called "main_app" but no such route was found. In the future, this will result in an `ActionController::UrlGenerationError` exception. (called from process_action_with_route at /usr/
src/app/spec/support/controller_requests_helper.rb:49)
DEPRECATION WARNING: Passing the `use_route` option in functional tests are deprecated. Support for this option in the `process` method (and the related `get`, `head`, `post`, `patch`, `put` and `delete` helpers) will be removed in the next version without
 replacement. Functional tests are essentially unit tests for controllers and they should not require knowledge to how the application's routes are configured. Instead, you should explicitly pass the appropiate params to the `process` method. Previously th
e engines guide also contained an incorrect example that recommended using this option to test an engine's controllers within the dummy application. That recommendation was incorrect and has since been corrected. Instead, you should override the `@routes`
variable in the test case with `Foo::Engine.routes`. See the updated engines guide for details. (called from process_action_with_route at /usr/src/app/spec/support/controller_requests_helper.rb:49)
```

It slows down our test suite and clutters the output a lot. As per my
investigation, this is something that arose in
https://github.com/rails/rails/pull/17453 and addressed in
https://github.com/rails/rails/pull/17725. TL;DR: Engines need to define
their routes in controller tests as shown in
https://github.com/discourse/discourse/pull/3011.

This, however, revealed a much complex reality in our case. We're still
using a `Spree::Core::Engine` with its own routes at
`Spree::Core::Engine.routes`. So we can't skip defining `routes { }` for
each of its controllers unless we merge this engine into our app, but
that's going to require more effort. What could that entail in
https://github.com/openfoodfoundation/openfoodnetwork/compare/master...coopdevs:move-users-to-app-routes.

To make it even worse, note that we override spree's core routes from
our own, resulting in a controller whose actions are being served from
routes defined in either `config/routes.rb` or `config/spree/routes.rb`
🙈.
2021-01-22 11:42:17 +01:00
Maikel Linke
46d23f1f8a Fit bulk buy modal on small mobile screens
On some Iphones the modal wouldn't fit and there were line breaks
between the input fields. The inputs are now stacked vertically on small
screens so that there is still plenty of space for large numbers in the
quantity fields.
2021-01-22 16:44:52 +11:00
Maikel Linke
4ab48c4b85 Initialise valid quantities when choosing OCs
Line items were initialised with undefined quantities which makes it
impossible to distinguish between the initial unset quantity and a user
entering an invalid quantity. When a user changed order cycles, all
quantities are reset and the UI displayed the quantity modifier buttons
instead of the Add button.

Initialising with the valid quantity 0 helps us to display the Add
button in that situation.
2021-01-22 16:42:21 +11:00
Maikel Linke
bd731267ec Allow user to get maximum available quantity
When the user entered a number beyond the stock level, the browser was
correcting that to the max number which is very helpful. But Angular was
setting the model to undefined which removes the item from the cart.

Deactivating Angular's max behaviour let's us set the value ourselves
which is then used in the cart.
2021-01-22 16:42:21 +11:00
Maikel Linke
35b4e8c4d1 Allow editing of invalid quantities
If the user entered an invalid quantity, Angular set the model to
undefined and we removed the input field to show the add button. That
makes it impossible for a user to see what the maximum quantity to enter
would be. For example:

- The variant has a stock level of 5.
- The user enters 7.
- Angular sets it to undefined.
- The input field disappears.
- The user is startled and doesn't know how to proceed.

But now we hide the input only if it's deliberately set to zero.
2021-01-22 16:42:21 +11:00
Maikel Linke
0166400b03 Guard against invalid quantity input
The user can now type anything into the quantity field and some of it
may not be valid. These safe guards ensure that the buttons still work
even if the quantity is undefined or out of range.

Angular guards against the value being out of range but that has other
side-effects. We want to be able to de-activate some of Angular's
behaviour.
2021-01-22 16:42:20 +11:00
Maikel Linke
cf2a105b2a Prevent line breaks within plus/minus buttons 2021-01-22 16:42:20 +11:00
Maikel Linke
688be46b10 Avoid horizontal scroll bar on small screens 2021-01-22 16:42:20 +11:00
Maikel Linke
3558d01fce Give the new input fields more space
The additional input needs more space and we are adjusting columns here.
2021-01-22 16:42:20 +11:00
Maikel Linke
66423a1ec3 Add quantity input to shop front product list
Adding bigger quantities can now be done via an input field instead of
clicking a thousand times.

The add-button has been widened to match the new space requirements.
2021-01-22 16:42:20 +11:00
Maikel Linke
e5506df5ea Replace bulk quantity label with input field
Enable the user to enter a number directly.
2021-01-22 16:42:20 +11:00
Maikel Linke
af918e63ee Change bulk quantities on any quantity change
This prepares for changing the quantity with an input field. It also
applies if the quantity is changed after an ajax request.
2021-01-22 16:42:20 +11:00
Maikel Linke
7add9247d5 Update translations from Transifex 2021-01-22 11:58:27 +11:00
Maikel
d5376ce29d Merge pull request #6702 from openfoodfoundation/transifex
Transifex
2021-01-22 11:54:57 +11:00
Andy Brett
84689c43be Merge pull request #6534 from andrewpbrett/sca-emails
Send email when SCA authorization is required for admin payment
2021-01-21 13:53:35 -08:00
Andy Brett
91d5b55376 Merge pull request #6673 from openfoodfoundation/dependabot/bundler/paypal-sdk-merchant-1.117.2
Bump paypal-sdk-merchant from 1.106.1 to 1.117.2
2021-01-21 11:21:27 -08:00
Andy Brett
0f92b3c4de Merge pull request #6685 from Matt-Yorkley/angular-csrf
[Rails 5] Update Angular CSRF handling
2021-01-21 11:01:06 -08:00
Andy Brett
0e7f4b2f14 Merge pull request #6537 from mkllnk/simplify-mail-config
Simplify mail config
2021-01-21 10:59:43 -08:00
Andy Brett
d2b2e46124 Merge pull request #6701 from Matt-Yorkley/admin-order-performance
Fix performance issue in loading payment methods
2021-01-21 10:58:35 -08:00
Andy Brett
3ef4a74b84 Merge pull request #6655 from Matt-Yorkley/summing-amounts
Improve performance on summing adjustments and payment
2021-01-21 10:58:10 -08:00
Matt-Yorkley
d8b795ebee Merge pull request #6679 from Matt-Yorkley/soft-delete-enterprise-fees
Soft-delete Enterprise Fees
2021-01-21 19:57:29 +01:00
Andy Brett
70f30f5224 Merge pull request #6658 from andrewpbrett/item-counter-fix
Further fix #5989 (Item counter accepts values higher than the available stock)
2021-01-21 10:56:18 -08:00
Andy Brett
bba9e55006 don't try to process a payment if it's pending auth 2021-01-21 09:18:29 -08:00
Andy Brett
ce4621858d base authorization on the payment's order 2021-01-21 09:18:29 -08:00
Andy Brett
8bcaeff6c8 resolve merge conflict; add ssl helper to base controller 2021-01-21 09:18:29 -08:00
Andy Brett
1635b83c15 add missing translation key for payment actions 2021-01-21 09:18:29 -08:00
Andy Brett
903b2e7ff4 whitelist allowed events to be sent to a Payment 2021-01-21 09:18:29 -08:00
Andy Brett
ab5ffead1d require that the redirect url be to stripe.com and over https 2021-01-21 09:18:29 -08:00
Andy Brett
affc82b2b5 update payment jobs delivery methods 2021-01-21 09:18:29 -08:00
Andy Brett
d76db9ee51 update payment controller spec to move payment to pending 2021-01-21 09:18:29 -08:00
Andy Brett
d9b27bc556 move controller and mailer outside of spree namespace; use haml in template 2021-01-21 09:18:29 -08:00
Andy Brett
5f1669280c update to rspec 3 expect syntax 2021-01-21 09:17:07 -08:00
Andy Brett
b669ccdc74 refactor admin payments controller 2021-01-21 09:17:07 -08:00
Andy Brett
84b5fcf2ce add resend-authorization-email button to admin screen 2021-01-21 09:17:07 -08:00
Andy Brett
5c0408c68c pass paymentIntent ID to capture 2021-01-21 08:48:38 -08:00
Andy Brett
8507dacc10 pass return_url option to gateway authorize 2021-01-21 08:48:33 -08:00
Andy Brett
802e49bed3 add PaymentMailer and send email if payment auth is required 2021-01-21 08:24:01 -08:00
Cillian O'Ruanaidh
40f9b063fe Remove ability to create new product from products page, use /admin/products/new instead.
It's simpler if there is just one place to add a new product. Closes #6650

This removes the 'creating directly from the new product path' test scenario because we have another 'assigning important attributes' scenario above which provides enough coverage.
2021-01-21 08:24:01 -08:00
Matt-Yorkley
49c616c33c Extract tax rate transition logic to service 2021-01-21 14:50:14 +00:00
Pau Pérez Fabregat
1833ab5ffa Merge pull request #6710 from openfoodfoundation/dependabot/bundler/webdrivers-4.5.0
Bump webdrivers from 4.4.2 to 4.5.0
2021-01-21 12:27:02 +01:00
Pau Pérez Fabregat
3370271ad8 Merge pull request #6705 from coopdevs/fix-request-queuing-tracking
Pass request_queuing setting to Rack middleware
2021-01-21 12:04:22 +01:00
dependabot[bot]
b6e7307cb9 Bump webdrivers from 4.4.2 to 4.5.0
Bumps [webdrivers](https://github.com/titusfortner/webdrivers) from 4.4.2 to 4.5.0.
- [Release notes](https://github.com/titusfortner/webdrivers/releases)
- [Changelog](https://github.com/titusfortner/webdrivers/blob/master/CHANGELOG.md)
- [Commits](https://github.com/titusfortner/webdrivers/compare/v4.4.2...v4.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-21 05:16:36 +00:00
Andy Brett
77419a1e4b Merge pull request #6675 from cillian/single-new-product-view
Remove ability to create new product from products page, use /admin/products/new instead.
2021-01-20 19:23:33 -08:00
Andy Brett
e31d566f7f Merge pull request #6283 from luisramos0/sets
Move sets out of app/models to app/services/sets
2021-01-20 19:22:15 -08:00
Andy Brett
ca37976661 Merge pull request #6640 from jibees/2772-loading-spinner-reusable-component
Create a reusable "loading spinner" component
2021-01-20 19:21:31 -08:00
Andy Brett
1d4fa2983c Merge pull request #6466 from Matt-Yorkley/package-optimisation
Optimise Shipment#to_package
2021-01-20 19:20:56 -08:00
Andy Brett
4a19a368dd Merge pull request #6706 from Matt-Yorkley/adjustments-migration
Fix issue with orphaned adjustments in migration
2021-01-20 13:23:36 -08:00
Andy Brett
dd38c8b3e2 add down method for migration 2021-01-20 12:56:03 -08:00
Pau Perez
cc9e3fe69b Replace double negation with proper list of states
We rely now on the exhaustive list of states an order can be in after
checkout. What made this all a bit more messy is that I made up the
"checkout" order state, likely mixing it from the payment model states.

This simplifies things quite a bit and gives meaningful names to things.
2021-01-20 18:34:31 +01:00
Pau Perez
d9c065a311 Remove outdated comment
This comment was related to the feature we removed in
https://github.com/openfoodfoundation/openfoodnetwork/pull/3609.
2021-01-20 18:23:22 +01:00
Pau Perez
996761da67 Fix long line 2021-01-20 18:23:22 +01:00
Pau Perez
9bb49bb590 Ensure the query the class depends on is called 2021-01-20 18:23:22 +01:00
Pau Perez
db23428832 Test OutstandingBalance
This duplicates the scenarios tested for CustomersWithBalance.
2021-01-20 18:23:22 +01:00
Pau Perez
783863056d Extract query object out of UsersController
It improves the overall readability of the code and as a result, things
became easier to manage already.
2021-01-20 18:23:22 +01:00
Pau Perez
d18e79ab19 Move query object to app/queries/ and doc it 2021-01-20 18:23:22 +01:00
Pau Perez
e8ef4acb2b Hide new data fetching implementation under toggle 2021-01-20 18:23:22 +01:00
Pau Perez
37b7340eb1 Refactor specs to speed them up
We don't care about the conversion from hash to JSON (that's an
ActiveModel::Serializer responsibility that is thoroughly tested) but
our logic so we can skip that step which only slows down tests.

It consistently reduced ~1.5s on my machine but it's still too slow to wait
~8.5s to get feedback from them.
2021-01-20 18:23:22 +01:00
Pau Perez
a124f93b20 Remove old commented out code 2021-01-20 18:23:22 +01:00
Pau Perez
20abaaa950 Reuse outstanding balance statement across queries
Instead of relying on Spree::Order#outstanding_balance we make us of the
result set `balance_value` computed column. So, we ask PostgreSQL to
compute it instead of Ruby and then serialize it from that computed
column. That's a bit faster to compute that way and let's reuse logic.

We hide this new implementation under this features' toggle so it's only
used when enabled. We want hit the old behaviour by default.
2021-01-20 18:23:22 +01:00
Pau Perez
681a009eb6 Extract outstanding balance SQL CASE/WHEN 2021-01-20 18:23:22 +01:00
Pau Perez
caf1c9ecd9 Move data fetching from injection helper to action
Data fetching is a controller action responsibility. We shouldn't couple
the controller with it too much but it should trigger it, not the
view-layer.
2021-01-20 18:23:22 +01:00
Matt-Yorkley
e1c13bc194 Fix issue with orphaned adjustments in migration 2021-01-20 13:42:14 +00:00
Pau Perez
ba018df9c5 Pass request_queuing setting to Rack middleware
It turns out that this setting belongs to the Rack middleware Datadog
comes with to track requests (See
e4c430a174/docs/GettingStarted.md (rack)).

The way to pass this option to it is through `configuration[:rack]`
where the `TraceMiddleware` will read it from. See
f57aefe60a/lib/ddtrace/contrib/rack/middlewares.rb (L215-L217)
and
f57aefe60a/lib/ddtrace/contrib/rack/middlewares.rb (L30-L43).
2021-01-20 10:58:07 +01:00
Andy Brett
a53cc6bc92 Update all locales with the latest Transifex translations 2021-01-19 19:07:37 -08:00
Andy Brett
89ce850da6 Merge pull request #6703 from openfoodfoundation/fix-datadog-init
Revert "Enable request queuing tracking in Datadog"
2021-01-19 18:39:21 -08:00
Transifex-Openfoodnetwork
b9cf5b7a9b Updating translations for config/locales/de_DE.yml 2021-01-20 12:46:16 +11:00
Andy Brett
012289e95f Merge pull request #6687 from openfoodfoundation/dependabot/bundler/monetize-1.10.0
Bump monetize from 1.9.4 to 1.10.0
2021-01-19 17:23:33 -08:00
Matt-Yorkley
6a9505cf67 Ensure adjustments can access soft-deleted originators
Note: originator is generally an EnterpriseFee or a TaxRate
2021-01-19 16:46:14 +00:00
Matt-Yorkley
c4a8a38c8d Soft-delete enterprise fees
These objects can hold critical information related to adjustments and tax categories. If they are hard-deleted we lose vital data that's needed by associated records.
2021-01-19 16:46:14 +00:00
Matt-Yorkley
a184075c5c Fix performance issue in loading payment methods
This was loading and initializing every payment method in the database, and every calculator for each of those payment methods.

🔥
2021-01-19 15:33:44 +00:00
Pau Pérez Fabregat
b84fb5814e Merge pull request #6696 from Matt-Yorkley/migration-issues
Update adjustment migration
2021-01-19 16:02:04 +01:00
Pau Pérez Fabregat
8b01c9c8ba Merge pull request #6279 from luisramos0/base_controller
Merge Spree::BaseController with ApplicationController and merge StoreController with ::BaseController
2021-01-19 15:52:47 +01:00
Matt-Yorkley
79b86f535d Move class definitions in adjustment migration 2021-01-19 13:33:37 +00:00
Luis Ramos
8007554176 Remove test_after_commit gem, it's baked into rails 5 now 2021-01-19 01:15:43 +00:00
Luis Ramos
fc40775ca8 Make paypal controller inherit from base controller and not from old store controller 2021-01-18 23:33:05 +00:00
Maikel
334e270a11 Merge pull request #6552 from Matt-Yorkley/adjustments-order-association
[Adjustments] Associate all adjustments with an order
2021-01-19 08:43:13 +11:00
dependabot[bot]
d1eea4654a Bump monetize from 1.9.4 to 1.10.0
Bumps [monetize](https://github.com/RubyMoney/monetize) from 1.9.4 to 1.10.0.
- [Release notes](https://github.com/RubyMoney/monetize/releases)
- [Changelog](https://github.com/RubyMoney/monetize/blob/master/CHANGELOG.md)
- [Commits](https://github.com/RubyMoney/monetize/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-18 16:10:24 +00:00
Luis Ramos
d8436c2dab Downgrade libv8 so that mini racer keeps working 2021-01-16 22:41:50 +00:00
Matt-Yorkley
ea9ebc8a33 Update Angular CSRF handling 2021-01-16 13:41:24 +00:00
Luis Ramos
7c9024101b Some css fixes to make it all work in rails 5 2021-01-15 23:26:37 +00:00
Luis Ramos
4060e7debf Replace usages of Spree::BaseController with ApplicationController 2021-01-15 21:59:16 +00:00
Luis Ramos
7a22367b4a Make controllers use ::Basecontroller instead of StoreController 2021-01-15 21:59:16 +00:00
Luis Ramos
23e6048bde Merge StoreController with BaseController 2021-01-15 21:59:16 +00:00
Luis Ramos
ff8a81cee7 Remove includes already present in parent ApplicationController 2021-01-15 21:59:16 +00:00
Luis Ramos
0eab1b2339 Merge Spree::BaseController with ApplicationController 2021-01-15 21:59:16 +00:00
Matt-Yorkley
c0c7c6ec78 Update checkout helper summing and add test coverage 2021-01-15 17:29:21 +00:00
Matt-Yorkley
1eb08ba31c Define basic models in migration 2021-01-15 16:17:18 +00:00
Matt-Yorkley
8cc4c6a63f Introduce soft-deprecation strategy when modifying tax rates
If an admin changes the amount on a tax rate, and that rate has been used by adjustments in the past, we need to soft-delete and clone it to preserve the data integrity of previous adjustments that were created using that rate.
2021-01-15 13:38:03 +00:00
Cillian O'Ruanaidh
79668e06a7 Remove ability to create new product from products page, use /admin/products/new instead.
It's simpler if there is just one place to add a new product. Closes #6650

This removes the 'creating directly from the new product path' test scenario because we have another 'assigning important attributes' scenario above which provides enough coverage.
2021-01-15 10:24:50 +00:00
Cillian O'Ruanaidh
110d692ffa Include the 'Ready for' time for the order cycle in the Notify Producers Email
This is so people can distinguish which order cycle the email is referring to. Fixes #6371
2021-01-15 09:24:05 +00:00
dependabot[bot]
8e4e276995 Bump paypal-sdk-merchant from 1.106.1 to 1.117.2
Bumps [paypal-sdk-merchant](https://github.com/paypal/merchant-sdk-ruby) from 1.106.1 to 1.117.2.
- [Release notes](https://github.com/paypal/merchant-sdk-ruby/releases)
- [Changelog](https://github.com/paypal/merchant-sdk-ruby/blob/master/ChangeLog.txt)
- [Commits](https://github.com/paypal/merchant-sdk-ruby/compare/v1.106.1...v1.117.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-15 05:49:20 +00:00
Luis Ramos
fd0bba19a7 Adapt enterprises code and specs to new namespace Sets::EnterpriseSet 2021-01-14 09:41:07 +00:00
Luis Ramos
ed0441dc41 Fix a few more rubocop issues 2021-01-14 09:41:07 +00:00
Luis Ramos
19b12092a0 Fix rubocop issues and adapt exceptions file 2021-01-14 09:41:07 +00:00
Luis Ramos
5d6d7f7ad0 Adapt enterprise fees code and specs to new namespace of Sets::EnterpriseFeeSet 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
187b4a1fc2 Add Sets namespace to each set file 2021-01-14 09:41:07 +00:00
Luis Ramos
8e65d29b02 Move sets to specific services namespace 2021-01-14 09:41:07 +00:00
Maikel Linke
c922a8fd4c Fix: Remove unused conditional
I forgot to remove this unused conditional in a previous commit. Spree
defaulted to overriding the email config and we never changed that.
2021-01-14 12:05:42 +11:00
Maikel Linke
f1618ec35f Remove old spec context
The specs all stay the same, just changing the indent.
2021-01-14 12:05:41 +11:00
Maikel Linke
be229c9002 Simplify email config by removing unused option
Spree used to give you more options to configure ActionMailer but our
setup is much simpler. We can remove unused code.

The removed option was never used by OFN and defaulted to true. We don't
need a database migration because the value isn't set in the database.
2021-01-14 12:05:41 +11:00
Andy Brett
8c4d12a501 limit item counter to max quantity available even if amount is manually filled in 2021-01-13 16:23:41 -08:00
Matt-Yorkley
aacd942697 Update specs that stub associations inaccurately
These specs fail if the code is using #sum on stubbed objects that don't respond to it nicely.
2021-01-13 17:32:20 +00:00
Matt-Yorkley
7d0ec48bcf Improve performance on summing adjustments and payment
:amount is a database field in these cases, as opposed to a method that returns a computed result. Calling `.sum(:amount)` is much more efficient here as it computes the sum at database level, as opposed to `.map(&:amount).sum`, which would fetch and instanciate all the objects first, and then sum the amounts after.
2021-01-13 16:16:49 +00:00
Pau Perez
e83a3ff76d Revert "Enable request queuing tracking in Datadog"
This reverts commit 91e5276140.
2021-01-12 10:56:11 +01:00
Matt-Yorkley
ca4de40fa2 Associate all adjustments with an order
This change is introduced in the adjustments updates from Spree 2.2 and used heavily in new scopes and methods (not included here).
2021-01-11 17:35:35 +00:00
Jean-Baptiste Bellet
8399b82bfd rename component to spinner
A name for a "thing" rather a state
2021-01-11 16:49:56 +01:00
Jean-Baptiste Bellet
26edd83a54 do not include inside a javascript asset
I made a mistake by using it inside a javascript asset
revert part of commit e34050f7c
2021-01-11 16:33:44 +01:00
Jean-Baptiste Bellet
71dc5a8ff0 remove trailing space 2021-01-11 16:29:13 +01:00
Jean-Baptiste Bellet
e34050f7cb add wrapper to show/hide loading spinner 2021-01-11 16:23:22 +01:00
Jean-Baptiste Bellet
544a7407e3 specify max-width to not overflow parent element 2021-01-11 16:22:47 +01:00
Jean-Baptiste Bellet
1b4254a5cf Revert "replace code by reusable component"
This reverts commit 4d953abbe9.
2021-01-11 16:12:17 +01:00
Jean-Baptiste Bellet
6f24ecd973 replace code by reusable component
There is no need to add .text-center as it's already on the parent component
2021-01-11 11:20:00 +01:00
Jean-Baptiste Bellet
4d953abbe9 replace code by reusable component
in a js file
2021-01-11 11:18:54 +01:00
Jean-Baptiste Bellet
b02b36b8e8 replace code by reusable component 2021-01-11 11:18:34 +01:00
Jean-Baptiste Bellet
776a61d1d9 create loading spinner reusable component 2021-01-11 11:17:33 +01:00
Matt-Yorkley
5b9db50250 Optimise Shipment#to_package
This is done in a later Spree commit to reduce the amount of processing done in larger orders.

See: ab01b1ec1e
2020-12-08 11:21:05 +00:00
543 changed files with 13138 additions and 9803 deletions

273
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,273 @@
name: Build
on:
workflow_dispatch:
push:
env:
DISABLE_KNAPSACK: true
jobs:
test-models:
runs-on: ubuntu-18.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- uses: actions/setup-node@v2
with:
node-version: '14.15.5'
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up application.yml
run: cp config/application.yml.example config/application.yml
- name: Set up database
run: |
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run tests
run: bundle exec rspec spec/models
test-admin-features:
runs-on: ubuntu-18.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- uses: actions/setup-node@v2
with:
node-version: '14.15.5'
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up application.yml
run: cp config/application.yml.example config/application.yml
- name: Set up database
run: |
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run admin feature tests
run: bundle exec rspec --profile -- spec/features/admin/*_spec.rb
test-admin-features-folders:
runs-on: ubuntu-18.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- uses: actions/setup-node@v2
with:
node-version: '14.15.5'
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up application.yml
run: cp config/application.yml.example config/application.yml
- name: Set up database
run: |
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run admin feature tests
run: bundle exec rspec --profile --pattern "spec/features/admin/*/*_spec.rb"
test-consumer-features:
runs-on: ubuntu-18.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- uses: actions/setup-node@v2
with:
node-version: '14.15.5'
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up application.yml
run: cp config/application.yml.example config/application.yml
- name: Set up database
run: |
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run consumer feature tests
run: bundle exec rspec --profile -- spec/features/consumer
test-controllers:
runs-on: ubuntu-18.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- uses: actions/setup-node@v2
with:
node-version: '14.15.5'
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up application.yml
run: cp config/application.yml.example config/application.yml
- name: Set up database
run: |
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run tests
run: bundle exec rspec spec/controllers
test-other:
runs-on: ubuntu-18.04
services:
postgres:
image: postgres:10
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
POSTGRES_DB: open_food_network_test
POSTGRES_USER: ofn
POSTGRES_PASSWORD: f00d
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- uses: actions/setup-node@v2
with:
node-version: '14.15.5'
- name: Install JS dependencies
run: yarn install --frozen-lockfile
- name: Set up application.yml
run: cp config/application.yml.example config/application.yml
- name: Set up database
run: |
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test
- name: Run JS tests
run: RAILS_ENV=test bundle exec rake karma:run
- name: Run all other tests
run: |
bundle exec rspec \
spec/helpers/ \
spec/initializers/ \
spec/jobs/ \
spec/lib/ \
spec/mailers/ \
spec/queries/ \
spec/requests/ \
spec/serializers/ \
spec/services/ \
spec/validators/ \
spec/views
- name: Run engines tests
run: bundle exec rake ofn:specs:engines:rspec

2
.rspec
View File

@@ -1,2 +0,0 @@
--colour
--format Fuubar

View File

@@ -33,7 +33,6 @@ Layout/LineLength:
- app/controllers/admin/product_import_controller.rb
- app/controllers/admin/schedules_controller.rb
- app/controllers/admin/subscriptions_controller.rb
- app/controllers/admin/variant_overrides_controller.rb
- app/controllers/api/enterprise_attachment_controller.rb
- app/controllers/api/product_images_controller.rb
- app/controllers/spree/paypal_controller_decorator.rb
@@ -71,7 +70,6 @@ Layout/LineLength:
- app/models/spree/variant.rb
- app/models/subscription.rb
- app/models/variant_override.rb
- app/models/variant_override_set.rb
- app/serializers/api/admin/subscription_line_item_serializer.rb
- app/services/cart_service.rb
- app/services/checkout/post_checkout_actions.rb
@@ -254,7 +252,6 @@ Layout/LineLength:
- spec/models/enterprise_relationship_spec.rb
- spec/models/enterprise_spec.rb
- spec/models/exchange_spec.rb
- spec/models/model_set_spec.rb
- spec/models/order_cycle_spec.rb
- spec/models/product_importer_spec.rb
- spec/models/product_import/reset_absent_spec.rb
@@ -385,7 +382,6 @@ Metrics/AbcSize:
- app/models/enterprise_group.rb
- app/models/enterprise.rb
- app/models/enterprise_relationship.rb
- app/models/model_set.rb
- app/models/product_import/entry_processor.rb
- app/models/product_import/entry_validator.rb
- app/models/product_import/product_importer.rb
@@ -413,6 +409,7 @@ Metrics/AbcSize:
- app/serializers/api/variant_serializer.rb
- app/services/cart_service.rb
- app/services/create_order_cycle.rb
- app/services/sets/model_set.rb
- app/services/order_cycle_form.rb
- app/services/order_syncer.rb
- app/services/variant_units/option_value_namer.rb
@@ -538,8 +535,8 @@ Metrics/CyclomaticComplexity:
- app/models/spree/product.rb
- app/models/spree/return_authorization.rb
- app/models/spree/zone.rb
- app/models/variant_override_set.rb
- app/services/cart_service.rb
- app/services/sets/variant_override_set.rb
- engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb
- engines/order_management/app/services/order_management/stock/estimator.rb
- lib/active_merchant/billing/gateways/stripe_payment_intents.rb

View File

@@ -396,9 +396,6 @@ Style/CaseEquality:
Style/ClassAndModuleChildren:
Exclude:
- 'app/models/calculator/flat_percent_per_item.rb'
- 'app/models/spree/gateway/migs.rb'
- 'app/models/spree/gateway/pin.rb'
- 'app/models/spree/product_set.rb'
- 'app/models/tag_rule/discount_order.rb'
- 'app/models/tag_rule/filter_order_cycles.rb'
- 'app/models/tag_rule/filter_payment_methods.rb'
@@ -575,7 +572,6 @@ Style/FrozenStringLiteralComment:
- 'app/models/calculator/flat_percent_per_item.rb'
- 'app/models/calculator/weight.rb'
- 'app/models/column_preference.rb'
- 'app/models/column_preference_set.rb'
- 'app/models/concerns/address_display.rb'
- 'app/models/concerns/adjustment_scopes.rb'
- 'app/models/concerns/line_item_based_adjustment_handling.rb'
@@ -588,17 +584,13 @@ Style/FrozenStringLiteralComment:
- 'app/models/customer.rb'
- 'app/models/distributor_shipping_method.rb'
- 'app/models/enterprise_fee.rb'
- 'app/models/enterprise_fee_set.rb'
- 'app/models/enterprise_relationship_permission.rb'
- 'app/models/enterprise_role.rb'
- 'app/models/enterprise_set.rb'
- 'app/models/exchange.rb'
- 'app/models/exchange_fee.rb'
- 'app/models/exchange_variant.rb'
- 'app/models/inventory_item.rb'
- 'app/models/model_set.rb'
- 'app/models/order_cycle.rb'
- 'app/models/order_cycle_set.rb'
- 'app/models/preference_sections/footer_and_external_links_section.rb'
- 'app/models/preference_sections/group_signup_page_section.rb'
- 'app/models/preference_sections/header_section.rb'
@@ -619,11 +611,8 @@ Style/FrozenStringLiteralComment:
- 'app/models/product_import/unit_converter.rb'
- 'app/models/proxy_order.rb'
- 'app/models/schedule.rb'
- 'app/models/spree/gateway/migs.rb'
- 'app/models/spree/gateway/pin.rb'
- 'app/models/spree/gateway/stripe_connect.rb'
- 'app/models/spree/preferences/file_configuration.rb'
- 'app/models/spree/product_set.rb'
- 'app/models/spree/property.rb'
- 'app/models/spree/user.rb'
- 'app/models/stripe_account.rb'
@@ -636,7 +625,6 @@ Style/FrozenStringLiteralComment:
- 'app/models/tag_rule/filter_products.rb'
- 'app/models/tag_rule/filter_shipping_methods.rb'
- 'app/models/variant_override.rb'
- 'app/models/variant_override_set.rb'
- 'app/serializers/api/address_serializer.rb'
- 'app/serializers/api/adjustment_serializer.rb'
- 'app/serializers/api/cached_enterprise_serializer.rb'

View File

@@ -1,9 +1,8 @@
# frozen_string_literal: true
#!/bin/env ruby
require 'simplecov'
SimpleCov.minimum_coverage 54
SimpleCov.start 'rails' do
minimum_coverage 54
add_filter '/bin/'
add_filter '/config/'
add_filter '/jobs/application_job.rb'

View File

@@ -15,6 +15,14 @@ Create a new branch on your local machine to make your changes against (based on
git checkout -b branch-name-here --no-track upstream/master
You might need to update or install missing gems:
bundle install
Also, there might be missing dependencies, after pulling a particular branch. To update dependencies, run:
yarn install
If you want to run the whole test suite, we recommend using a free CI service to run your tests in parallel. Running the whole suite locally in series is likely to take > 40 minutes. [TravisCI][travis] and [SemaphoreCI][semaphore] both work great in our experience. Either way, make sure the tests pass on your new branch:
bundle exec rspec spec

58
Gemfile
View File

@@ -4,44 +4,24 @@ source 'https://rubygems.org'
ruby "2.4.4"
git_source(:github) { |repo_name| "https://github.com/#{repo_name}.git" }
plugin 'bootboot', '~> 0.1.1' unless Bundler.settings[:frozen]
Plugin.__send__(:load_plugin, 'bootboot') if Plugin.installed?('bootboot')
gem 'rails', '~> 5.0.0'
if ENV['DEPENDENCIES_NEXT']
enable_dual_booting if Plugin.installed?('bootboot')
# This will only be loaded when running
# bundler command prefixed with `DEPENDENCIES_NEXT=1
gem 'rails', '> 5.0', '< 5.1'
gem 'activemerchant', '>= 1.78.0'
gem 'angular-rails-templates', '>= 0.3.0'
gem 'awesome_nested_set'
gem 'ransack', '2.3.0'
gem 'responders'
gem 'sass', '<= 4.7.1'
gem 'sass-rails', '< 6.0.0'
else
gem 'rails', '~> 4.2'
gem 'activemerchant', '~> 1.78.0'
gem 'angular-rails-templates', '~> 0.3.0'
gem 'awesome_nested_set', '~> 3.3.1'
gem 'ransack', '~> 1.8.10'
gem 'responders', '~> 2.0'
gem 'sass'
gem 'sass-rails'
gem 'db2fog'
gem 'unicorn'
end
gem 'activemerchant', '>= 1.78.0'
gem 'angular-rails-templates', '>= 0.3.0'
gem 'awesome_nested_set'
gem 'ransack', '2.3.0'
gem 'responders'
gem 'sass', '<= 4.7.1'
gem 'sass-rails', '< 6.0.0'
gem 'i18n'
gem 'i18n-js', '~> 3.8.0'
gem 'i18n-js', '~> 3.8.1'
gem 'rails-i18n'
gem 'rails_safe_tasks', '~> 1.0'
gem "activerecord-import"
gem "db2fog", github: "openfoodfoundation/db2fog", branch: "rails-5"
gem "fog-aws", ">= 0.6.0"
gem "catalog", path: "./engines/catalog"
gem 'dfc_provider', path: './engines/dfc_provider'
@@ -56,12 +36,12 @@ gem 'cancancan', '~> 1.7.0'
gem 'ffaker'
gem 'highline', '2.0.3' # Necessary for the install generator
gem 'json'
gem 'monetize', '~> 1.1'
gem 'monetize', '~> 1.10'
gem 'paranoia', '~> 2.4'
gem 'state_machines-activerecord'
gem 'stringex', '~> 2.8.5'
gem 'paypal-sdk-merchant', '1.106.1'
gem 'paypal-sdk-merchant', '1.117.2'
gem 'stripe'
gem 'devise'
@@ -103,22 +83,23 @@ gem 'roadie-rails', '~> 1.3.0'
gem 'combine_pdf'
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
gem 'wkhtmltopdf-binary', '0.12.5' # We need to upgrade our CI before we can bump this :/
gem 'immigrant'
gem 'roo', '~> 2.8.3'
gem 'whenever', require: false
gem 'test-unit', '~> 3.3'
gem 'test-unit', '~> 3.4'
gem 'coffee-rails', '~> 4.2.2'
gem 'compass-rails'
gem 'mini_racer', '0.2.15'
gem 'mini_racer', '0.3.1'
gem 'uglifier', '>= 1.0.3'
gem 'angular_rails_csrf'
gem 'foundation-icons-sass-rails'
gem 'foundation-rails', '= 5.5.2.1'
@@ -130,6 +111,8 @@ gem 'select2-rails', '~> 3.4.7'
gem 'ofn-qz', github: 'openfoodfoundation/ofn-qz', branch: 'ofn-rails-4'
gem 'good_migrations'
group :production, :staging do
gem 'ddtrace'
gem 'unicorn-worker-killer'
@@ -139,6 +122,7 @@ group :test, :development do
# Pretty printed test output
gem 'atomic'
gem 'awesome_print'
gem 'bullet'
gem 'capybara'
gem 'database_cleaner', require: false
gem "factory_bot_rails", '5.2.0', require: false
@@ -159,8 +143,8 @@ end
group :test do
gem 'simplecov', require: false
gem 'test-prof'
gem 'test_after_commit' # needed to test Devise callbacks
gem 'webmock'
gem 'rails-controller-testing'
# See spec/spec_helper.rb for instructions
# gem 'perftools.rb'
end

View File

@@ -4,6 +4,16 @@ GIT
specs:
custom_error_message (1.1.1)
GIT
remote: https://github.com/openfoodfoundation/db2fog.git
revision: 8ceef362c64e6573d62d26db5ebb0c0f33cd3d61
branch: rails-5
specs:
db2fog (0.9.1)
activerecord (>= 3.2.0, < 6.0)
fog-core (~> 1.0)
rails (>= 3.2.0, < 6.0)
GIT
remote: https://github.com/openfoodfoundation/ofn-qz.git
revision: 467f6ea1c44529c7c91cac4c8211bbd863588c0b
@@ -37,46 +47,48 @@ PATH
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (2.3.6)
actionmailer (4.2.11.3)
actionpack (= 4.2.11.3)
actionview (= 4.2.11.3)
activejob (= 4.2.11.3)
actioncable (5.0.7.2)
actionpack (= 5.0.7.2)
nio4r (>= 1.2, < 3.0)
websocket-driver (~> 0.6.1)
actionmailer (5.0.7.2)
actionpack (= 5.0.7.2)
actionview (= 5.0.7.2)
activejob (= 5.0.7.2)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
actionpack (4.2.11.3)
actionview (= 4.2.11.3)
activesupport (= 4.2.11.3)
rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-dom-testing (~> 2.0)
actionpack (5.0.7.2)
actionview (= 5.0.7.2)
activesupport (= 5.0.7.2)
rack (~> 2.0)
rack-test (~> 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionpack-action_caching (1.2.1)
actionpack (>= 4.0.0)
actionview (4.2.11.3)
activesupport (= 4.2.11.3)
actionview (5.0.7.2)
activesupport (= 5.0.7.2)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_model_serializers (0.8.4)
activemodel (>= 3.0)
activejob (4.2.11.3)
activesupport (= 4.2.11.3)
globalid (>= 0.3.0)
activemerchant (1.78.0)
activesupport (>= 3.2.14, < 6.x)
activejob (5.0.7.2)
activesupport (= 5.0.7.2)
globalid (>= 0.3.6)
activemerchant (1.107.4)
activesupport (>= 4.2)
builder (>= 2.1.2, < 4.0.0)
i18n (>= 0.6.9)
nokogiri (~> 1.4)
activemodel (4.2.11.3)
activesupport (= 4.2.11.3)
builder (~> 3.1)
activerecord (4.2.11.3)
activemodel (= 4.2.11.3)
activesupport (= 4.2.11.3)
arel (~> 6.0)
activerecord-import (1.0.7)
activemodel (5.0.7.2)
activesupport (= 5.0.7.2)
activerecord (5.0.7.2)
activemodel (= 5.0.7.2)
activesupport (= 5.0.7.2)
arel (~> 7.0)
activerecord-import (1.0.8)
activerecord (>= 3.2)
activerecord-postgresql-adapter (0.0.1)
pg
@@ -86,10 +98,10 @@ GEM
multi_json (~> 1.11, >= 1.11.2)
rack (>= 1.5.2, < 3)
railties (>= 4.0)
activesupport (4.2.11.3)
i18n (~> 0.7)
activesupport (5.0.7.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
acts-as-taggable-on (4.0.0)
activerecord (>= 4.0)
@@ -97,20 +109,19 @@ GEM
activerecord (>= 3.0)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
aliyun-sdk (0.8.0)
nokogiri (~> 1.6)
rest-client (~> 2.0)
andand (1.3.3)
angular-rails-templates (0.3.0)
railties (>= 3.1)
sprockets (~> 2.0)
angular-rails-templates (1.1.0)
railties (>= 4.2, < 7)
sprockets (>= 3.0, < 5)
tilt
angular_rails_csrf (4.2.0)
railties (>= 3, < 7)
angularjs-file-upload-rails (2.4.1)
angularjs-rails (1.5.5)
arel (6.0.4)
ast (2.4.1)
arel (7.1.4)
ast (2.4.2)
atomic (1.1.101)
awesome_nested_set (3.3.1)
awesome_nested_set (3.4.0)
activerecord (>= 4.0.0, < 7.0)
awesome_print (1.8.0)
aws-sdk (1.67.0)
@@ -122,6 +133,9 @@ GEM
bugsnag (6.19.0)
concurrent-ruby (~> 1.0)
builder (3.2.4)
bullet (6.1.4)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
byebug (11.1.3)
cancancan (1.7.1)
capybara (3.32.2)
@@ -160,11 +174,9 @@ GEM
sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
compass-rails (4.0.0)
compass-rails (2.0.1)
compass (~> 1.0.0)
sass-rails (< 5.1)
sprockets (< 4.0)
concurrent-ruby (1.1.7)
concurrent-ruby (1.1.8)
crack (0.4.5)
rexml
crass (1.0.6)
@@ -172,12 +184,8 @@ GEM
addressable
daemons (1.3.1)
dalli (2.7.11)
database_cleaner (1.8.5)
db2fog (0.9.0)
activerecord (>= 3.2.0, < 5.0)
fog (~> 1.0)
rails (>= 3.2.0, < 5.0)
ddtrace (0.44.0)
database_cleaner (1.99.0)
ddtrace (0.46.0)
msgpack
debugger-linecache (1.2.0)
delayed_job (4.1.9)
@@ -185,7 +193,7 @@ GEM
delayed_job_active_record (4.1.5)
activerecord (>= 3.0, < 6.2)
delayed_job (>= 3.0, < 5)
delayed_job_web (1.4.3)
delayed_job_web (1.4.4)
activerecord (> 3.0.0)
delayed_job (> 2.0.3)
rack-protection (>= 1.5.5)
@@ -202,12 +210,9 @@ GEM
devise (>= 4.0.0, < 5.0.0)
diff-lcs (1.4.4)
docile (1.3.4)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dry-inflector (0.1.2)
erubis (2.7.0)
eventmachine (1.2.7)
excon (0.78.0)
excon (0.79.0)
execjs (2.7.0)
factory_bot (5.2.0)
activesupport (>= 4.2.0)
@@ -220,153 +225,18 @@ GEM
ffi (1.13.1)
figaro (1.2.0)
thor (>= 0.14.0, < 2)
fission (0.5.0)
CFPropertyList (~> 2.2)
fog (1.41.0)
fog-aliyun (>= 0.1.0)
fog-atmos
fog-aws (>= 0.6.0)
fog-brightbox (~> 0.4)
fog-cloudatcost (~> 0.1.0)
fog-core (~> 1.45)
fog-digitalocean (>= 0.3.0)
fog-dnsimple (~> 1.0)
fog-dynect (~> 0.0.2)
fog-ecloud (~> 0.1)
fog-google (<= 0.1.0)
fog-internet-archive
fog-joyent
fog-json
fog-local
fog-openstack
fog-powerdns (>= 0.1.1)
fog-profitbricks
fog-rackspace
fog-radosgw (>= 0.0.2)
fog-riakcs
fog-sakuracloud (>= 0.0.4)
fog-serverlove
fog-softlayer
fog-storm_on_demand
fog-terremark
fog-vmfusion
fog-voxel
fog-vsphere (>= 0.4.0)
fog-xenserver
fog-xml (~> 0.1.1)
ipaddress (~> 0.5)
json (>= 1.8, < 2.0)
fog-aliyun (0.3.19)
aliyun-sdk (~> 0.8.0)
fog-core
fog-json
ipaddress (~> 0.8)
xml-simple (~> 1.1)
fog-atmos (0.1.0)
fog-core
fog-xml
fog-aws (2.0.1)
fog-core (~> 1.38)
fog-json (~> 1.0)
fog-xml (~> 0.1)
ipaddress (~> 0.8)
fog-brightbox (0.16.1)
dry-inflector
fog-core
fog-json
mime-types
fog-cloudatcost (0.1.2)
fog-core (~> 1.36)
fog-json (~> 1.0)
fog-xml (~> 0.1)
ipaddress (~> 0.8)
fog-core (1.45.0)
builder
excon (~> 0.58)
formatador (~> 0.2)
fog-digitalocean (0.4.0)
fog-core
fog-json
fog-xml
ipaddress (>= 0.5)
fog-dnsimple (1.0.0)
fog-core (~> 1.38)
fog-json (~> 1.0)
fog-dynect (0.0.3)
fog-core
fog-json
fog-xml
fog-ecloud (0.3.0)
fog-core
fog-xml
fog-google (0.1.0)
fog-core
fog-json
fog-xml
fog-internet-archive (0.0.2)
fog-core
fog-json
fog-xml
fog-joyent (0.0.1)
fog-core (~> 1.42)
fog-json (>= 1.0)
fog-json (1.2.0)
fog-core
multi_json (~> 1.10)
fog-local (0.6.0)
fog-core (>= 1.27, < 3.0)
fog-openstack (0.3.10)
fog-core (>= 1.45, <= 2.1.0)
fog-json (>= 1.0)
ipaddress (>= 0.8)
fog-powerdns (0.2.0)
fog-core
fog-json
fog-xml
fog-profitbricks (4.1.1)
fog-core (~> 1.42)
fog-json (~> 1.0)
fog-rackspace (0.1.6)
fog-core (>= 1.35)
fog-json (>= 1.0)
fog-xml (>= 0.1)
ipaddress (>= 0.8)
fog-radosgw (0.0.5)
fog-core (>= 1.21.0)
fog-json
fog-xml (>= 0.0.1)
fog-riakcs (0.1.0)
fog-core
fog-json
fog-xml
fog-sakuracloud (1.7.5)
fog-core
fog-json
fog-serverlove (0.1.2)
fog-core
fog-json
fog-softlayer (1.1.4)
fog-core
fog-json
fog-storm_on_demand (0.1.1)
fog-core
fog-json
fog-terremark (0.1.0)
fog-core
fog-xml
fog-vmfusion (0.1.0)
fission
fog-core
fog-voxel (0.1.0)
fog-core
fog-xml
fog-vsphere (3.4.0)
fog-core
rbvmomi (>= 1.9, < 3)
fog-xenserver (1.0.0)
fog-core
fog-xml
xmlrpc
fog-xml (0.1.3)
fog-core
nokogiri (>= 1.5.11, < 2.0.0)
@@ -380,24 +250,23 @@ GEM
fuubar (2.5.1)
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
geocoder (1.6.4)
geocoder (1.6.6)
get_process_mem (0.2.7)
ffi (~> 1.0)
globalid (0.4.2)
activesupport (>= 4.2.0)
gmaps4rails (2.1.2)
good_migrations (0.0.2)
activerecord (>= 3.1)
railties (>= 3.1)
haml (5.2.1)
temple (>= 0.8.0)
tilt
hashdiff (1.0.1)
highline (2.0.3)
hike (1.2.3)
http-accept (1.7.0)
http-cookie (1.0.3)
domain_name (~> 0.5)
i18n (0.9.5)
i18n (1.8.5)
concurrent-ruby (~> 1.0)
i18n-js (3.8.0)
i18n-js (3.8.1)
i18n (>= 0.6.6)
immigrant (0.3.6)
activerecord (>= 3.0)
@@ -435,8 +304,8 @@ GEM
addressable (~> 2.3)
letter_opener (1.7.0)
launchy (~> 2.2)
libv8 (7.3.492.27.1)
loofah (2.8.0)
libv8 (8.4.255.0)
loofah (2.9.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
@@ -444,21 +313,23 @@ GEM
method_source (1.0.0)
mime-types (3.3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2020.0512)
mime-types-data (3.2020.1104)
mini_mime (1.0.2)
mini_portile2 (2.4.0)
mini_racer (0.2.15)
libv8 (> 7.3)
minitest (5.14.3)
monetize (1.9.4)
mini_racer (0.3.1)
libv8 (~> 8.4.255)
minitest (5.14.4)
monetize (1.10.0)
money (~> 6.12)
money (6.13.8)
money (6.14.0)
i18n (>= 0.6.4, <= 2)
msgpack (1.3.3)
msgpack (1.4.2)
multi_json (1.15.0)
multi_xml (0.6.0)
multipart-post (2.1.1)
netrc (0.11.0)
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
nio4r (2.5.2)
nokogiri (1.10.10)
mini_portile2 (~> 2.4.0)
oauth2 (1.4.4)
@@ -467,7 +338,6 @@ GEM
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
optimist (3.0.1)
orm_adapter (0.5.0)
paper_trail (10.3.1)
activerecord (>= 4.2)
@@ -483,13 +353,15 @@ GEM
activerecord (>= 4.0, < 6.2)
parser (3.0.0.0)
ast (~> 2.4.1)
paypal-sdk-core (0.2.10)
paypal-sdk-core (0.3.4)
multi_json (~> 1.0)
xml-simple
paypal-sdk-merchant (1.106.1)
paypal-sdk-core (~> 0.2.3)
paypal-sdk-merchant (1.117.2)
paypal-sdk-core (~> 0.3.0)
pg (0.21.0)
power_assert (1.2.0)
polyamorous (2.3.0)
activerecord (>= 5.0)
power_assert (2.0.0)
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
@@ -497,60 +369,59 @@ GEM
byebug (~> 11.0)
pry (~> 0.13.0)
public_suffix (4.0.6)
rack (1.6.13)
rack-mini-profiler (2.3.0)
rack (2.2.3)
rack-mini-profiler (2.3.1)
rack (>= 1.2.0)
rack-protection (1.5.5)
rack-protection (2.1.0)
rack
rack-rewrite (1.5.1)
rack-ssl (1.4.1)
rack
rack-test (0.6.3)
rack (>= 1.0)
rails (4.2.11.3)
actionmailer (= 4.2.11.3)
actionpack (= 4.2.11.3)
actionview (= 4.2.11.3)
activejob (= 4.2.11.3)
activemodel (= 4.2.11.3)
activerecord (= 4.2.11.3)
activesupport (= 4.2.11.3)
bundler (>= 1.3.0, < 2.0)
railties (= 4.2.11.3)
sprockets-rails
rails-deprecated_sanitizer (1.0.3)
activesupport (>= 4.2.0.alpha)
rails-dom-testing (1.0.9)
activesupport (>= 4.2.0, < 5.0)
nokogiri (~> 1.6)
rails-deprecated_sanitizer (>= 1.0.1)
rails (5.0.7.2)
actioncable (= 5.0.7.2)
actionmailer (= 5.0.7.2)
actionpack (= 5.0.7.2)
actionview (= 5.0.7.2)
activejob (= 5.0.7.2)
activemodel (= 5.0.7.2)
activerecord (= 5.0.7.2)
activesupport (= 5.0.7.2)
bundler (>= 1.3.0)
railties (= 5.0.7.2)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.3.0)
loofah (~> 2.3)
rails-i18n (4.0.9)
i18n (~> 0.7)
railties (~> 4.0)
rails-i18n (5.1.3)
i18n (>= 0.7, < 2)
railties (>= 5.0, < 6)
rails_safe_tasks (1.0.0)
railties (4.2.11.3)
actionpack (= 4.2.11.3)
activesupport (= 4.2.11.3)
railties (5.0.7.2)
actionpack (= 5.0.7.2)
activesupport (= 5.0.7.2)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rainbow (3.0.0)
raindrops (0.19.1)
rake (13.0.3)
ransack (1.8.10)
actionpack (>= 3.0, < 5.2)
activerecord (>= 3.0, < 5.2)
activesupport (>= 3.0, < 5.2)
ransack (2.3.0)
actionpack (>= 5.0)
activerecord (>= 5.0)
activesupport (>= 5.0)
i18n
polyamorous (= 2.3.0)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
rbvmomi (2.4.1)
builder (~> 3.0)
json (>= 1.8)
nokogiri (~> 1.5)
optimist (~> 3.0)
redcarpet (3.5.1)
regexp_parser (1.8.2)
request_store (1.5.0)
@@ -558,11 +429,6 @@ GEM
responders (2.4.1)
actionpack (>= 4.2.0, < 6.0)
railties (>= 4.2.0, < 6.0)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rexml (3.2.4)
roadie (3.5.1)
css_parser (~> 1.4)
@@ -596,20 +462,20 @@ GEM
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.10.1)
rswag (2.3.1)
rswag-api (= 2.3.1)
rswag-specs (= 2.3.1)
rswag-ui (= 2.3.1)
rswag-api (2.3.1)
rswag (2.4.0)
rswag-api (= 2.4.0)
rswag-specs (= 2.4.0)
rswag-ui (= 2.4.0)
rswag-api (2.4.0)
railties (>= 3.1, < 7.0)
rswag-specs (2.3.1)
rswag-specs (2.4.0)
activesupport (>= 3.1, < 7.0)
json-schema (~> 2.2)
railties (>= 3.1, < 7.0)
rswag-ui (2.3.1)
rswag-ui (2.4.0)
actionpack (>= 3.1, < 7.0)
railties (>= 3.1, < 7.0)
rubocop (1.8.1)
rubocop (1.11.0)
parallel (~> 1.10)
parser (>= 3.0.0.0)
rainbow (>= 2.2.2, < 4.0)
@@ -618,7 +484,7 @@ GEM
rubocop-ast (>= 1.2.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.4.0)
rubocop-ast (1.4.1)
parser (>= 2.7.1.5)
rubocop-rails (2.9.1)
activesupport (>= 4.2.0)
@@ -626,6 +492,7 @@ GEM
rubocop (>= 0.90.0, < 2.0)
ruby-progressbar (1.11.0)
ruby-rc4 (0.1.5)
ruby2_keywords (0.0.2)
rubyzip (2.3.0)
sass (3.4.25)
sass-rails (5.0.7)
@@ -640,28 +507,27 @@ GEM
selenium-webdriver (3.142.7)
childprocess (>= 0.5, < 4.0)
rubyzip (>= 1.2.2)
shoulda-matchers (4.5.0)
shoulda-matchers (4.5.1)
activesupport (>= 4.2.0)
simplecov (0.18.5)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov-html (0.12.3)
sinatra (1.4.8)
rack (~> 1.5)
rack-protection (~> 1.4)
tilt (>= 1.3, < 3)
sinatra (2.1.0)
mustermann (~> 1.0)
rack (~> 2.2)
rack-protection (= 2.1.0)
tilt (~> 2.0)
spring (2.1.1)
spring-commands-rspec (1.0.4)
spring (>= 0.9.1)
sprockets (2.12.5)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sprockets-rails (2.3.3)
actionpack (>= 3.0)
activesupport (>= 3.0)
sprockets (>= 2.8, < 4.0)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.2)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
state_machines (0.5.0)
state_machines-activemodel (0.7.1)
activemodel (>= 4.1)
@@ -670,24 +536,19 @@ GEM
activerecord (>= 4.1)
state_machines-activemodel (>= 0.5.0)
stringex (2.8.5)
stripe (5.29.0)
stripe (5.30.0)
temple (0.8.2)
test-prof (0.11.3)
test-unit (3.3.9)
test-unit (3.4.0)
power_assert
test_after_commit (1.2.2)
activerecord (>= 3.2, < 5.0)
thor (0.20.3)
thread_safe (0.3.6)
tilt (1.4.1)
timecop (0.9.2)
tilt (2.0.10)
timecop (0.9.4)
tzinfo (1.2.9)
thread_safe (~> 0.1)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
unicode-display_width (2.0.0)
unicorn (5.8.0)
kgio (~> 2.6)
@@ -698,23 +559,26 @@ GEM
unicorn-worker-killer (0.4.4)
get_process_mem (~> 0)
unicorn (>= 4, < 6)
warden (1.2.7)
rack (>= 1.0)
webdrivers (4.4.2)
uniform_notifier (1.14.1)
warden (1.2.9)
rack (>= 2.0.9)
webdrivers (4.6.0)
nokogiri (~> 1.6)
rubyzip (>= 1.3.0)
selenium-webdriver (>= 3.0, < 4.0)
webmock (3.11.1)
webmock (3.12.1)
addressable (>= 2.3.6)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
whenever (1.0.0)
chronic (>= 0.6.3)
wicked_pdf (2.1.0)
activesupport
wkhtmltopdf-binary (0.12.5)
xml-simple (1.1.5)
xmlrpc (0.3.0)
xml-simple (1.1.8)
xpath (3.2.0)
nokogiri (~> 1.8)
@@ -724,21 +588,23 @@ PLATFORMS
DEPENDENCIES
actionpack-action_caching
active_model_serializers (= 0.8.4)
activemerchant (~> 1.78.0)
activemerchant (>= 1.78.0)
activerecord-import
activerecord-postgresql-adapter
activerecord-session_store
acts-as-taggable-on (~> 4.0)
acts_as_list (= 0.9.19)
andand
angular-rails-templates (~> 0.3.0)
angular-rails-templates (>= 0.3.0)
angular_rails_csrf
angularjs-file-upload-rails (~> 2.4.1)
angularjs-rails (= 1.5.5)
atomic
awesome_nested_set (~> 3.3.1)
awesome_nested_set
awesome_print
aws-sdk (= 1.67.0)
bugsnag
bullet
byebug
cancancan (~> 1.7.0)
capybara
@@ -750,7 +616,7 @@ DEPENDENCIES
daemons
dalli
database_cleaner
db2fog
db2fog!
ddtrace
debugger-linecache
delayed_job_active_record
@@ -763,15 +629,17 @@ DEPENDENCIES
factory_bot_rails (= 5.2.0)
ffaker
figaro
fog-aws (>= 0.6.0)
foundation-icons-sass-rails
foundation-rails (= 5.5.2.1)
fuubar (~> 2.5.1)
geocoder
gmaps4rails
good_migrations
haml
highline (= 2.0.3)
i18n
i18n-js (~> 3.8.0)
i18n-js (~> 3.8.1)
immigrant
jquery-migrate-rails
jquery-rails (= 4.4.0)
@@ -782,27 +650,28 @@ DEPENDENCIES
kaminari (~> 1.2.1)
knapsack
letter_opener (>= 1.4.1)
mini_racer (= 0.2.15)
monetize (~> 1.1)
mini_racer (= 0.3.1)
monetize (~> 1.10)
oauth2 (~> 1.4.4)
ofn-qz!
order_management!
paper_trail (~> 10.3.1)
paperclip (~> 3.4.1)
paranoia (~> 2.4)
paypal-sdk-merchant (= 1.106.1)
paypal-sdk-merchant (= 1.117.2)
pg (~> 0.21.0)
pry
pry-byebug
rack-mini-profiler (< 3.0.0)
rack-rewrite
rack-ssl
rails (~> 4.2)
rails (~> 5.0.0)
rails-controller-testing
rails-i18n
rails_safe_tasks (~> 1.0)
ransack (~> 1.8.10)
ransack (= 2.3.0)
redcarpet
responders (~> 2.0)
responders
roadie-rails (~> 1.3.0)
roo (~> 2.8.3)
rspec-rails (>= 3.5.2)
@@ -810,8 +679,8 @@ DEPENDENCIES
rswag
rubocop
rubocop-rails
sass
sass-rails
sass (<= 4.7.1)
sass-rails (< 6.0.0)
select2-rails (~> 3.4.7)
selenium-webdriver
shoulda-matchers
@@ -822,11 +691,9 @@ DEPENDENCIES
stringex (~> 2.8.5)
stripe
test-prof
test-unit (~> 3.3)
test_after_commit
test-unit (~> 3.4)
timecop
uglifier (>= 1.0.3)
unicorn
unicorn-rails
unicorn-worker-killer
web!
@@ -834,7 +701,7 @@ DEPENDENCIES
webmock
whenever
wicked_pdf
wkhtmltopdf-binary
wkhtmltopdf-binary (= 0.12.5)
RUBY VERSION
ruby 2.4.4p296

View File

@@ -1,665 +0,0 @@
GIT
remote: https://github.com/jeremydurham/custom-err-msg.git
revision: 3a8ec9dddc7a5b0aab7c69a6060596de300c68f4
specs:
custom_error_message (1.1.1)
GIT
remote: https://github.com/openfoodfoundation/ofn-qz.git
revision: 467f6ea1c44529c7c91cac4c8211bbd863588c0b
branch: ofn-rails-4
specs:
ofn-qz (0.1.0)
PATH
remote: engines/catalog
specs:
catalog (0.0.1)
PATH
remote: engines/dfc_provider
specs:
dfc_provider (0.0.1)
active_model_serializers (~> 0.8.4)
jwt (~> 2.2)
rspec (~> 3.9)
PATH
remote: engines/order_management
specs:
order_management (0.0.1)
PATH
remote: engines/web
specs:
web (0.0.1)
GEM
remote: https://rubygems.org/
specs:
actioncable (5.0.7.2)
actionpack (= 5.0.7.2)
nio4r (>= 1.2, < 3.0)
websocket-driver (~> 0.6.1)
actionmailer (5.0.7.2)
actionpack (= 5.0.7.2)
actionview (= 5.0.7.2)
activejob (= 5.0.7.2)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.0.7.2)
actionview (= 5.0.7.2)
activesupport (= 5.0.7.2)
rack (~> 2.0)
rack-test (~> 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionpack-action_caching (1.2.1)
actionpack (>= 4.0.0)
actionview (5.0.7.2)
activesupport (= 5.0.7.2)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_model_serializers (0.8.4)
activemodel (>= 3.0)
activejob (5.0.7.2)
activesupport (= 5.0.7.2)
globalid (>= 0.3.6)
activemerchant (1.107.4)
activesupport (>= 4.2)
builder (>= 2.1.2, < 4.0.0)
i18n (>= 0.6.9)
nokogiri (~> 1.4)
activemodel (5.0.7.2)
activesupport (= 5.0.7.2)
activerecord (5.0.7.2)
activemodel (= 5.0.7.2)
activesupport (= 5.0.7.2)
arel (~> 7.0)
activerecord-import (1.0.7)
activerecord (>= 3.2)
activerecord-postgresql-adapter (0.0.1)
pg
activerecord-session_store (1.1.3)
actionpack (>= 4.0)
activerecord (>= 4.0)
multi_json (~> 1.11, >= 1.11.2)
rack (>= 1.5.2, < 3)
railties (>= 4.0)
activesupport (5.0.7.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
acts-as-taggable-on (4.0.0)
activerecord (>= 4.0)
acts_as_list (0.9.19)
activerecord (>= 3.0)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
andand (1.3.3)
angular-rails-templates (1.1.0)
railties (>= 4.2, < 7)
sprockets (>= 3.0, < 5)
tilt
angularjs-file-upload-rails (2.4.1)
angularjs-rails (1.5.5)
arel (7.1.4)
ast (2.4.1)
atomic (1.1.101)
awesome_nested_set (3.2.1)
activerecord (>= 4.0.0, < 7.0)
awesome_print (1.8.0)
aws-sdk (1.67.0)
aws-sdk-v1 (= 1.67.0)
aws-sdk-v1 (1.67.0)
json (~> 1.4)
nokogiri (~> 1)
bcrypt (3.1.16)
bugsnag (6.18.0)
concurrent-ruby (~> 1.0)
builder (3.2.4)
byebug (11.0.1)
cancancan (1.7.1)
capybara (3.15.0)
addressable
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (~> 1.2)
xpath (~> 3.2)
childprocess (3.0.0)
chronic (0.10.2)
chunky_png (1.3.14)
climate_control (0.2.0)
cocaine (0.5.8)
climate_control (>= 0.0.3, < 1.0)
coderay (1.1.3)
coffee-rails (4.2.2)
coffee-script (>= 2.2.0)
railties (>= 4.0.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.12.2)
combine_pdf (1.0.19)
ruby-rc4 (>= 0.1.5)
compass (1.0.3)
chunky_png (~> 1.2)
compass-core (~> 1.0.2)
compass-import-once (~> 1.0.5)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
sass (>= 3.3.13, < 3.5)
compass-core (1.0.3)
multi_json (~> 1.0)
sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
compass-rails (2.0.1)
compass (~> 1.0.0)
concurrent-ruby (1.1.7)
crack (0.4.4)
crass (1.0.6)
css_parser (1.7.1)
addressable
daemons (1.3.1)
dalli (2.7.11)
database_cleaner (1.8.5)
ddtrace (0.43.0)
msgpack
debugger-linecache (1.2.0)
delayed_job (4.1.8)
activesupport (>= 3.0, < 6.1)
delayed_job_active_record (4.1.4)
activerecord (>= 3.0, < 6.1)
delayed_job (>= 3.0, < 5)
delayed_job_web (1.4.3)
activerecord (> 3.0.0)
delayed_job (> 2.0.3)
rack-protection (>= 1.5.5)
sinatra (>= 1.4.4)
devise (4.7.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
responders
warden (~> 1.2.3)
devise-encryptable (0.2.0)
devise (>= 2.1.0)
devise-token_authenticatable (1.1.0)
devise (>= 4.0.0, < 5.0.0)
diff-lcs (1.4.4)
docile (1.3.2)
erubis (2.7.0)
eventmachine (1.2.7)
execjs (2.7.0)
factory_bot (5.2.0)
activesupport (>= 4.2.0)
factory_bot_rails (5.2.0)
factory_bot (~> 5.2.0)
railties (>= 4.2.0)
faraday (1.0.1)
multipart-post (>= 1.2, < 3)
ffaker (2.11.0)
ffi (1.13.1)
figaro (1.2.0)
thor (>= 0.14.0, < 2)
foundation-icons-sass-rails (3.0.0)
railties (>= 3.1.1)
sass-rails (>= 3.1.1)
foundation-rails (5.5.2.1)
railties (>= 3.1.0)
sass (>= 3.3.0, < 3.5)
fuubar (2.5.1)
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
geocoder (1.6.4)
get_process_mem (0.2.7)
ffi (~> 1.0)
globalid (0.4.2)
activesupport (>= 4.2.0)
gmaps4rails (2.1.2)
haml (5.2.0)
temple (>= 0.8.0)
tilt
hashdiff (1.0.1)
highline (2.0.3)
i18n (1.8.5)
concurrent-ruby (~> 1.0)
i18n-js (3.8.0)
i18n (>= 0.6.6)
immigrant (0.3.6)
activerecord (>= 3.0)
jaro_winkler (1.5.4)
jquery-migrate-rails (1.2.1)
jquery-rails (4.4.0)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
jquery-ui-rails (4.2.1)
railties (>= 3.2.16)
json (1.8.6)
json-schema (2.8.1)
addressable (>= 2.4)
json_spec (1.1.5)
multi_json (~> 1.0)
rspec (>= 2.0, < 4.0)
jwt (2.2.2)
kaminari (1.2.1)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.2.1)
kaminari-activerecord (= 1.2.1)
kaminari-core (= 1.2.1)
kaminari-actionview (1.2.1)
actionview
kaminari-core (= 1.2.1)
kaminari-activerecord (1.2.1)
activerecord
kaminari-core (= 1.2.1)
kaminari-core (1.2.1)
kgio (2.11.3)
knapsack (1.20.0)
rake
launchy (2.4.3)
addressable (~> 2.3)
letter_opener (1.7.0)
launchy (~> 2.2)
libv8 (8.4.255.0)
loofah (2.7.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mini_mime (>= 0.1.1)
method_source (1.0.0)
mime-types (3.3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2020.1104)
mini_mime (1.0.2)
mini_portile2 (2.4.0)
mini_racer (0.2.15)
libv8 (> 7.3)
minitest (5.14.2)
monetize (1.9.4)
money (~> 6.12)
money (6.13.8)
i18n (>= 0.6.4, <= 2)
msgpack (1.3.3)
multi_json (1.15.0)
multi_xml (0.6.0)
multipart-post (2.1.1)
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
nio4r (2.5.2)
nokogiri (1.10.10)
mini_portile2 (~> 2.4.0)
oauth2 (1.4.4)
faraday (>= 0.8, < 2.0)
jwt (>= 1.0, < 3.0)
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
orm_adapter (0.5.0)
paper_trail (10.3.1)
activerecord (>= 4.2)
request_store (~> 1.1)
paperclip (3.4.2)
activemodel (>= 3.0.0)
activerecord (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.0)
mime-types
parallel (1.19.2)
paranoia (2.4.2)
activerecord (>= 4.0, < 6.1)
parser (2.7.2.0)
ast (~> 2.4.1)
paypal-sdk-core (0.2.10)
multi_json (~> 1.0)
xml-simple
paypal-sdk-merchant (1.106.1)
paypal-sdk-core (~> 0.2.3)
pg (0.21.0)
polyamorous (2.3.0)
activerecord (>= 5.0)
power_assert (1.2.0)
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
pry-byebug (3.9.0)
byebug (~> 11.0)
pry (~> 0.13.0)
public_suffix (4.0.6)
rack (2.2.3)
rack-mini-profiler (2.0.2)
rack (>= 1.2.0)
rack-protection (2.1.0)
rack
rack-rewrite (1.5.1)
rack-ssl (1.4.1)
rack
rack-test (0.6.3)
rack (>= 1.0)
rails (5.0.7.2)
actioncable (= 5.0.7.2)
actionmailer (= 5.0.7.2)
actionpack (= 5.0.7.2)
actionview (= 5.0.7.2)
activejob (= 5.0.7.2)
activemodel (= 5.0.7.2)
activerecord (= 5.0.7.2)
activesupport (= 5.0.7.2)
bundler (>= 1.3.0)
railties (= 5.0.7.2)
sprockets-rails (>= 2.0.0)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.3.0)
loofah (~> 2.3)
rails-i18n (5.1.3)
i18n (>= 0.7, < 2)
railties (>= 5.0, < 6)
rails_safe_tasks (1.0.0)
railties (5.0.7.2)
actionpack (= 5.0.7.2)
activesupport (= 5.0.7.2)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rainbow (3.0.0)
raindrops (0.19.1)
rake (13.0.1)
ransack (2.3.0)
actionpack (>= 5.0)
activerecord (>= 5.0)
activesupport (>= 5.0)
i18n
polyamorous (= 2.3.0)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
redcarpet (3.5.0)
regexp_parser (1.8.2)
request_store (1.5.0)
rack (>= 1.4)
responders (2.4.1)
actionpack (>= 4.2.0, < 6.0)
railties (>= 4.2.0, < 6.0)
rexml (3.2.4)
roadie (3.5.1)
css_parser (~> 1.4)
nokogiri (~> 1.8)
roadie-rails (1.3.0)
railties (>= 3.0, < 5.3)
roadie (~> 3.1)
roo (2.8.3)
nokogiri (~> 1)
rubyzip (>= 1.3.0, < 3.0.0)
rspec (3.10.0)
rspec-core (~> 3.10.0)
rspec-expectations (~> 3.10.0)
rspec-mocks (~> 3.10.0)
rspec-core (3.10.0)
rspec-support (~> 3.10.0)
rspec-expectations (3.10.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-rails (4.0.1)
actionpack (>= 4.2)
activesupport (>= 4.2)
railties (>= 4.2)
rspec-core (~> 3.9)
rspec-expectations (~> 3.9)
rspec-mocks (~> 3.9)
rspec-support (~> 3.9)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.10.0)
rswag (2.3.1)
rswag-api (= 2.3.1)
rswag-specs (= 2.3.1)
rswag-ui (= 2.3.1)
rswag-api (2.3.1)
railties (>= 3.1, < 7.0)
rswag-specs (2.3.1)
activesupport (>= 3.1, < 7.0)
json-schema (~> 2.2)
railties (>= 3.1, < 7.0)
rswag-ui (2.3.1)
actionpack (>= 3.1, < 7.0)
railties (>= 3.1, < 7.0)
rubocop (0.81.0)
jaro_winkler (~> 1.5.1)
parallel (~> 1.10)
parser (>= 2.7.0.1)
rainbow (>= 2.2.2, < 4.0)
rexml
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 2.0)
rubocop-rails (2.5.2)
activesupport
rack (>= 1.1)
rubocop (>= 0.72.0)
ruby-progressbar (1.10.1)
ruby-rc4 (0.1.5)
ruby2_keywords (0.0.2)
rubyzip (1.3.0)
sass (3.4.25)
sass-rails (5.0.7)
railties (>= 4.0.0, < 6)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
select2-rails (3.4.9)
sass-rails
thor (~> 0.14)
selenium-webdriver (3.142.7)
childprocess (>= 0.5, < 4.0)
rubyzip (>= 1.2.2)
shoulda-matchers (4.0.1)
activesupport (>= 4.2.0)
simplecov (0.17.1)
docile (~> 1.1)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.2)
sinatra (2.1.0)
mustermann (~> 1.0)
rack (~> 2.2)
rack-protection (= 2.1.0)
tilt (~> 2.0)
spring (2.0.2)
activesupport (>= 4.2)
spring-commands-rspec (1.0.4)
spring (>= 0.9.1)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.2)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
state_machines (0.5.0)
state_machines-activemodel (0.7.1)
activemodel (>= 4.1)
state_machines (>= 0.5.0)
state_machines-activerecord (0.6.0)
activerecord (>= 4.1)
state_machines-activemodel (>= 0.5.0)
stringex (2.8.5)
stripe (5.28.0)
temple (0.8.2)
test-prof (0.7.5)
test-unit (3.3.7)
power_assert
test_after_commit (1.1.0)
activerecord (>= 3.2)
thor (0.20.3)
thread_safe (0.3.6)
tilt (2.0.10)
timecop (0.9.2)
tzinfo (1.2.8)
thread_safe (~> 0.1)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
unicode-display_width (1.7.0)
unicorn (5.7.0)
kgio (~> 2.6)
raindrops (~> 0.7)
unicorn-rails (2.2.1)
rack
unicorn
unicorn-worker-killer (0.4.4)
get_process_mem (~> 0)
unicorn (>= 4, < 6)
warden (1.2.9)
rack (>= 2.0.9)
webdrivers (4.2.0)
nokogiri (~> 1.6)
rubyzip (>= 1.3.0)
selenium-webdriver (>= 3.0, < 4.0)
webmock (3.10.0)
addressable (>= 2.3.6)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
whenever (1.0.0)
chronic (>= 0.6.3)
wicked_pdf (2.1.0)
activesupport
wkhtmltopdf-binary (0.12.6.5)
xml-simple (1.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
PLATFORMS
ruby
DEPENDENCIES
actionpack-action_caching
active_model_serializers (= 0.8.4)
activemerchant (>= 1.78.0)
activerecord-import
activerecord-postgresql-adapter
activerecord-session_store
acts-as-taggable-on (~> 4.0)
acts_as_list (= 0.9.19)
andand
angular-rails-templates (>= 0.3.0)
angularjs-file-upload-rails (~> 2.4.1)
angularjs-rails (= 1.5.5)
atomic
awesome_nested_set
awesome_print
aws-sdk (= 1.67.0)
bugsnag
byebug
cancancan (~> 1.7.0)
capybara
catalog!
coffee-rails (~> 4.2.2)
combine_pdf
compass-rails
custom_error_message!
daemons
dalli
database_cleaner
ddtrace
debugger-linecache
delayed_job_active_record
delayed_job_web
devise
devise-encryptable
devise-token_authenticatable
dfc_provider!
eventmachine (>= 1.2.3)
factory_bot_rails (= 5.2.0)
ffaker
figaro
foundation-icons-sass-rails
foundation-rails (= 5.5.2.1)
fuubar (~> 2.5.1)
geocoder
gmaps4rails
haml
highline (= 2.0.3)
i18n
i18n-js (~> 3.8.0)
immigrant
jquery-migrate-rails
jquery-rails (= 4.4.0)
jquery-ui-rails (~> 4.2)
json
json_spec (~> 1.1.4)
jwt (~> 2.2)
kaminari (~> 1.2.1)
knapsack
letter_opener (>= 1.4.1)
mini_racer (= 0.2.15)
monetize (~> 1.1)
oauth2 (~> 1.4.4)
ofn-qz!
order_management!
paper_trail (~> 10.3.1)
paperclip (~> 3.4.1)
paranoia (~> 2.4)
paypal-sdk-merchant (= 1.106.1)
pg (~> 0.21.0)
pry
pry-byebug
rack-mini-profiler (< 3.0.0)
rack-rewrite
rack-ssl
rails (> 5.0, < 5.1)
rails-i18n
rails_safe_tasks (~> 1.0)
ransack (= 2.3.0)
redcarpet
responders
roadie-rails (~> 1.3.0)
roo (~> 2.8.3)
rspec-rails (>= 3.5.2)
rspec-retry
rswag
rubocop
rubocop-rails
sass (<= 4.7.1)
sass-rails (< 6.0.0)
select2-rails (~> 3.4.7)
selenium-webdriver
shoulda-matchers
simplecov
spring
spring-commands-rspec
state_machines-activerecord
stringex (~> 2.8.5)
stripe
test-prof
test-unit (~> 3.3)
test_after_commit
timecop
uglifier (>= 1.0.3)
unicorn-rails
unicorn-worker-killer
web!
webdrivers
webmock
whenever
wicked_pdf
wkhtmltopdf-binary
RUBY VERSION
ruby 2.4.4p296
BUNDLED WITH
1.17.3

View File

@@ -1,5 +1,6 @@
[![Build Status](https://semaphoreci.com/api/v1/openfoodfoundation/openfoodnetwork-2/branches/master/badge.svg)](https://semaphoreci.com/openfoodfoundation/openfoodnetwork-2)
[![Code Climate](https://codeclimate.com/github/openfoodfoundation/openfoodnetwork.png)](https://codeclimate.com/github/openfoodfoundation/openfoodnetwork)
[![Build](https://github.com/openfoodfoundation/openfoodnetwork/actions/workflows/build.yml/badge.svg)](https://github.com/openfoodfoundation/openfoodnetwork/actions/workflows/build.yml)
# Open Food Network

View File

@@ -8,4 +8,6 @@ require_relative 'config/application'
Openfoodnetwork::Application.load_tasks
Knapsack.load_tasks if defined?(Knapsack)
unless ENV['DISABLE_KNAPSACK']
Knapsack.load_tasks if defined?(Knapsack)
end

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><circle cx="24.87" cy="24.87" r="24" fill="#f4f9fd" stroke="#cfe1f3" stroke-miterlimit="10"/><path d="M36.31 18.13c0 7.51-8.11 7.63-8.11 10.4v.71c0 .74-.6 1.34-1.34 1.34h-5.11c-.74 0-1.34-.6-1.34-1.34v-.97c0-4 3.04-5.61 5.33-6.89 1.97-1.1 3.17-1.85 3.17-3.31 0-1.93-2.46-3.21-4.46-3.21-2.6 0-3.8 1.23-5.48 3.36-.45.57-1.28.68-1.87.24l-3.12-2.36a1.35 1.35 0 01-.3-1.83c2.65-3.89 6.02-6.07 11.27-6.07 5.49-.02 11.36 4.27 11.36 9.93zM29 36.86c0 2.59-2.11 4.71-4.71 4.71s-4.71-2.11-4.71-4.71c0-2.59 2.11-4.71 4.71-4.71S29 34.27 29 36.86z" fill="#81b2e1"/></svg>

After

Width:  |  Height:  |  Size: 618 B

View File

@@ -10,5 +10,4 @@ angular.module("ofn.admin", [
"admin.taxons",
"infinite-scroll"
]).config ($httpProvider) ->
$httpProvider.defaults.headers.common["X-CSRF-Token"] = $("meta[name=csrf-token]").attr("content")
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"

View File

@@ -10,13 +10,10 @@
//= require jquery-migrate-min
//= require jquery_ujs
//= require jquery.ui.all
//= require jquery-ui-timepicker-addon
//= require jquery.powertip
//= require jquery.cookie
//= require jquery.jstree/jquery.jstree
//= require jquery.vAlign
//= require jquery.horizontalNav
//= require jquery.adaptivemenu
//= require angular
//= require angular-resource
//= require angular-animate
@@ -26,6 +23,24 @@
//= require angular-rails-templates
//= require lodash.underscore.js
// datetimepicker (fil, nb)
//= require flatpickr/dist/flatpickr.min
//= require flatpickr/dist/l10n/ar
//= require flatpickr/dist/l10n/cat
//= require flatpickr/dist/l10n/cy
//= require flatpickr/dist/l10n/de
//= require flatpickr/dist/l10n/es
//= require flatpickr/dist/l10n/fr
//= require flatpickr/dist/l10n/it
//= require flatpickr/dist/l10n/nl
//= require flatpickr/dist/l10n/pl
//= require flatpickr/dist/l10n/pt
//= require flatpickr/dist/l10n/ru
//= require flatpickr/dist/l10n/sv
//= require flatpickr/dist/l10n/tr
//= require shortcut-buttons-flatpickr/dist/shortcut-buttons-flatpickr.min
//= require flatpickr/dist/plugins/labelPlugin/labelPlugin
// spree
//= require admin/spree/spree
//= require admin/spree/spree-select2

View File

@@ -21,6 +21,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
sorting: ""
}
$scope.sorting = "name asc"
$scope.producers = producers
$scope.taxons = Taxons.all
$scope.tax_categories = tax_categories
@@ -48,7 +49,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
'q[name_cont]': $scope.q.query,
'q[supplier_id_eq]': $scope.q.producerFilter,
'q[primary_taxon_id_eq]': $scope.q.categoryFilter,
'q[s]': $scope.q.sorting,
'q[s]': $scope.sorting,
import_date: $scope.q.importDateFilter,
page: $scope.page,
per_page: $scope.per_page
@@ -104,7 +105,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
$scope.$watch 'sortOptions', (sort) ->
return unless sort && sort.predicate != ""
$scope.q.sorting = sort.getSortingExpr()
$scope.sorting = sort.getSortingExpr(defaultDirection: "asc")
$scope.fetchProducts()
, true
@@ -216,6 +217,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
'q[name_cont]': $scope.q.query
'q[supplier_id_eq]': $scope.q.producerFilter
'q[primary_taxon_id_eq]': $scope.q.categoryFilter
'q[s]': $scope.sorting
import_date: $scope.q.importDateFilter
page: $scope.page
per_page: $scope.per_page

View File

@@ -1,9 +0,0 @@
angular.module("ofn.admin").directive "datepicker", ->
require: "ngModel"
link: (scope, element, attrs, ngModel) ->
element.datepicker
dateFormat: "yy-mm-dd"
onSelect: (dateText, inst) ->
scope.$apply (scope) ->
# Fires ngModel.$parsers
ngModel.$setViewValue dateText

View File

@@ -1,11 +0,0 @@
angular.module("ofn.admin").directive "datetimepicker", ->
require: "ngModel"
link: (scope, element, attrs, ngModel) ->
element.datetimepicker
dateFormat: "yy-mm-dd"
timeFormat: "HH:mm:ss"
stepMinute: 15
onSelect: (dateText, inst) ->
scope.$apply (scope) ->
# Fires ngModel.$parsers
ngModel.$setViewValue dateText

View File

@@ -1,2 +1,2 @@
angular.module("admin.indexUtils", ['admin.resources', 'ngSanitize', 'templates', 'admin.utils']).config ($httpProvider) ->
$httpProvider.defaults.headers.common["X-CSRF-Token"] = $("meta[name=csrf-token]").attr("content");
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"

View File

@@ -3,9 +3,11 @@ angular.module("admin.indexUtils").factory 'SortOptions', ->
predicate: ""
reverse: true
getSortingExpr: () ->
sortingExpr = this.predicate + ' desc' if this.reverse
sortingExpr = this.predicate + ' asc' if !this.reverse
getSortingExpr: (options) ->
defaultDirection = if (options && options.defaultDirection) then options.defaultDirection else "desc"
reverseDirection = if defaultDirection == "desc" then "asc" else "desc"
sortingExpr = this.predicate + ' ' + defaultDirection if this.reverse
sortingExpr = this.predicate + ' ' + reverseDirection if !this.reverse
sortingExpr
toggle: (predicate) ->

View File

@@ -1,27 +1,14 @@
angular.module('admin.orderCycles', ['ngTagsInput', 'admin.indexUtils', 'admin.enterprises'])
.config ($httpProvider) ->
$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content')
.directive 'datetimepicker', ($timeout, $parse) ->
require: "ngModel"
link: (scope, element, attrs, ngModel) ->
$timeout ->
# using $parse instead of scope[attrs.datetimepicker] for cases
# where attrs.datetimepicker is 'foo.bar.lol'
$(element).datetimepicker(
Object.assign(
window.JQUERY_UI_DATETIME_PICKER_DEFAULTS,
{
onSelect: (dateText, inst) ->
scope.$apply(->
element.val(dateText)
parsed = $parse(attrs.datetimepicker)
parsed.assign(scope, dateText)
)
}
)
)
flatpickr(element, Object.assign({},
window.FLATPICKR_DATETIME_DEFAULT, {
onOpen: (selectedDates, dateStr, instance) ->
instance.setDate(ngModel.$modelValue)
instance.input.dispatchEvent(new Event('focus', { bubbles: true }));
}));
.directive 'ofnOnChange', ->
(scope, element, attrs) ->

View File

@@ -1,3 +1,2 @@
angular.module("admin.productImport", ["ngResource"]).config ($httpProvider) ->
$httpProvider.defaults.headers.common["X-CSRF-Token"] = $("meta[name=csrf-token]").attr("content")
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"

View File

@@ -8,27 +8,10 @@ Hopefully, this will evolve into a propper class.
**/
jQuery(function($) {
// Make main menu use full width
mainMenu = $('.fullwidth-menu')
if (typeof mainMenu.horizontalNav === 'function' )
mainMenu.horizontalNav({
tableDisplay: false,
responsiveDelay: 0
});
// Vertical align of checkbox fields
if (typeof $('.field.checkbox label').vAlign === 'function' )
$('.field.checkbox label').vAlign()
// We activate AdaptiveMenu only if not on webdriver
// Re-adjusting the admin menu during tests causes tests to fail.
if (!navigator.webdriver && typeof Spree !== 'undefined') {
$('.main-menu-wrapper ul').AdaptiveMenu({
text: "<a href='#'><i class='icon-chevron-down'></i> " + Spree.translations.more + "</a>",
klass: "dropdown"
});
}
// Add some tips
if (typeof $('.with-tip').powerTip === 'function' ) {
$('.with-tip').powerTip({
@@ -115,40 +98,6 @@ $.fn.radioControlsVisibilityOfElement = function(dependentElementSelector){
}
$(document).ready(function() {
if (typeof Spree !== 'undefined' &&
typeof Spree.translations !== 'undefined') {
handle_date_picker_fields = function(){
$('.datepicker').datepicker({
dateFormat: Spree.translations.date_picker,
dayNames: Spree.translations.abbr_day_names,
dayNamesMin: Spree.translations.abbr_day_names,
monthNames: Spree.translations.month_names,
prevText: Spree.translations.previous,
nextText: Spree.translations.next,
showOn: "focus"
});
$.datepicker.regional[I18n.locale] = {
prevText: Spree.translations.previous,
nextText: Spree.translations.next,
monthNames: Spree.translations.month_names,
dayNames: Spree.translations.abbr_day_names,
dayNamesMin: Spree.translations.abbr_day_names,
dateFormat: Spree.translations.date_picker
};
$.datepicker.setDefaults( $.datepicker.regional[I18n.locale]);
// Correctly display range dates
$('.date-range-filter .datepicker-from').datepicker('option', 'onSelect', function(selectedDate) {
$(".date-range-filter .datepicker-to" ).datepicker( "option", "minDate", selectedDate );
});
$('.date-range-filter .datepicker-to').datepicker('option', 'onSelect', function(selectedDate) {
$(".date-range-filter .datepicker-from" ).datepicker( "option", "maxDate", selectedDate );
});
}
handle_date_picker_fields();
}
$(".observe_field").on('change', function() {
target = $(this).attr("data-update");
ajax_indicator = $(this).attr("data-ajax-indicator") || '#busy_indicator';

View File

@@ -40,7 +40,13 @@ $(document).ready(function() {
var variant_id = save.data('variant-id');
var quantity = parseInt(save.parents('tr').find('input.line_item_quantity').val());
var maxQuantity = parseInt(save.parents('tr').find('input.line_item_quantity').attr("max"));
if (quantity > maxQuantity) {
quantity = maxQuantity;
save.parents('tr').find('input.line_item_quantity').val(maxQuantity);
alert(t("js.admin.orders.quantity_adjusted"));
}
toggleItemEdit();
adjustItems(shipment_number, variant_id, quantity);
@@ -77,7 +83,9 @@ adjustItems = function(shipment_number, variant_id, quantity){
}
url += '.json';
if(new_quantity!=0){
if (new_quantity == 0) {
alert(t("js.admin.orders.quantity_unchanged"));
} else {
$.ajax({
type: "PUT",
url: Spree.url(url),

View File

@@ -1,30 +1,51 @@
$(document).ready(function(){
window.JQUERY_UI_DATE_PICKER_DEFAULTS = {
dateFormat: Spree.translations.date_picker,
dayNames: Spree.translations.abbr_day_names,
dayNamesMin: Spree.translations.abbr_day_names,
monthNames: Spree.translations.month_names,
prevText: Spree.translations.previous,
nextText: Spree.translations.next,
oneLine: true,
showOn: 'button',
buttonImage: "<%= asset_path 'datepicker/cal.gif' %>",
buttonImageOnly: true
$(document).ready(function() {
var onClickButtons = function(index, fp) {
var date;
switch (index) {
case 0:
date = new Date();
break;
}
fp.setDate(date, true);
}
window.JQUERY_UI_DATETIME_PICKER_DEFAULTS = Object.assign(
window.FLATPICKR_DATE_DEFAULT = {
altInput: true,
altFormat: Spree.translations.flatpickr_date_format,
dateFormat: "Y-m-d",
locale: I18n.locale,
plugins: [
ShortcutButtonsPlugin({
button: [{
label: Spree.translations.today
}],
label: "or",
onClick: onClickButtons
}),
labelPlugin({})
]
}
window.FLATPICKR_DATETIME_DEFAULT = Object.assign(
{},
window.JQUERY_UI_DATE_PICKER_DEFAULTS,
window.FLATPICKR_DATE_DEFAULT,
{
currentText: Spree.translations.datetime_ui_current_text,
closeText: Spree.translations.datetime_ui_close_text,
timeText: Spree.translations.datetime_ui_time_text,
timeFormat: 'HH:mm',
controlType: 'select',
stepMinute: 15
altInput: true,
altFormat: Spree.translations.flatpickr_datetime_format,
dateFormat: "Y-m-d H:i",
enableTime: true,
time_24hr: true,
plugins: [
ShortcutButtonsPlugin({
button: [{
label: Spree.translations.now
}],
label: "or",
onClick: onClickButtons
}),
labelPlugin({})
]
}
);
$('.datetimepicker').datetimepicker(window.JQUERY_UI_DATETIME_PICKER_DEFAULTS);
flatpickr(".datetimepicker", window.FLATPICKR_DATETIME_DEFAULT);
$('a.close').click(function(event){
event.preventDefault();
$(this).parent().slideUp(250);

View File

@@ -1,9 +1,11 @@
angular.module("admin.utils").directive "datepicker", ->
angular.module("admin.utils").directive "datepicker", ($window, $timeout) ->
require: "ngModel"
link: (scope, element, attrs, ngModel) ->
element.datepicker
dateFormat: "yy-mm-dd"
onSelect: (dateText, inst) ->
scope.$apply (scope) ->
# Fires ngModel.$parsers
ngModel.$setViewValue dateText
$timeout ->
flatpickr(element, Object.assign(
{},
$window.FLATPICKR_DATE_DEFAULT, {
onOpen: (selectedDates, dateStr, instance) ->
instance.setDate(ngModel.$modelValue)
}
));

View File

@@ -1 +1,2 @@
angular.module("admin.utils", ["templates", "ngSanitize"]).config ($httpProvider) ->
angular.module("admin.utils", ["templates", "ngSanitize"]).config ($httpProvider) ->
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"

View File

@@ -1,12 +1,20 @@
Darkswarm.controller "EditBoughtOrderController", ($scope, $resource, Cart) ->
Darkswarm.controller "EditBoughtOrderController", ($scope, $resource, $timeout, Cart, Messages) ->
$scope.showBought = false
$scope.removeEnabled = true
$scope.deleteLineItem = (id) ->
params = {id: id}
success = (response) ->
$(".line-item-" + id).remove()
Cart.removeFinalisedLineItem(id)
fail = (error) ->
console.log error
if Cart.has_one_line_item()
Messages.error(t 'orders_cannot_remove_the_final_item')
$scope.removeEnabled = false
$timeout (->
$scope.removeEnabled = true
), 10000
else
params = {id: id}
success = (response) ->
$(".line-item-" + id).remove()
Cart.removeFinalisedLineItem(id)
fail = (error) ->
console.log error
$resource("/line_items/:id").delete(params, success, fail)
$resource("/line_items/:id").delete(params, success, fail)

View File

@@ -6,28 +6,62 @@ Darkswarm.controller "ShopVariantCtrl", ($scope, $modal, Cart) ->
return if old_value[0] == null && new_value[0] == null
Cart.adjust($scope.variant.line_item)
$scope.add = (quantity) ->
$scope.variant.line_item.quantity ||= 0
$scope.$watch "variant.line_item.quantity", ->
item = $scope.variant.line_item
item.quantity += quantity
if $scope.variant.product.group_buy
if item.quantity > $scope.available()
item.quantity = $scope.available()
$scope.$watch "variant.line_item.max_quantity", ->
item = $scope.variant.line_item
if item.max_quantity > $scope.available()
item.max_quantity = $scope.available()
if $scope.variant.product.group_buy
$scope.$watch "variant.line_item.quantity", ->
item = $scope.variant.line_item
if item.quantity < 1 || item.max_quantity < item.quantity
item.max_quantity = item.quantity
$scope.$watch "variant.line_item.max_quantity", ->
item = $scope.variant.line_item
if item.max_quantity < item.quantity
item.quantity = item.max_quantity
$scope.quantity = ->
$scope.variant.line_item.quantity || 0
$scope.maxQuantity = ->
$scope.variant.line_item.max_quantity || $scope.sanitizedQuantity()
$scope.sanitizedQuantity = ->
Math.max(0, Math.min($scope.quantity(), $scope.available()))
$scope.sanitizedMaxQuantity = ->
Math.max($scope.sanitizedQuantity(), Math.min($scope.maxQuantity(), $scope.available()))
$scope.add = (quantity) ->
item = $scope.variant.line_item
item.quantity = $scope.sanitizedQuantity() + quantity
$scope.addMax = (quantity) ->
item = $scope.variant.line_item
item.max_quantity += quantity
if item.max_quantity < item.quantity
item.quantity = item.max_quantity
item.max_quantity = $scope.sanitizedMaxQuantity() + quantity
$scope.canAdd = (quantity) ->
wantedQuantity = $scope.variant.line_item.quantity + quantity
wantedQuantity = $scope.sanitizedQuantity() + quantity
$scope.quantityValid(wantedQuantity)
$scope.canAddMax = (quantity) ->
variant = $scope.variant
wantedQuantity = variant.line_item.max_quantity + quantity
wantedQuantity = $scope.sanitizedMaxQuantity() + quantity
$scope.quantityValid(wantedQuantity) && variant.line_item.quantity > 0
$scope.available = ->
variant = $scope.variant
variant.on_demand && Infinity || variant.on_hand
$scope.quantityValid = (quantity) ->
variant = $scope.variant
minimum = 0

View File

@@ -12,9 +12,8 @@ window.Darkswarm = angular.module("Darkswarm", [
'angularFileUpload',
'angularSlideables'
]).config ($httpProvider, $tooltipProvider, $locationProvider, $anchorScrollProvider) ->
$httpProvider.defaults.headers['common']['X-CSRF-Token'] = $('meta[name="csrf-token"]').attr('content')
$httpProvider.defaults.headers['common']['X-Requested-With'] = 'XMLHttpRequest'
$httpProvider.defaults.headers.common.Accept = "application/json, text/javascript, */*"
$httpProvider.defaults.headers.common['Accept'] = "application/json, text/javascript, */*"
# We manually handle our scrolling
$anchorScrollProvider.disableAutoScrolling()

View File

@@ -1,21 +0,0 @@
Darkswarm.directive 'mapOsmTiles', ($timeout) ->
restrict: 'E'
require: '^uiGmapGoogleMap'
scope: {}
link: (scope, elem, attrs, ctrl) ->
$timeout =>
map = ctrl.getMap()
map.mapTypes.set 'OSM', new google.maps.ImageMapType
getTileUrl: (coord, zoom) ->
# "Wrap" x (logitude) at 180th meridian properly
# NB: Don't touch coord.x because coord param is by reference, and changing its x property breaks something in Google's lib
tilesPerGlobe = 1 << zoom
x = coord.x % tilesPerGlobe
if x < 0
x = tilesPerGlobe + x
# Wrap y (latitude) in a like manner if you want to enable vertical infinite scroll
'https://a.tile.openstreetmap.org/' + zoom + '/' + x + '/' + coord.y + '.png'
tileSize: new google.maps.Size(256, 256)
name: 'OpenStreetMap'
maxZoom: 18

View File

@@ -0,0 +1,17 @@
Darkswarm.directive "questionMarkWithTooltip", ($tooltip)->
# We use the $tooltip service from Angular foundation to give us boilerplate
# Subsequently we patch the scope, template and restrictions
tooltip = $tooltip 'questionMarkWithTooltip', 'questionMarkWithTooltip', 'click'
tooltip.scope =
context: "="
tooltip.templateUrl = "question_mark_with_tooltip_icon.html"
tooltip.replace = true
tooltip.restrict = 'E'
tooltip
# This is automatically referenced via naming convention in $tooltip
Darkswarm.directive 'questionMarkWithTooltipPopup', ->
restrict: 'EA'
replace: true
templateUrl: 'question_mark_with_tooltip.html'
scope: false

View File

@@ -0,0 +1,7 @@
Darkswarm.directive "shopVariantWithUnitPrice", ->
restrict: 'E'
replace: true
templateUrl: 'shop_variant_with_unit_price.html'
scope:
variant: '='
controller: 'ShopVariantCtrl'

View File

@@ -1,4 +1,4 @@
Darkswarm.directive "tabsetCtrl", (Tabsets, $location) ->
Darkswarm.directive "tabsetCtrl", (Tabsets, $location, $rootScope) ->
restrict: "C"
scope:
id: "@"
@@ -9,7 +9,13 @@ Darkswarm.directive "tabsetCtrl", (Tabsets, $location) ->
if $scope.navigate
path = $location.path()?.match(/^\/\w+$/)?[0]
$scope.selected = path[1..] if path
# Watch location change success event to operate back/forward buttons
$rootScope.$on "$locationChangeSuccess", ->
if $scope.navigate
path = $location.path()?.match(/^\/\w+$/)?[0]
Tabsets.toggle($scope.id, path[1..] if path)
this.toggle = (name) ->
Tabsets.toggle($scope.id, name)

View File

@@ -115,6 +115,9 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http, $modal, $roo
@line_items = []
localStorageService.clearAll() # One day this will have to be moar GRANULAR
has_one_line_item: =>
@line_items_finalised.length == 1
removeFinalisedLineItem: (id) =>
@line_items_finalised = @line_items_finalised.filter (item) ->
item.id != id

View File

@@ -4,12 +4,10 @@ Darkswarm.factory "MapConfiguration", ->
center:
latitude: -37.4713077
longitude: 144.7851531
cluster_icon: "<%= image_path('map_009-cluster.svg') %>"
cluster_icon: "/map_icons/map_009-cluster.svg"
zoom: 12
additional_options:
# mapTypeId: 'satellite'
mapTypeId: 'OSM'
mapTypeControl: false
streetViewControl: false
styles: [{"featureType":"landscape","stylers":[{"saturation":-100},{"lightness":65},{"visibility":"on"}]},{"featureType":"poi","stylers":[{"saturation":-100},{"lightness":51},{"visibility":"simplified"}]},{"featureType":"road.highway","stylers":[{"saturation":-100},{"visibility":"simplified"}]},{"featureType":"road.arterial","stylers":[{"saturation":-100},{"lightness":30},{"visibility":"on"}]},{"featureType":"road.local","stylers":[{"saturation":-100},{"lightness":40},{"visibility":"on"}]},{"featureType":"transit","stylers":[{"saturation":-100},{"visibility":"simplified"}]},{"featureType":"administrative.province","stylers":[{"visibility":"off"}]},{"featureType":"water","elementType":"labels","stylers":[{"visibility":"on"},{"lightness":-25},{"saturation":-100}]},{"featureType":"water","elementType":"geometry","stylers":[{"hue":"#ffff00"},{"lightness":-25},{"saturation":-97}]},{"featureType":"road","elementType": "labels.icon","stylers":[{"visibility":"off"}]}]

View File

@@ -23,5 +23,5 @@ Darkswarm.factory 'Variants', ->
lineItemFor: (variant) ->
variant: variant
quantity: null
max_quantity: null
quantity: 0
max_quantity: 0

View File

@@ -6,7 +6,7 @@
%p.error{ ng: { show: 'error' } }
{{error}}
%img.spinner{ src: "/assets/spinning-circles.svg", ng: { show: "loading" } }
%img.spinner{ src: image_path("spinning-circles.svg"), ng: { show: "loading" } }
%p{ ng: { show: "loading" } }
= t('js.admin.orders.index.please_wait')

View File

@@ -3,7 +3,7 @@
%form#image_upload{ name: 'form', novalidate: true, enctype: 'multipart/form-data', multipart: true, ng: { controller: "ProductImageCtrl" } }
%div.image-preview
%img.spinner{ src: "/assets/spinning-circles.svg", ng: { hide: "!imageUploader.isUploading" }}
%img.spinner{ src: image_path("spinning-circles.svg"), ng: { hide: "!imageUploader.isUploading" }}
%img.preview{ng: {src: "{{imagePreview}}", class: "{'faded': imageUploader.isUploading}"}}
%label{for: 'image-upload', class: 'button'} {{ 'admin.products.index.upload_an_image' | t }}

View File

@@ -6,6 +6,6 @@
.sixteen.columns.alpha#loading{ 'ng-show' => 'productsLoading()' }
%br
%img.spinner{ src: "/assets/spinning-circles.svg" }
%img.spinner{ src: image_path("spinning-circles.svg")}
%h1
{{ 'js.admin.panels.exchange_products.loading_variants' | t }}

View File

@@ -9,27 +9,27 @@
{{ variant.line_item.total_price | localizeCurrency }}
.row
.columns.small-6
.columns.small-12.medium-6
.variant-bulk-buy-quantity-label
{{ "js.shopfront.bulk_buy_modal.min_quantity" | t }}
%div
%button.bulk-buy-add.variant-quantity{type: "button", ng: {click: "add(-1)", disabled: "!canAdd(-1)"}}>
-# U+FF0D Fullwidth Hyphen-Minus
%span.bulk-buy.variant-quantity>
{{ variant.line_item.quantity }}
%input.bulk-buy.variant-quantity{type: "number", min: "0", max: "{{ available() }}",
ng: {model: "variant.line_item.quantity", max: "Infinity"}}>
%button.bulk-buy-add.variant-quantity{type: "button", ng: {click: "add(1)", disabled: "!canAdd(1)"}}
-# U+FF0B Fullwidth Plus Sign
.columns.small-6
.columns.small-12.medium-6
.variant-bulk-buy-quantity-label
{{ "js.shopfront.bulk_buy_modal.max_quantity" | t }}
%div
%button.bulk-buy-add.variant-quantity{type: "button", ng: {click: "addMax(-1)", disabled: "!canAddMax(-1)"}}>
-# U+FF0D Fullwidth Hyphen-Minus
%span.bulk-buy.variant-quantity>
{{ variant.line_item.max_quantity }}
%input.bulk-buy.variant-quantity{type: "number", min: "0", max: "{{ available() }}",
ng: {model: "variant.line_item.max_quantity", max: "Infinity"}}>
%button.bulk-buy-add.variant-quantity{type: "button", ng: {click: "addMax(1)", disabled: "!canAddMax(1)"}}
-# U+FF0B Fullwidth Plus Sign

View File

@@ -1,14 +1,18 @@
.small-5.medium-3.large-3.columns.text-right{"ng-if" => "::!variant.product.group_buy"}
.small-5.medium-3.large-3.columns.variant-quantity-column.text-right{"ng-if" => "::!variant.product.group_buy"}
%button.add-variant{type: "button", ng: {if: "!variant.line_item.quantity", click: "add(1)", disabled: "!canAdd(1)"}}
{{ "js.shopfront.variant.add_to_cart" | t }}
%button.variant-quantity{type: "button", ng: {if: "variant.line_item.quantity", click: "add(-1)"}}>
-# U+FF0D Fullwidth Hyphen-Minus
%button.variant-quantity{type: "button", ng: {if: "variant.line_item.quantity", click: "add(1)", disabled: "!canAdd(1)"}}
-# U+FF0B Fullwidth Plus Sign
%br
.variant-quantity-inputs{ng: {if: "variant.line_item.quantity == 0"}}
%button.add-variant{type: "button", ng: {click: "add(1)", disabled: "!canAdd(1)"}}
{{ "js.shopfront.variant.add_to_cart" | t }}
.variant-quantity-inputs{ng: {if: "variant.line_item.quantity != 0"}}
%button.variant-quantity{type: "button", ng: {click: "add(-1)", disabled: "!canAdd(-1)"}}>
-# U+FF0D Fullwidth Hyphen-Minus
%input.variant-quantity{ type: "number", min: "0", max: "{{ available() }}",
ng: {model: "variant.line_item.quantity", max: "Infinity"}}>
%button.variant-quantity{type: "button", ng: {click: "add(1)", disabled: "!canAdd(1)"}}
-# U+FF0B Fullwidth Plus Sign
.variant-quantity-display{ng: {class: "{visible: variant.line_item.quantity}"}}
{{ "js.shopfront.variant.quantity_in_cart" | t:{quantity: variant.line_item.quantity || 0} }}
%input{type: :hidden,

View File

@@ -1,4 +1,4 @@
.small-5.medium-3.large-3.columns.text-right{"ng-if" => "::variant.product.group_buy"}
.small-5.medium-3.large-3.columns.variant-quantity-column.text-right{"ng-if" => "::variant.product.group_buy"}
%button.add-variant{type: "button", ng: {if: "!variant.line_item.quantity", click: "addBulk(1)", disabled: "!canAdd(1)"}}
{{ "js.shopfront.variant.add_to_cart" | t }}

View File

@@ -0,0 +1,6 @@
.joyride-tip-guide.question-mark-tooltip{class: "{{ context }}", ng: {class: "{ in: tt_isOpen, fade: tt_animation }", show: "tt_isOpen"}}
.background{ng: {click: "tt_isOpen = false"}}
.joyride-content-wrapper
{{ "js.shopfront.unit_price_tooltip" | t }}
%span.joyride-nub.bottom

View File

@@ -0,0 +1 @@
%button.question-mark-icon{"ng-class" => "{open: tt_isOpen}", type: 'button'}

View File

@@ -1,5 +1,5 @@
.variants.row
.small-4.medium-4.large-6.columns.variant-name
.small-4.medium-4.large-5.columns.variant-name
.inline{"ng-if" => "::variant.display_name"} {{ ::variant.display_name }}
.variant-unit {{ ::variant.unit_to_display }}
.small-3.medium-3.large-2.columns.variant-price
@@ -8,7 +8,7 @@
"price-breakdown-placement" => "bottom",
"price-breakdown-animation" => true}
{{ variant.price_with_fees | localizeCurrency }}
.medium-2.large-1.columns.total-price
.medium-2.large-2.columns.total-price
%span{"ng-class" => "{filled: variant.line_item.total_price}"}
{{ variant.line_item.total_price | localizeCurrency }}

View File

@@ -0,0 +1,22 @@
.variants.row
.small-4.medium-4.large-5.columns.variant-name
.inline{"ng-if" => "::variant.display_name"} {{ ::variant.display_name }}
.variant-unit {{ ::variant.unit_to_display }}
.small-3.medium-3.large-2.columns.variant-price
%price-breakdown{"price-breakdown" => "_", variant: "variant",
"price-breakdown-append-to-body" => "true",
"price-breakdown-placement" => "bottom",
"price-breakdown-animation" => true}
{{ variant.price_with_fees | localizeCurrency }}
.unit-price.variant-unit-price
%question-mark-with-tooltip{"question-mark-with-tooltip" => "_",
"question-mark-with-tooltip-append-to-body" => "true",
"question-mark-with-tooltip-placement" => "top",
"question-mark-with-tooltip-animation" => true}
{{ variant.unit_price_price | localizeCurrency }} / {{ variant.unit_price_unit }}
.medium-2.large-2.columns.total-price
%span{"ng-class" => "{filled: variant.line_item.total_price}"}
{{ variant.line_item.total_price | localizeCurrency }}
%ng-include{src: "'partials/shop_variant_no_group_buy.html'"}
%ng-include{src: "'partials/shop_variant_with_group_buy.html'"}

View File

@@ -5,14 +5,15 @@
*
*= require normalize
*= require skeleton
*= require responsive-tables
*= require jquery.powertip
*= require jquery.ui.datepicker
*= require jquery-ui-timepicker-addon
*= require jquery.ui.dialog
*= require shared/textAngular
*= require shared/ng-tags-input.min
*= require select2
*= require flatpickr/dist/flatpickr
*= require flatpickr/dist/themes/material_blue
*= require shortcut-buttons-flatpickr/dist/themes/light
*= require_self
*/
@@ -30,6 +31,8 @@
@import 'shared/forms';
@import 'shared/layout';
@import 'plugins/flatpickr-customization';
@import 'plugins/powertip';
@import 'plugins/jstree';
@import 'plugins/font-awesome';

View File

@@ -2,6 +2,8 @@
@import 'admin/globals/mixins';
@import 'admin/plugins/font-awesome';
// scss-lint:disable QualifyingElement
.date-range-filter {
.range-divider {
padding: 0;
@@ -11,148 +13,21 @@
}
}
#ui-datepicker-div {
@include border-radius($border-radius);
border-color: $color-3;
padding: 0;
margin-top: 10px;
&:before {
content: '';
position: absolute;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-bottom: 10px solid $color-3;
top: 0px;
margin-top: -10px;
left: 25px;
z-index: 1;
}
.ui-datepicker-header {
padding: 0;
background-image: none;
background-color: $color-3;
border: none;
border-bottom: none;
border-radius: 0;
height: 32px;
.ui-datepicker-prev, .ui-datepicker-next {
border-radius: 0;
top: 0;
height: 32px;
&:hover {
border: none;
background-image: none;
background-color: $color-3;
cursor: pointer;
}
.ui-icon {
background-image: none;
text-indent: 0;
color: $color-1;
width: 10px;
margin-left: -5px;
@extend [class^="icon-"]:before;
&:hover {
color: very-light($color-2, 25);
}
}
}
.ui-datepicker-prev {
left: 0;
.ui-icon {
@extend .icon-arrow-left;
}
}
.ui-datepicker-next {
right: 0;
.ui-icon {
@extend .icon-arrow-right;
}
&:hover {
.ui-icon {
margin-left: -5px;
}
}
}
.ui-datepicker-title {
color: $color-1;
text-transform: uppercase;
font-size: 85% !important;
padding: 6px 10px;
}
}
table.ui-datepicker-calendar {
border: none;
thead {
th {
border-bottom: 1px solid $color-border;
border-right: 1px solid $color-border;
color: $color-body-text;
width: 33px;
&:last-child {
border-right: none;
}
}
}
tbody {
tr:hover {
td {
background-color: transparent !important;
}
}
&:last-child tr:last-child td {
border-bottom: none;
}
td {
a {
border: 1px solid transparent;
background-color: $color-1;
background-image: none;
font-size: 85%;
color: $color-body-text;
&.ui-state-active {
background-color: $color-2;
color: $color-1;
}
&:hover {
background-color: $color-2;
color: $color-1;
border-color: darken($color-2, 5);
}
}
&.ui-state-disabled {
.ui-state-default {
border: none;
background-image: none;
background-color: transparent;
}
}
&.ui-datepicker-today {
a {
background-color: $color-6;
color: $color-1;
border: 1px solid darken($color-6, 5);
}
}
}
}
}
input.datetimepicker {
min-width: 12.9em;
}
.container input[readonly].flatpickr-input,
.container input[readonly].datepicker,
.container input[readonly].datetimepicker {
background-color: $white;
cursor: pointer;
}
img.ui-datepicker-trigger {
margin-left: -1.75em;
position: absolute;
margin-top: 0.5em;
}
// scss-lint:enable QualifyingElement

View File

@@ -42,4 +42,15 @@
&.notice { background-color: rgba($color-notice, 0.8) }
&.success { background-color: rgba($color-success, 0.8) }
&.error { background-color: rgba($color-error, 0.8) }
}
}
.notice {
padding: 1rem;
margin-bottom: 1.5rem;
background-color: $spree-light-blue;
border-radius: $border-radius;
a {
font-weight: bold;
}
}

View File

@@ -65,12 +65,17 @@ nav.menu {
#admin-menu {
background-color: $color-3;
ul {
display: flex;
}
li {
min-width: 90px;
flex-grow: 1;
a {
display: block;
padding: 25px 20px;
padding: 25px 5px;
color: $color-1 !important;
text-transform: uppercase;
position: relative;
@@ -160,3 +165,11 @@ nav.menu {
}
}
}
#header figure {
margin: 0.25em 0;
}
#login-nav {
line-height: 1.75em;
}

View File

@@ -66,7 +66,6 @@ div.dashboard_item {
a {
border-radius: 0px 4px 0px 0px;
margin-left: 8px;
height: 100%;
padding: 15px 2px 0px 2px;
}

View File

@@ -1,9 +0,0 @@
input.datetimepicker {
min-width: 12.9em;
}
img.ui-datepicker-trigger {
margin-left: -1.75em;
position: absolute;
margin-top: 0.5em;
}

View File

@@ -0,0 +1,134 @@
// Grid Calculations
// Adjust $col-gutter (space between columns, as percentage) to adjust everything else automatically
$col-gutter: 2;
$total-gutter: $col-gutter * 15;
$total-colspace: 100 - $total-gutter;
$gutter-width: $col-gutter / 100;
$col-width: ($total-colspace / 16) / 100;
$col-1: $col-width;
$col-2: ($col-width * 2) + $gutter-width;
$col-3: ($col-width * 3) + ($gutter-width * 2);
$col-4: ($col-width * 4) + ($gutter-width * 3);
$col-5: ($col-width * 5) + ($gutter-width * 4);
$col-6: ($col-width * 6) + ($gutter-width * 5);
$col-7: ($col-width * 7) + ($gutter-width * 6);
$col-8: ($col-width * 8) + ($gutter-width * 7);
$col-9: ($col-width * 9) + ($gutter-width * 8);
$col-10: ($col-width * 10) + ($gutter-width * 9);
$col-11: ($col-width * 11) + ($gutter-width * 10);
$col-12: ($col-width * 12) + ($gutter-width * 11);
$col-13: ($col-width * 13) + ($gutter-width * 12);
$col-14: ($col-width * 14) + ($gutter-width * 13);
$col-15: ($col-width * 15) + ($gutter-width * 14);
$col-16: 100;
// Grid Classes
.container {
position: relative;
width: 100%;
margin: 0 auto;
padding: 0 1.5%;
box-sizing: border-box;
display: flex;
max-width: 1400px;
&.no-gutter {
padding: 0;
}
.row {
width: 100%;
margin-bottom: 1.5em;
}
}
.container::after,
.row::after,
.clearfix::after,
.clear::after {
content: "";
display: table;
clear: both;
}
.column,
.columns {
margin-left: percentage($gutter-width);
float: left;
box-sizing: border-box;
}
.column.one,
.columns.one { width: percentage($col-1); }
.columns.two { width: percentage($col-2); }
.columns.three { width: percentage($col-3); }
.columns.four { width: percentage($col-4); }
.columns.five { width: percentage($col-5); }
.columns.six { width: percentage($col-6); }
.columns.seven { width: percentage($col-7); }
.columns.eight { width: percentage($col-8); }
.columns.nine { width: percentage($col-9); }
.columns.ten { width: percentage($col-10); }
.columns.eleven { width: percentage($col-11); }
.columns.twelve { width: percentage($col-12); }
.columns.thirteen { width: percentage($col-13); }
.columns.fourteen { width: percentage($col-14);}
.columns.fifteen { width: percentage($col-15); }
.columns.sixteen { width: 100%; }
.column.offset-by-one,
.columns.offset-by-one { margin-left: $col-2; }
.columns.offset-by-two { margin-left: $col-3; }
.columns.offset-by-three { margin-left: $col-4; }
.columns.offset-by-four { margin-left: $col-5; }
.columns.offset-by-five { margin-left: $col-6; }
.columns.offset-by-six { margin-left: $col-7; }
.columns.offset-by-seven { margin-left: $col-8; }
.columns.offset-by-eight { margin-left: $col-9; }
.columns.offset-by-nine { margin-left: $col-10; }
.columns.offset-by-ten { margin-left: $col-11; }
.columns.offset-by-eleven { margin-left: $col-12; }
.columns.offset-by-twelve { margin-left: $col-13; }
.columns.offset-by-thirteen { margin-left: $col-14; }
.columns.offset-by-fourteen { margin-left: $col-15; }
.columns.offset-by-fifteen { margin-left: 100%; }
.column.alpha,
.columns.alpha,
.columns.sixteen,
.column:first-child,
.columns:first-child {
margin-left: 0;
}

View File

@@ -0,0 +1,62 @@
$background-grey: #eceef1;
$background-blue: #5498da;
// scss-lint:disable SelectorFormat
.flatpickr-calendar {
border-radius: 0;
// Disable animation
&.animate.open {
animation: none;
}
&.arrowBottom::after {
border-top-color: $background-grey;
}
&.arrowTop::after {
border-bottom-color: $background-blue;
}
.flatpickr-months .flatpickr-month {
border-radius: 0;
}
.flatpickr-months .flatpickr-month,
.flatpickr-current-month .flatpickr-monthDropdown-months {
background: $background-blue;
}
.flatpickr-weekdays {
background: $background-blue;
.flatpickr-weekday {
background: $background-blue;
}
}
.flatpickr-day.selected,
.flatpickr-day.startRange,
.flatpickr-day.endRange,
.flatpickr-day.selected.inRange,
.flatpickr-day.startRange.inRange,
.flatpickr-day.endRange.inRange,
.flatpickr-day.selected:focus,
.flatpickr-day.startRange:focus,
.flatpickr-day.endRange:focus,
.flatpickr-day.selected:hover,
.flatpickr-day.startRange:hover,
.flatpickr-day.endRange:hover,
.flatpickr-day.selected.prevMonthDay,
.flatpickr-day.startRange.prevMonthDay,
.flatpickr-day.endRange.prevMonthDay,
.flatpickr-day.selected.nextMonthDay,
.flatpickr-day.startRange.nextMonthDay,
.flatpickr-day.endRange.nextMonthDay {
background: $background-blue;
border-color: $background-blue;
}
}
// scss-lint:enable SelectorFormat

View File

@@ -185,6 +185,7 @@ fieldset {
text-transform: uppercase;
text-align: center;
padding: 8px 15px;
margin: 0 auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;

View File

@@ -16,6 +16,7 @@
}
.icon-email:before { @extend .icon-envelope:before }
.icon-resend_authorization_email:before { @extend .icon-envelope:before }
.icon-resume:before { @extend .icon-refresh:before }
.icon-cancel:before,

View File

@@ -16,3 +16,5 @@ $admin-table-border: $pale-blue;
$modal-close-button-color: #de6060;
$modal-close-button-hover-color: #bf4545;
$disabled-button: $light-grey;
$border-radius: 3px;

View File

@@ -6,15 +6,25 @@
.darkswarm {
// #search
@include placeholder(rgba(0, 0, 0, 0.4), #777);
.row .columns.variant-quantity-column {
padding-left: 0;
}
}
.reveal-modal.product-bulk-modal {
width: 26em;
width: 27em;
}
// Components to add variants to cart and change quantities
//
// They are not nested so that they can be used in modals.
.variant-quantity-inputs {
height: 2.5rem;
white-space: nowrap;
}
button.add-variant, button.variant-quantity {
height: 2.5rem;
border-radius: 0;
@@ -48,7 +58,7 @@ button.add-variant, button.variant-quantity {
}
button.add-variant {
min-width: 6rem;
min-width: 7rem;
padding: 0 1em;
&[disabled] {
@@ -59,7 +69,7 @@ button.add-variant {
}
button.variant-quantity {
width: 3rem;
width: 2.25rem;
&:nth-of-type(1):not(.bulk-buy):not(.bulk-buy-add) {
border-right: .1em solid $orange-400;
@@ -71,7 +81,7 @@ button.variant-quantity {
font-size: 0.875em;
margin-top: 0.25em;
text-align: center;
width: 6rem;
width: 7rem;
visibility: hidden;
&.visible {
@@ -83,20 +93,28 @@ button.bulk-buy.variant-quantity {
background-color: transparent;
border: .1em solid $grey-200;
color: inherit;
width: 3.5rem;
}
button.bulk-buy-add.variant-quantity {
width: 2.5rem;
}
span.bulk-buy.variant-quantity {
[type="number"].variant-quantity {
border: .1em solid $grey-200;
height: 2.5rem;
display: inline-block;
min-width: 3em;
padding: .5em;
width: 2.5rem;
padding: 0;
text-align: center;
vertical-align: top;
appearance: none;
-webkit-appearance: none;
-moz-appearance: textfield;
&.bulk-buy {
width: 5rem;
}
}
.variant-bulk-buy-price-summary {

View File

@@ -65,6 +65,14 @@
}
}
.variant-unit-price {
color: $grey-700;
font-size: 0.85rem;
margin-top: 15px;
position: relative;
left: -1px;
}
// Total price
.total-price {
padding-left: 0rem;

View File

@@ -99,7 +99,6 @@
.transaction-group {}
table {
width: 100%;
border-radius: $radius-medium $radius-medium 0 0;
tr:nth-of-type(even) {
@@ -143,3 +142,29 @@
width: 10%;
}
}
table {
&.full {
width: 100%;
}
&.top-rounded {
border-radius: $radius-medium $radius-medium 0 0;
}
}
// Note this relies on the <th> using `.show-for-large-up` as well.
.requiring-authorization tr {
position: relative;
th:last-child {
position: absolute;
// The following calculation is the equivalent of:
//
// $table-cell-padding + 2 * browser's default border-spacing + 2 * table border
//
// Unfortunately we can't use Scss's interpolation
// https://sass-lang.com/documentation/interpolation. We're using a too old version perhaps?
right: calc(12px + 2*2px + 2*1px);
}
}

View File

@@ -42,8 +42,10 @@ $black: #000;
$white: #fff;
$grey-050: #f7f7f7;
$grey-075: #f3f8fc;
$grey-100: #e6e6e6;
$grey-200: #ddd;
$grey-250: #cfe1f3;
$grey-300: #ccc;
$grey-400: #bbb;
$grey-500: #999;
@@ -53,6 +55,9 @@ $grey-650: #666;
$grey-700: #555;
$grey-800: #333;
$tiny-blue: #80b2e1;
$dynamic-blue: #3d8dd1;
$teal-300: #80d3df;
$teal-400: #4cb5c5;
$teal-500: #0096ad;

View File

@@ -52,6 +52,11 @@
font-size: 1.5em;
}
}
.unit-price {
justify-content: flex-end;
}
}
.go-shopping {
@@ -82,7 +87,8 @@
padding: 0.5em 0 0.5em 1em;
}
span {
span,
.total-price {
color: $grey-800;
font-size: 16px;
line-height: 1.4em;

View File

@@ -44,6 +44,12 @@
}
}
.unit-price {
color: $grey-500;
font-size: $text-xs;
}
input {
&.ng-invalid-stock,
&.ng-invalid-number {

View File

@@ -64,32 +64,3 @@
}
}
}
.map-footer {
position: fixed;
z-index: 2;
width: 100%;
height: 23px;
left: 80px;
right: 0;
bottom: 6px;
margin: 0;
padding: 6px;
font-size: 14px;
font-weight: bold;
text-shadow: 2px 2px #aaa;
color: #fff;
a, a:hover, a:active, a:focus {
color: #fff;
}
@media all and (max-width: 1025px) {
left: 0px;
}
}
.tabs-content .map-footer {
position: relative;
bottom: 30px;
}

View File

@@ -0,0 +1,83 @@
.unit-price {
display: flex;
align-items: center;
}
.question-mark-icon {
background-image: image-url("question-mark-icon.svg");
background-size: cover;
background-repeat: no-repeat;
border-radius: 50%;
// Reset button element css attributes
padding: 0;
margin: 0;
width: 20px;
min-width: 20px;
height: 20px;
background-color: transparent;
&:hover,
&:focus {
background-color: transparent;
}
&.open {
background-image: none;
background-color: $teal-500;
&::before {
@include icon-font;
content: "";
color: $white;
}
}
}
.joyride-tip-guide.question-mark-tooltip {
width: 16rem;
max-width: 65%;
// JS needs to be tweaked to adjust for left alignment - this is dynamic can't rewrite in CSS
margin-left: -7.4rem;
margin-top: -0.1rem;
background-color: transparent;
.background {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
cursor: pointer;
}
.joyride-content-wrapper {
background-color: $dynamic-blue;
padding: $padding-small;
border-radius: $radius-small;
color: $white;
width: 100%;
font-size: 0.8rem;
}
.joyride-nub.bottom {
// Need to rewrite all with !important as it's marked as !important in the original file
border-color: $dynamic-blue !important;
border-bottom-color: transparent !important;
border-left-color: transparent !important;
border-right-color: transparent !important;
left: 7.4rem;
z-index: -1;
}
&.cart-sidebar {
// Small size (used in the cart sidebar)
width: 13rem;
margin-left: -10.4rem;
.joyride-nub.bottom {
left: 10.4rem;
}
}
}

View File

@@ -3,9 +3,9 @@
// See https://github.com/zurb/foundation/issues/3855#issuecomment-30372252
@import "variables";
@import "components/global";
@import "components/buttons";
@import "components/panels";
@import "foundation/components/global";
@import "foundation/components/buttons";
@import "foundation/components/panels";
#sidebar {
margin-top: 1.875em;

View File

@@ -1,9 +1,11 @@
$table-cell-padding: 12px;
table {
thead tr, tbody tr {
th, td {
box-sizing: border-box;
padding-left: 12px;
padding-right: 12px;
padding-left: $table-cell-padding;
padding-right: $table-cell-padding;
overflow: hidden;
}
}

View File

@@ -32,22 +32,24 @@
border-bottom: 4px solid transparent;
&:hover, &:focus, &:active {
transition: all 0.4s ease-in-out;
border-bottom: 4px solid $clr-brick-bright;
cursor: pointer;
@include breakpoint(phablet) {
transition: none;
color: white;
background-color: $clr-brick-bright;
}
a {
color: $clr-brick-bright;
@media (hover: hover) {
&:hover {
transition: all 0.4s ease-in-out;
border-bottom: 4px solid $clr-brick-bright;
cursor: pointer;
@include breakpoint(phablet) {
color: #ffffff;
transition: none;
color: white;
background-color: $clr-brick-bright;
}
a {
color: $clr-brick-bright;
@include breakpoint(phablet) {
color: #ffffff;
}
}
}
}

View File

@@ -61,6 +61,13 @@
@include border-radius(0.5em);
outline: none;
&.x-small {
padding: 0.5rem 0.75rem;
font-size: $text-xs;
font-weight: 600;
margin: 0;
}
}
.button.primary, button.primary {

View File

@@ -43,3 +43,7 @@ $radius-medium: 0.5em;
$shop-sidebar-overlay: rgba(0, 0, 0, 0.5);
$transition-sidebar: 250ms ease-in-out 0s;
$padding-small: 0.5rem;
$text-xs: 0.75rem;

View File

@@ -63,6 +63,12 @@ p.notice {
margin-top: 20px;
}
.powered-by-ofn {
background-color: #ebebeb;
padding: .5em;
text-align: center;
}
table.social {
background-color: #ebebeb;

View File

@@ -33,7 +33,9 @@ module Admin
# and https://www.postgresql.org/docs/current/static/sql-select.html#SQL-FOR-UPDATE-SHARE
order.with_lock do
if @line_item.update(line_item_params)
order.update_distribution_charge!
order.update_line_item_fees! @line_item
order.update_order_fees!
order.update!
render nothing: true, status: :no_content # No Content, does not trigger ng resource auto-update
else
render json: { errors: @line_item.errors }, status: :precondition_failed

View File

@@ -29,7 +29,8 @@ module Admin
collection_hash = Hash[permitted_params[:column_preferences].
each_with_index.map { |cp, i| [i, cp] }]
collection_hash.select!{ |_i, cp| cp[:action_name] == permitted_params[:action_name] }
@cp_set = ColumnPreferenceSet.new @column_preferences, collection_attributes: collection_hash
@cp_set = Sets::ColumnPreferenceSet.new(@column_preferences,
collection_attributes: collection_hash)
end
def collection

View File

@@ -10,6 +10,8 @@ module Admin
blank_enterprise_fee = EnterpriseFee.new
blank_enterprise_fee.enterprise = current_enterprise
@collection = @collection.to_a
3.times { @collection << blank_enterprise_fee }
respond_to do |format|
@@ -27,7 +29,7 @@ module Admin
end
def bulk_update
@enterprise_fee_set = EnterpriseFeeSet.new(enterprise_fee_bulk_params)
@enterprise_fee_set = Sets::EnterpriseFeeSet.new(enterprise_fee_bulk_params)
if @enterprise_fee_set.save
redirect_to redirect_path, notice: I18n.t(:enterprise_fees_update_notice)
@@ -40,7 +42,7 @@ module Admin
private
def load_enterprise_fee_set
@enterprise_fee_set = EnterpriseFeeSet.new collection: collection
@enterprise_fee_set = Sets::EnterpriseFeeSet.new collection: collection
end
def load_data
@@ -80,7 +82,7 @@ module Admin
end
def enterprise_fee_bulk_params
params.require(:enterprise_fee_set).permit(
params.require(:sets_enterprise_fee_set).permit(
collection_attributes: [
:id, :enterprise_id, :fee_type, :name, :tax_category_id,
:inherits_tax_category, :calculator_type,

View File

@@ -64,12 +64,14 @@ module Admin
end
def register
if params[:sells] == 'unspecified'
register_params = params.permit(:sells)
if register_params[:sells] == 'unspecified'
flash[:error] = I18n.t(:enterprise_register_package_error)
return render :welcome, layout: "spree/layouts/bare_admin"
end
attributes = { sells: params[:sells], visible: true }
attributes = { sells: register_params[:sells], visible: true }
if @enterprise.update(attributes)
flash[:success] = I18n.t(:enterprise_register_success_notice, enterprise: @enterprise.name)
@@ -81,7 +83,7 @@ module Admin
end
def bulk_update
@enterprise_set = EnterpriseSet.new(collection, bulk_params)
@enterprise_set = Sets::EnterpriseSet.new(collection, bulk_params)
if @enterprise_set.save
flash[:success] = I18n.t(:enterprise_bulk_update_success_notice)
@@ -129,7 +131,7 @@ module Admin
private
def load_enterprise_set
@enterprise_set = EnterpriseSet.new(collection) if spree_current_user.admin?
@enterprise_set = Sets::EnterpriseSet.new(collection) if spree_current_user.admin?
end
def load_countries
@@ -235,7 +237,7 @@ module Admin
def check_can_change_bulk_sells
unless spree_current_user.admin?
params[:enterprise_set][:collection_attributes].each do |_i, enterprise_params|
params[:sets_enterprise_set][:collection_attributes].each do |_i, enterprise_params|
unless spree_current_user == Enterprise.find_by(id: enterprise_params[:id]).owner
enterprise_params.delete :sells
end
@@ -245,31 +247,31 @@ module Admin
def check_can_change_sells
unless spree_current_user.admin? || spree_current_user == @enterprise.owner
params[:enterprise].delete :sells
enterprise_params.delete :sells
end
end
def override_owner
params[:enterprise][:owner_id] = spree_current_user.id unless spree_current_user.admin?
enterprise_params[:owner_id] = spree_current_user.id unless spree_current_user.admin?
end
def override_sells
unless spree_current_user.admin?
has_hub = spree_current_user.owned_enterprises.is_hub.any?
new_enterprise_is_producer = Enterprise.new(enterprise_params).is_primary_producer
params[:enterprise][:sells] = has_hub && !new_enterprise_is_producer ? 'any' : 'none'
enterprise_params[:sells] = has_hub && !new_enterprise_is_producer ? 'any' : 'none'
end
end
def check_can_change_owner
unless ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?
params[:enterprise].delete :owner_id
enterprise_params.delete :owner_id
end
end
def check_can_change_bulk_owner
unless spree_current_user.admin?
params[:enterprise_set][:collection_attributes].each do |_i, enterprise_params|
bulk_params[:collection_attributes].each do |_i, enterprise_params|
enterprise_params.delete :owner_id
end
end
@@ -277,15 +279,15 @@ module Admin
def check_can_change_managers
unless ( spree_current_user == @enterprise.owner ) || spree_current_user.admin?
params[:enterprise].delete :user_ids
enterprise_params.delete :user_ids
end
end
def strip_new_properties
unless spree_current_user.admin? || params[:enterprise][:producer_properties_attributes].nil?
unless spree_current_user.admin? || params.dig(:enterprise, :producer_properties_attributes).nil?
names = Spree::Property.pluck(:name)
params[:enterprise][:producer_properties_attributes].each do |key, property|
params[:enterprise][:producer_properties_attributes].delete key unless names.include? property[:property_name]
enterprise_params[:producer_properties_attributes].each do |key, property|
enterprise_params[:producer_properties_attributes].delete key unless names.include? property[:property_name]
end
end
end
@@ -317,13 +319,14 @@ module Admin
end
def enterprise_params
PermittedAttributes::Enterprise.new(params).call
@enterprise_params ||= PermittedAttributes::Enterprise.new(params).call.
to_h.with_indifferent_access
end
def bulk_params
params.require(:enterprise_set).permit(
@bulk_params ||= params.require(:sets_enterprise_set).permit(
collection_attributes: PermittedAttributes::Enterprise.attributes
)
).to_h.with_indifferent_access
end
# Used in Admin::ResourceController#create

View File

@@ -1,7 +1,7 @@
module Admin
class InvoiceSettingsController < Spree::Admin::BaseController
def update
Spree::Config.set(params[:preferences])
Spree::Config.set(preferences_params.to_h)
respond_to do |format|
format.html {
@@ -9,5 +9,15 @@ module Admin
}
end
end
private
def preferences_params
params.require(:preferences).permit(
:enable_invoices?,
:invoice_style2?,
:enable_receipt_printing?,
)
end
end
end

View File

@@ -1,7 +1,7 @@
module Admin
class MatomoSettingsController < Spree::Admin::BaseController
def update
Spree::Config.set(params[:preferences])
Spree::Config.set(preferences_params.to_h)
respond_to do |format|
format.html {
@@ -9,5 +9,15 @@ module Admin
}
end
end
private
def preferences_params
params.require(:preferences).permit(
:matomo_url,
:matomo_site_id,
:matomo_tag_manager_url,
)
end
end
end

View File

@@ -101,7 +101,7 @@ module Admin
def collection
return Enterprise.where("1=0") unless json_request?
return order_cycles_from_set if params[:order_cycle_set]
return order_cycles_from_set if params[:order_cycle_set].present?
ocs = order_cycles
ocs.undated | ocs.soonest_closing | ocs.soonest_opening | ocs.closed
@@ -126,7 +126,7 @@ module Admin
def order_cycles_as_distributor
OrderCycle.
preload(:schedules).
ransack(params[:q]).
ransack(raw_params[:q]).
result.
involving_managed_distributors_of(spree_current_user).
order('updated_at DESC')
@@ -135,7 +135,7 @@ module Admin
def order_cycles_as_producer
OrderCycle.
preload(:schedules).
ransack(params[:q]).
ransack(raw_params[:q]).
result.
involving_managed_producers_of(spree_current_user).
order('updated_at DESC')
@@ -144,7 +144,7 @@ module Admin
def order_cycles_as_both
OrderCycle.
preload(:schedules).
ransack(params[:q]).
ransack(raw_params[:q]).
result.
visible_by(spree_current_user)
end
@@ -153,9 +153,9 @@ module Admin
if json_request?
# Split ransack params into all those that currently exist and new ones
# to limit returned ocs to recent or undated
orders_close_at_gt = params[:q].andand.delete(:orders_close_at_gt) || 31.days.ago
params[:q] = {
g: [params.delete(:q) || {}, { m: 'or',
orders_close_at_gt = raw_params[:q].andand.delete(:orders_close_at_gt) || 31.days.ago
raw_params[:q] = {
g: [raw_params.delete(:q) || {}, { m: 'or',
orders_close_at_gt: orders_close_at_gt,
orders_close_at_null: true }]
}
@@ -199,35 +199,38 @@ module Admin
end
def remove_protected_attrs
params[:order_cycle].delete :coordinator_id
return if order_cycle_params.blank?
order_cycle_params.delete :coordinator_id
unless Enterprise.managed_by(spree_current_user).include?(@order_cycle.coordinator)
params[:order_cycle].delete_if do |k, _v|
order_cycle_params.delete_if do |k, _v|
[:name, :orders_open_at, :orders_close_at].include? k.to_sym
end
end
end
def remove_unauthorized_bulk_attrs
params[:order_cycle_set][:collection_attributes].each do |i, hash|
def authorized_order_cycles
managed_ids = managed_enterprises.map(&:id)
(order_cycle_bulk_params[:collection_attributes] || []).keep_if do |_index, hash|
order_cycle = OrderCycle.find(hash[:id])
unless Enterprise.managed_by(spree_current_user).include?(order_cycle.andand.coordinator)
params[:order_cycle_set][:collection_attributes].delete i
end
managed_ids.include?(order_cycle.andand.coordinator_id)
end
end
def order_cycles_from_set
remove_unauthorized_bulk_attrs
OrderCycle.where(id: params[:order_cycle_set][:collection_attributes].map{ |_k, v| v[:id] })
return if authorized_order_cycles.blank?
OrderCycle.where(id: authorized_order_cycles.map{ |_k, v| v[:id] })
end
def order_cycle_set
@order_cycle_set ||= OrderCycleSet.new(@order_cycles, order_cycle_bulk_params)
@order_cycle_set ||= Sets::OrderCycleSet.new(@order_cycles, order_cycle_bulk_params)
end
def require_order_cycle_set_params
return if params[:order_cycle_set]
return if params[:order_cycle_set].present?
render json: { errors: t('admin.order_cycles.bulk_update.no_data') },
status: :unprocessable_entity
@@ -238,13 +241,14 @@ module Admin
end
def order_cycle_params
PermittedAttributes::OrderCycle.new(params).call
@order_cycle_params ||= PermittedAttributes::OrderCycle.new(params).call.
to_h.with_indifferent_access
end
def order_cycle_bulk_params
params.require(:order_cycle_set).permit(
collection_attributes: [:id] + PermittedAttributes::OrderCycle.basic_attributes
)
).to_h.with_indifferent_access
end
end
end

View File

@@ -3,7 +3,7 @@ require 'stripe/account_connector'
module Admin
class StripeAccountsController < Spree::Admin::BaseController
def connect
payload = params.slice(:enterprise_id)
payload = params.permit(:enterprise_id).to_h
key = Openfoodnetwork::Application.config.secret_token
url_params = { state: JWT.encode(payload, key, 'HS256'), scope: "read_write" }
redirect_to Stripe::OAuth.authorize_url(url_params)

View File

@@ -17,7 +17,7 @@ module Admin
end
def update
Spree::Config.set(params[:settings])
Spree::Config.set(settings_params.to_h)
resource = t('admin.controllers.stripe_connect_settings.resource')
flash[:success] = t(:successfully_updated, resource: resource)
redirect_to_edit
@@ -37,5 +37,11 @@ module Admin
key = Stripe.api_key
key.first(8) + "****" + key.last(4)
end
def settings_params
params.require(:settings).permit(
:stripe_connect_enabled,
)
end
end
end

View File

@@ -57,14 +57,13 @@ module Admin
end
def unpause
params[:subscription][:paused_at] = nil
save_form_and_render
save_form_and_render(true, unpause: true)
end
private
def save_form_and_render(render_issues = true)
form = OrderManagement::Subscriptions::Form.new(@subscription, subscription_params)
def save_form_and_render(render_issues = true, options = {})
form = OrderManagement::Subscriptions::Form.new(@subscription, subscription_params, options)
unless form.save
render json: { errors: form.json_errors }, status: :unprocessable_entity
return
@@ -106,22 +105,22 @@ module Admin
# Wrap :subscription_line_items_attributes in :subscription root
def wrap_nested_attrs
if params[:subscription_line_items].is_a? Array
attributes = params[:subscription_line_items].map do |sli|
if raw_params[:subscription_line_items].is_a? Array
attributes = raw_params[:subscription_line_items].map do |sli|
sli.slice(*SubscriptionLineItem.attribute_names + ["_destroy"])
end
params[:subscription][:subscription_line_items_attributes] = attributes
subscription_params[:subscription_line_items_attributes] = attributes
end
wrap_bill_address_attrs if params[:bill_address]
wrap_ship_address_attrs if params[:ship_address]
end
def wrap_bill_address_attrs
params[:subscription][:bill_address_attributes] = params[:bill_address].slice(*Spree::Address.attribute_names)
subscription_params[:bill_address_attributes] = raw_params[:bill_address].slice(*Spree::Address.attribute_names)
end
def wrap_ship_address_attrs
params[:subscription][:ship_address_attributes] = params[:ship_address].slice(*Spree::Address.attribute_names)
subscription_params[:ship_address_attributes] = raw_params[:ship_address].slice(*Spree::Address.attribute_names)
end
def check_for_open_orders
@@ -141,8 +140,8 @@ module Admin
end
def strip_banned_attrs
params[:subscription].delete :schedule_id
params[:subscription].delete :customer_id
subscription_params.delete :schedule_id
subscription_params.delete :customer_id
end
# Overriding Spree method to load data from params here so that
@@ -156,7 +155,8 @@ module Admin
end
def subscription_params
PermittedAttributes::Subscription.new(params).call
@subscription_params ||= PermittedAttributes::Subscription.new(params).call.
to_h.with_indifferent_access
end
end
end

View File

@@ -60,30 +60,41 @@ module Admin
for_hubs(editable_enterprises.collect(&:id))
options = [{ id: '0', name: 'All' }]
import_dates.collect(&:import_date).map { |i| options.push(id: i.to_date, name: i.to_date.to_formatted_s(:long)) }
import_dates.collect(&:import_date).map { |i|
options.push(id: i.to_date, name: i.to_date.to_formatted_s(:long))
}
options
end
def load_collection
collection_hash = Hash[variant_overrides_params.each_with_index.map { |vo, i| [i, vo] }]
@vo_set = VariantOverrideSet.new @variant_overrides, collection_attributes: collection_hash
@vo_set = Sets::VariantOverrideSet.new(@variant_overrides,
collection_attributes: collection_hash)
end
def collection
@variant_overrides = VariantOverride.
includes(variant: :product).
for_hubs(params[:hub_id] || @hubs).
references(:variant).
select { |vo| vo.variant.present? }
includes(:taggings).
joins(variant: :product).
preload(variant: :product).
for_hubs(params[:hub_id] || @hubs)
return @variant_overrides unless params.key?(:variant_overrides)
@variant_overrides.where(id: modified_variant_overrides_ids)
end
def modified_variant_overrides_ids
variant_overrides_params.map { |vo| vo[:id] }
end
def collection_actions
[:index, :bulk_update, :bulk_reset]
end
# This has been pulled from ModelSet as it is useful for compiling a list of errors on any generic collection (not necessarily a ModelSet)
# Could be pulled down into a lower level controller if it is useful in other high level controllers
# This method is also present in ModelSet
# This is useful for compiling a list of errors on any generic collection
def collection_errors
errors = ActiveModel::Errors.new self
full_messages = @collection.map { |element| element.errors.full_messages }.flatten
@@ -92,13 +103,13 @@ module Admin
end
def variant_overrides_params
params.require(:variant_overrides).map do |variant_override|
variant_override.permit(
params.permit(
variant_overrides: [
:id, :variant_id, :hub_id,
:price, :count_on_hand, :sku, :on_demand,
:default_stock, :resettable, :tag_list
)
end
]
).to_h[:variant_overrides]
end
end
end

View File

@@ -4,6 +4,7 @@ require "spree/core/controller_helpers/ssl"
module Api
class BaseController < ActionController::Metal
include RawParams
include ActionController::StrongParameters
include ActionController::RespondWith
include Spree::Api::ControllerSetup

View File

@@ -11,7 +11,7 @@ module Api
# params[:user_ids] breaks the enterprise creation
# We remove them from params and save them after creating the enterprise
user_ids = params[:enterprise].delete(:user_ids)
user_ids = enterprise_params.delete(:user_ids)
@enterprise = Enterprise.new(enterprise_params)
if @enterprise.save
@enterprise.user_ids = user_ids
@@ -48,30 +48,31 @@ module Api
private
def override_owner
params[:enterprise][:owner_id] = current_api_user.id
enterprise_params[:owner_id] = current_api_user.id
end
def check_type
params[:enterprise].delete :type unless current_api_user.admin?
enterprise_params.delete :type unless current_api_user.admin?
end
def override_sells
has_hub = current_api_user.owned_enterprises.is_hub.any?
new_enterprise_is_producer = !!params[:enterprise][:is_primary_producer]
new_enterprise_is_producer = !!enterprise_params[:is_primary_producer]
params[:enterprise][:sells] = if has_hub && !new_enterprise_is_producer
'any'
else
'unspecified'
end
enterprise_params[:sells] = if has_hub && !new_enterprise_is_producer
'any'
else
'unspecified'
end
end
def override_visible
params[:enterprise][:visible] = false
enterprise_params[:visible] = false
end
def enterprise_params
PermittedAttributes::Enterprise.new(params).call
@enterprise_params ||= PermittedAttributes::Enterprise.new(params).call.
to_h.with_indifferent_access
end
end
end

View File

@@ -18,7 +18,7 @@ module Api
# In this case parameters are: enterprise_id, order_cycle_id and incoming
# (order_cycle_id is not necessary for incoming exchanges)
def index
if params[:exchange_id].present?
if exchange_params[:exchange_id].present?
load_data_from_exchange
else
load_data_from_other_params
@@ -59,7 +59,7 @@ module Api
end
def load_data_from_exchange
exchange = Exchange.find_by(id: params[:exchange_id])
exchange = Exchange.find_by(id: exchange_params[:exchange_id])
@order_cycle = exchange.order_cycle
@incoming = exchange.incoming
@@ -67,14 +67,16 @@ module Api
end
def load_data_from_other_params
@enterprise = Enterprise.find_by(id: params[:enterprise_id])
@enterprise = Enterprise.find_by(id: exchange_params[:enterprise_id])
if params[:order_cycle_id]
@order_cycle = OrderCycle.find_by(id: params[:order_cycle_id])
elsif !params[:incoming]
# This will be a string (eg "true") when it arrives via params, but we want a boolean
@incoming = ActiveModel::Type::Boolean.new.cast exchange_params[:incoming]
if exchange_params[:order_cycle_id]
@order_cycle = OrderCycle.find_by(id: exchange_params[:order_cycle_id])
elsif !@incoming
raise "order_cycle_id is required to list products for new outgoing exchange"
end
@incoming = params[:incoming]
end
def render_paginated_products(paginated_products)
@@ -89,5 +91,10 @@ module Api
pagination: pagination_data(paginated_products)
}
end
def exchange_params
params.permit(:enterprise_id, :exchange_id, :order_cycle_id, :incoming).
to_h.with_indifferent_access
end
end
end

View File

@@ -7,6 +7,8 @@ module Api
respond_to :json
DEFAULT_PER_PAGE = 15
before_action :set_default_available_on, only: :create
skip_authorization_check only: [:show, :bulk_products, :overridable]
def show
@@ -16,8 +18,8 @@ module Api
def create
authorize! :create, Spree::Product
params[:product][:available_on] ||= Time.zone.now
@product = Spree::Product.new(product_params)
begin
if @product.save
render json: @product, serializer: Api::Admin::ProductSerializer, status: :created
@@ -146,7 +148,12 @@ module Api
end
def product_params
params.require(:product).permit PermittedAttributes::Product.attributes
@product_params ||=
params.permit(product: PermittedAttributes::Product.attributes)[:product].to_h
end
def set_default_available_on
product_params[:available_on] ||= Time.zone.now
end
end
end

View File

@@ -27,13 +27,13 @@ module Api
unlock = params[:shipment].delete(:unlock)
if unlock == 'yes'
@shipment.adjustment.open
@shipment.fee_adjustment.open
end
@shipment.update(shipment_params[:shipment])
if unlock == 'yes'
@shipment.adjustment.close
@shipment.fee_adjustment.close
end
render json: @shipment.reload, serializer: Api::ShipmentSerializer, status: :ok

View File

@@ -8,9 +8,9 @@ module Api
@taxons = if taxonomy
taxonomy.root.children
elsif params[:ids]
Spree::Taxon.where(id: params[:ids].split(","))
Spree::Taxon.where(id: raw_params[:ids].split(","))
else
Spree::Taxon.ransack(params[:q]).result
Spree::Taxon.ransack(raw_params[:q]).result
end
render json: @taxons, each_serializer: Api::TaxonSerializer
end
@@ -31,7 +31,7 @@ module Api
invalid_resource!(@taxon) && return
end
@taxon.parent_id = taxonomy.root.id unless params[:taxon][:parent_id]
@taxon.parent_id = taxonomy.root.id unless params.dig(:taxon, :parent_id)
if @taxon.save
render json: @taxon, serializer: Api::TaxonSerializer, status: :created

View File

@@ -1,8 +1,13 @@
# frozen_string_literal: true
require "application_responder"
require 'open_food_network/referer_parser'
require_dependency 'spree/authentication_helpers'
require "application_responder"
require 'cancan'
require 'spree/core/controller_helpers/auth'
require 'spree/core/controller_helpers/respond_with'
require 'spree/core/controller_helpers/ssl'
require 'spree/core/controller_helpers/common'
require 'open_food_network/referer_parser'
class ApplicationController < ActionController::Base
self.responder = ApplicationResponder
@@ -10,9 +15,15 @@ class ApplicationController < ActionController::Base
protect_from_forgery
include Spree::Core::ControllerHelpers::Auth
include Spree::Core::ControllerHelpers::RespondWith
include Spree::Core::ControllerHelpers::SSL
include Spree::Core::ControllerHelpers::Common
prepend_before_action :restrict_iframes
before_action :set_cache_headers # prevent cart emptying via cache when using back button #1213
include RawParams
include EnterprisesHelper
include Spree::AuthenticationHelpers
@@ -22,6 +33,8 @@ class ApplicationController < ActionController::Base
raise ActiveModel::ForbiddenAttributesError, params.to_s
end
respond_to :html
def redirect_to(options = {}, response_status = {})
::Rails.logger.error("Redirected by #{begin
caller(1).first
@@ -123,7 +136,6 @@ class ApplicationController < ActionController::Base
def check_order_cycle_expiry
if current_order_cycle.andand.closed?
session[:expired_order_cycle_id] = current_order_cycle.id
current_order.empty!
current_order.set_order_cycle! nil
flash[:info] = I18n.t('order_cycle_closed')
@@ -150,3 +162,5 @@ class ApplicationController < ActionController::Base
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end
end
require 'spree/i18n/initializer'

View File

@@ -1,17 +1,16 @@
require 'spree/core/controller_helpers/auth'
require 'spree/core/controller_helpers/common'
# frozen_string_literal: true
require 'spree/core/controller_helpers/order'
require 'spree/core/controller_helpers/respond_with'
require 'spree/core/controller_helpers/ssl'
require 'open_food_network/tag_rule_applicator'
class BaseController < ApplicationController
include Spree::Core::ControllerHelpers::Auth
include Spree::Core::ControllerHelpers::Common
layout 'darkswarm'
include Spree::Core::ControllerHelpers::Order
include Spree::Core::ControllerHelpers::RespondWith
include Spree::Core::ControllerHelpers::SSL
include I18nHelper
include EnterprisesHelper
include OrderCyclesHelper
helper 'spree/base'

View File

@@ -4,29 +4,23 @@ class CartController < BaseController
def populate
order = current_order(true)
# Without intervention, the Spree::Adjustment#update_adjustable callback is called many times
# during cart population, for both taxation and enterprise fees. This operation triggers a
# costly Spree::Order#update!, which only needs to be run once. We avoid this by disabling
# callbacks on Spree::Adjustment and then manually invoke Spree::Order#update! on success.
Spree::Adjustment.without_callbacks do
cart_service = CartService.new(order)
cart_service = CartService.new(order)
cart_service.populate(params.slice(:products, :variants, :quantity), true)
if cart_service.valid?
order.update_distribution_charge!
order.cap_quantity_at_stock!
order.update!
cart_service.populate(params.slice(:variants, :quantity), true)
if cart_service.valid?
order.cap_quantity_at_stock!
order.recreate_all_fees!
variant_ids = variant_ids_in(cart_service.variants_h)
variant_ids = variant_ids_in(cart_service.variants_h)
render json: { error: false,
stock_levels: VariantsStockLevels.new.call(order, variant_ids) },
status: :ok
else
render json: { error: cart_service.errors.full_messages.join(",") },
status: :precondition_failed
end
render json: { error: false,
stock_levels: VariantsStockLevels.new.call(order, variant_ids) },
status: :ok
else
render json: { error: cart_service.errors.full_messages.join(",") },
status: :precondition_failed
end
populate_variant_attributes
end
@@ -56,7 +50,8 @@ class CartController < BaseController
def populate_variant_attributes_from_variant(order)
params[:variant_attributes].each do |variant_id, attributes|
order.set_variant_attributes(Spree::Variant.find(variant_id), attributes)
permitted = attributes.permit(:quantity, :max_quantity).to_h.with_indifferent_access
order.set_variant_attributes(Spree::Variant.find(variant_id), permitted)
end
end

View File

@@ -2,7 +2,7 @@
require 'open_food_network/address_finder'
class CheckoutController < Spree::StoreController
class CheckoutController < ::BaseController
layout 'darkswarm'
include OrderStockCheck
@@ -46,7 +46,7 @@ class CheckoutController < Spree::StoreController
def update
params_adapter = Checkout::FormDataAdapter.new(permitted_params, @order, spree_current_user)
return action_failed unless @order.update(params_adapter.params[:order])
return action_failed unless @order.update(params_adapter.params[:order] || {})
checkout_workflow(params_adapter.shipping_method_id)
rescue Spree::Core::GatewayError => e
@@ -54,6 +54,8 @@ class CheckoutController < Spree::StoreController
rescue StandardError => e
flash[:error] = I18n.t("checkout.failed")
action_failed(e)
ensure
@order.update!
end
# Clears the cached order. Required for #current_order to return a new order
@@ -142,7 +144,7 @@ class CheckoutController < Spree::StoreController
def handle_redirect_from_stripe
if OrderWorkflow.new(@order).next && order_complete?
checkout_succeeded
redirect_to(spree.order_path(@order)) && return
redirect_to(order_path(@order)) && return
else
checkout_failed
end
@@ -202,10 +204,10 @@ class CheckoutController < Spree::StoreController
def update_succeeded_response
respond_to do |format|
format.html do
respond_with(@order, location: spree.order_path(@order))
respond_with(@order, location: order_path(@order))
end
format.json do
render json: { path: spree.order_path(@order) }, status: :ok
render json: { path: order_path(@order) }, status: :ok
end
end
end

View File

@@ -0,0 +1,15 @@
# frozen_string_literal: true
# In Rails 5, the params object no longer responds in the same way. It is not a hash but an object,
# it does not have indifferent access, and non-permitted attributes are removed. In order to access
# the raw params directly, we need to call params.to_unsafe_h
module RawParams
extend ActiveSupport::Concern
private
def raw_params
@raw_params ||= params.to_unsafe_h
end
end

View File

@@ -42,7 +42,8 @@ class LineItemsController < BaseController
item.destroy
order.update_shipping_fees!
order.update_payment_fees!
order.update_distribution_charge!
order.update_order_fees!
order.update!
order.create_tax_charge!
end
end

View File

@@ -0,0 +1,29 @@
# frozen_string_literal: true
class PaymentsController < BaseController
ssl_required :redirect_to_authorize
respond_to :html
prepend_before_action :require_logged_in, only: :redirect_to_authorize
def redirect_to_authorize
@payment = Spree::Payment.find(params[:id])
authorize! :show, @payment.order
if url = @payment.cvv_response_message
redirect_to url
else
redirect_to order_url(@payment.order)
end
end
private
def require_logged_in
return if session[:access_token] || params[:token] || spree_current_user
flash[:error] = I18n.t("spree.orders.edit.login_to_view_order")
redirect_to main_app.root_path(anchor: "login?after_login=#{request.env['PATH_INFO']}")
end
end

View File

@@ -2,20 +2,30 @@ module Spree
module Admin
class AdjustmentsController < ::Admin::ResourceController
belongs_to 'spree/order', find_by: :number
destroy.after :reload_order
prepend_before_action :set_included_tax, only: [:create, :update]
before_action :set_order_id, only: [:create, :update]
after_action :update_order, only: [:create, :update, :destroy]
before_action :set_default_tax_rate, only: :edit
before_action :enable_updates, only: :update
private
def reload_order
def update_order
@order.reload
@order.update!
end
def collection
parent.adjustments.eligible
parent.adjustments.eligible | parent.shipment_adjustments.shipping
end
def find_resource
parent.all_adjustments.eligible.find(params[:id])
end
def set_order_id
@adjustment.order_id = parent.id
end
# Choose a default tax rate to show on the edit form. The adjustment stores its included

View File

@@ -1,6 +1,6 @@
module Spree
module Admin
class BaseController < Spree::BaseController
class BaseController < ApplicationController
ssl_required
helper 'spree/admin/navigation'

View File

@@ -19,7 +19,7 @@ module Spree
end
def create
@url_filters = ::ProductFilters.new.extract(params)
@url_filters = ::ProductFilters.new.extract(request.query_parameters)
set_viewable
@object.attributes = permitted_resource_params
@@ -36,7 +36,7 @@ module Spree
end
def update
@url_filters = ::ProductFilters.new.extract(params)
@url_filters = ::ProductFilters.new.extract(request.query_parameters)
set_viewable
if @object.update(permitted_resource_params)

View File

@@ -10,7 +10,7 @@ module Spree
Spree::Config[name] = value
end
flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:mail_methods))
flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:mail_method_settings))
render :edit
end

View File

@@ -12,14 +12,6 @@ module Spree
# Ensure that the distributor is set for an order when
before_action :ensure_distribution, only: :new
# After updating an order, the fees should be updated as well
# Currently, adding or deleting line items does not trigger updating the
# fees! This is a quick fix for that.
# TODO: update fees when adding/removing line items
# instead of the update_distribution_charge method.
after_action :update_distribution_charge, only: :update
before_action :require_distributor_abn, only: :invoice
respond_to :html, :json
@@ -43,6 +35,8 @@ module Spree
end
def update
@order.recreate_all_fees!
unless order_params.present? && @order.update(order_params) && @order.line_items.present?
if @order.line_items.empty?
@order.errors.add(:line_items, Spree.t('errors.messages.blank'))
@@ -51,7 +45,6 @@ module Spree
flash: { error: @order.errors.full_messages.join(', ') })
end
@order.update!
if @order.complete?
redirect_to spree.edit_admin_order_path(@order)
else
@@ -103,10 +96,6 @@ module Spree
render template: "spree/admin/orders/ticket", layout: false
end
def update_distribution_charge
@order.update_distribution_charge!
end
private
def order_params

Some files were not shown because too many files have changed in this diff Show More