Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PopulateDB currency issue #3511

Closed
stephenmoloney opened this issue Dec 22, 2018 · 3 comments
Closed

PopulateDB currency issue #3511

stephenmoloney opened this issue Dec 22, 2018 · 3 comments

Comments

@stephenmoloney
Copy link
Contributor

What I'm trying to achieve

To run populatedb after running migrations.

Steps to reproduce the problem

  1. python manage.py migrate (WORKS - thanks to fix)
  2. python manage.py populatedb

Then an error is generated as follows:

Shipping Zone: Europe
Shipping Zone: Oceania
Shipping Zone: Asia
Shipping Zone: Americas
Shipping Zone: Africa
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 502, in update_or_create
    obj = self.select_for_update().get(**lookup)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 399, in get
    self.model._meta.object_name
saleor.product.models.DoesNotExist: Product matching query does not exist.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 316, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 353, in execute
    output = self.handle(*args, **options)
  File "/app/saleor/core/management/commands/populatedb.py", line 83, in handle
    create_products_by_schema(self.placeholders_dir, create_images)
  File "/app/saleor/core/utils/random_data.py", line 227, in create_products_by_schema
    placeholder_dir=placeholder_dir, create_images=create_images)
  File "/app/saleor/core/utils/random_data.py", line 187, in create_products
    product, _ = Product.objects.update_or_create(pk=pk, defaults=defaults)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 506, in update_or_create
    obj, created = self._create_object_from_params(lookup, params, lock=True)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 522, in _create_object_from_params
    obj = self.create(**params)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 413, in create
    obj.save(force_insert=True, using=self.db)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 718, in save
    force_update=force_update, update_fields=update_fields)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 748, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 831, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 869, in _do_insert
    using=using, raw=raw)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 1136, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1288, in execute_sql
    for sql, params in self.as_sql():
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1241, in as_sql
    for obj in self.query.objs
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1241, in <listcomp>
    for obj in self.query.objs
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1240, in <listcomp>
    [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1182, in prepare_value
    value = field.get_db_prep_save(value, connection=self.connection)
  File "/usr/local/lib/python3.6/site-packages/django_prices/models.py", line 42, in get_db_prep_save
    value = self.get_prep_value(value)
  File "/usr/local/lib/python3.6/site-packages/django_prices/models.py", line 36, in get_prep_value
    value = self.to_python(value)
  File "/usr/local/lib/python3.6/site-packages/django_prices/models.py", line 28, in to_python
    value.currency, self.currency))
ValueError: Invalid currency: 'USD' (expected 'EUR')

What I expected to happen

python manage.py populatedb to run to completion

Extra information:

Seems to happen when the currency is not USD in env.

@stephenmoloney
Copy link
Contributor Author

I think the issues may be that db.json has USD currency.

Perhaps modifying the currency field of of the json object to settings.DEFAULT_CURRENCY in this function would solve it:
https://github.com/mirumee/saleor/blob/11f30e13551069299a97e73b65f086a920cf63ec/saleor/core/utils/random_data.py#L209-L210

@maarcingebala
Copy link
Member

This should be fixed now.

@stephenmoloney
Copy link
Contributor Author

@maarcingebala yes, it's fixed. thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants