ob-dj-store 0.0.21.1__tar.gz → 0.0.21.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/PKG-INFO +1 -1
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/apis/stores/filters.py +12 -4
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/apis/stores/rest/serializers/serializers.py +38 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/apis/stores/urls.py +2 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/apis/stores/views.py +47 -6
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_product.py +13 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store.egg-info/PKG-INFO +1 -1
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/.github/dependabot.yml +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/.github/workflows/docs.yml +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/.github/workflows/pre-release.yml +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/.github/workflows/release.yml +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/.github/workflows/test-build.yml +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/.gitignore +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/.isort.cfg +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/.pre-commit-config.yaml +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/Dockerfile +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/MANIFEST.in +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/Makefile +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/Pipfile +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/Pipfile.lock +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/README.md +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/config/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/config/settings.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/config/urls.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/config/wsgi.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/docker-compose.env +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/docker-compose.yml +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/docs/Makefile +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/docs/make.bat +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/docs/source/admin.rst +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/docs/source/conf.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/docs/source/index.rst +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/docs/source/installation.rst +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/docs/source/models.rst +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/docs/source/rest_endpoints.rst +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/fixtures/initial_users.yaml +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/fixtures/stores.yaml +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/manage.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/apis/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/apis/stores/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/apis/tap/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/apis/tap/serializers.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/apis/tap/urls.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/apis/tap/views.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/admin.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/admin_inlines.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/apps.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/admin.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/apps.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/managers.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/migrations/0001_initial.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/migrations/0002_auto_20220815_1610.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/migrations/0003_auto_20220818_1938.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/migrations/0004_tapcustomer.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/migrations/0005_alter_tappayment_payment_url.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/migrations/0006_alter_tappayment_source.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/migrations/0007_alter_tappayment_source.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/migrations/0008_alter_tappayment_user.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/migrations/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/models.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/utils.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/managers.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0001_initial.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0002_auto_20220422_0205.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0003_openinghours.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0004_auto_20220422_2326.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0005_auto_20220425_2119.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0005_auto_20220427_1729.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0006_auto_20220428_0100.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0007_cart_cartitem_order_orderitem.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0008_order_status.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0009_auto_20220508_2142.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0010_auto_20220509_1633.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0011_favorite.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0012_auto_20220514_0633.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0013_auto_20220518_1539.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0014_auto_20220519_0018.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0015_inventory_inventoryoperations.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0016_productvariant_preparation_time.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0017_auto_20220524_0912.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0018_auto_20220524_1613.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0019_product_is_featured.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0020_orderhistory.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0021_auto_20220531_1849.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0022_order_pickup_time.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0023_feedback_feedbackattribute_feedbackconfig.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0024_auto_20220609_1552.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0025_productvariant_is_primary.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0026_auto_20220630_1913.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0027_auto_20220713_1759.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0028_phonecontact.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0029_auto_20220726_1750.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0030_category_parent.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0031_auto_20220811_1733.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0032_auto_20220812_1951.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0033_auto_20220815_0133.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0034_auto_20220815_1528.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0035_auto_20220818_1938.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0036_productattribute_is_mandatory.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0037_auto_20220825_1736.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0038_cartitem_extra_infos.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0039_auto_20220831_1521.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0040_auto_20220902_1806.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0041_auto_20220912_1506.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0042_wallet_wallettransaction.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0043_auto_20220919_1854.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0044_remove_productvariant_has_inventory.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0045_shippingmethod_type.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0046_auto_20221014_1720.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0047_auto_20221018_1433.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0048_auto_20221026_1933.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0049_auto_20221029_1524.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0050_favoriteextra.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0051_order_car_id.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0052_auto_20221129_1732.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0053_inventory_plu.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0054_auto_20221230_1501.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0055_store_image.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0056_auto_20230213_2224.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0057_auto_20230214_1724.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0058_attributechoice_is_default.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0059_auto_20230217_2006.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0060_alter_orderitem_product_variant.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0061_auto_20230223_1435.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0062_auto_20230226_2005.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0063_alter_store_payment_methods.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0064_auto_20230228_1814.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0065_auto_20230228_1932.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0066_auto_20230304_1532.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0067_auto_20230309_2014.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0068_auto_20230309_2251.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0069_alter_cartitem_options.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0070_auto_20230323_1628.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0071_auto_20230328_1825.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0072_alter_order_extra_infos.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0073_wallettransaction_is_cashback.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0074_productvariant_label.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0075_auto_20230419_0259.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0076_auto_20230421_1343.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0077_auto_20230502_2005.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0078_auto_20230503_1259.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0079_auto_20230504_1919.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0080_productvariant_description.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0081_storeattributechoice.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0082_auto_20230613_1424.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0083_productvariant_is_special.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0084_payment_result.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0085_auto_20230726_1528.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0086_wallet_is_active.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0087_auto_20230828_2138.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0088_alter_paymentmethod_payment_provider.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0089_discount_partner_partnerauthinfo_partneremaildomain_partnerotpauth.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0090_auto_20231006_1356.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0091_auto_20231010_1740.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0092_auto_20231012_1339.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0093_auto_20231017_2033.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0094_countrypaymentmethod.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0095_auto_20231101_1531.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0096_discount_discount_pos_id.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0097_auto_20231108_1939.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0098_alter_discount_discount_rate.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0099_alter_product_name_arabic.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0100_remove_shippingmethod_type_arabic.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0101_store_is_digital.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0102_partner_name_arabic.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0103_alter_paymentmethod_payment_provider.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0104_wallettransaction_is_redeemed.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0105_store_is_open_after_midnight.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0106_alter_paymentmethod_payment_provider.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0107_auto_20250425_2059.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0108_alter_paymentmethod_payment_provider.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0109_wallettransaction_cashback_type.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_address.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_cart.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_favorite.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_feedback.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_inventory.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_order.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_partner.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_payment.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_store.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/models/_wallet.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/receivers.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/settings_validation.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/utils.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/utils/__init__.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/utils/helpers.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/utils/model.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/utils/utils.py +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store.egg-info/SOURCES.txt +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store.egg-info/dependency_links.txt +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store.egg-info/requires.txt +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store.egg-info/top_level.txt +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/pytest.ini +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/setup.cfg +0 -0
- {ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/setup.py +0 -0
@@ -1,3 +1,5 @@
|
|
1
|
+
from urllib.parse import unquote
|
2
|
+
|
1
3
|
from django.contrib.contenttypes.models import ContentType
|
2
4
|
from django.contrib.postgres.search import SearchVector
|
3
5
|
from django.db.models import Prefetch, Q
|
@@ -101,10 +103,16 @@ class ProductFilter(filters.FilterSet):
|
|
101
103
|
return queryset.filter(category__name__iexact=value)
|
102
104
|
|
103
105
|
def filter_search(self, queryset, name, value):
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
106
|
+
language = self.request.META.get("HTTP_LANGUAGE", "").strip().upper()
|
107
|
+
if language == "AR":
|
108
|
+
value_ar = unquote(value)
|
109
|
+
query = Q(name_arabic__icontains=value_ar) | Q(
|
110
|
+
description_arabic__icontains=value_ar
|
111
|
+
)
|
112
|
+
else:
|
113
|
+
query = Q(name__icontains=value) | Q(description__icontains=value)
|
114
|
+
qs = queryset.filter(query).distinct()[:5]
|
115
|
+
return qs
|
108
116
|
|
109
117
|
|
110
118
|
class VariantFilter(filters.FilterSet):
|
@@ -947,6 +947,44 @@ class ProductSerializer(ArabicFieldsMixin, FavoriteMixin, serializers.ModelSeria
|
|
947
947
|
return data
|
948
948
|
|
949
949
|
|
950
|
+
class ProductSearchSerializer(
|
951
|
+
ArabicFieldsMixin, FavoriteMixin, serializers.ModelSerializer
|
952
|
+
):
|
953
|
+
is_snoozed = serializers.SerializerMethodField()
|
954
|
+
is_available = serializers.SerializerMethodField()
|
955
|
+
|
956
|
+
class Meta:
|
957
|
+
model = Product
|
958
|
+
fields = (
|
959
|
+
"id",
|
960
|
+
"name",
|
961
|
+
"name_arabic",
|
962
|
+
"slug",
|
963
|
+
"description",
|
964
|
+
"description_arabic",
|
965
|
+
"is_snoozed",
|
966
|
+
"is_available",
|
967
|
+
)
|
968
|
+
|
969
|
+
def get_store_id(self):
|
970
|
+
return self.context["request"].query_params.get("store")
|
971
|
+
|
972
|
+
def get_inventory_for_store(self, store_id):
|
973
|
+
if hasattr(self, "get_inventory"):
|
974
|
+
return self.get_inventory(store_id)
|
975
|
+
return None
|
976
|
+
|
977
|
+
def get_is_snoozed(self, obj):
|
978
|
+
store_id = self.get_store_id()
|
979
|
+
inventory = self.get_inventory_for_store(store_id)
|
980
|
+
return obj.is_snoozed(store_id=store_id) if inventory else False
|
981
|
+
|
982
|
+
def get_is_available(self, obj):
|
983
|
+
store_id = self.get_store_id()
|
984
|
+
inventory = self.get_inventory_for_store(store_id)
|
985
|
+
return bool(inventory and inventory.quantity)
|
986
|
+
|
987
|
+
|
950
988
|
class ProductListSerializer(ArabicFieldsMixin, serializers.ModelSerializer):
|
951
989
|
product_images = ProductMediaSerializer(many=True, source="images")
|
952
990
|
|
@@ -20,6 +20,7 @@ from ob_dj_store.apis.stores.views import (
|
|
20
20
|
TaxViewSet,
|
21
21
|
TransactionsViewSet,
|
22
22
|
VariantView,
|
23
|
+
WalletV2ViewSet,
|
23
24
|
WalletViewSet,
|
24
25
|
)
|
25
26
|
|
@@ -43,6 +44,7 @@ router.register(r"cart", CartView, basename="cart")
|
|
43
44
|
router.register(r"cart-item", CartItemView, basename="cart-item")
|
44
45
|
router.register(r"favorite", FavoriteViewSet, basename="favorite")
|
45
46
|
router.register(r"wallet", WalletViewSet, basename="wallet")
|
47
|
+
router.register(r"wallet_v2", WalletV2ViewSet, basename="wallet_v2")
|
46
48
|
router.register(r"payment-method", PaymentMethodViewSet, basename="payment-method")
|
47
49
|
router.register(r"order", ReorderViewSet, basename="re-order")
|
48
50
|
router.register(r"partner/auth", PartnerAuthInfoViewSet, basename="auth")
|
@@ -51,6 +51,7 @@ from ob_dj_store.apis.stores.rest.serializers.serializers import (
|
|
51
51
|
PaymentMethodSerializer,
|
52
52
|
PaymentSerializer,
|
53
53
|
ProductListSerializer,
|
54
|
+
ProductSearchSerializer,
|
54
55
|
ProductSerializer,
|
55
56
|
ProductVariantSerializer,
|
56
57
|
ReorderSerializer,
|
@@ -61,6 +62,7 @@ from ob_dj_store.apis.stores.rest.serializers.serializers import (
|
|
61
62
|
WalletSerializer,
|
62
63
|
WalletTopUpSerializer,
|
63
64
|
WalletTransactionListSerializer,
|
65
|
+
WalletTransactionSerializer,
|
64
66
|
)
|
65
67
|
from ob_dj_store.core.stores.gateway.tap.utils import TapException
|
66
68
|
from ob_dj_store.core.stores.models import (
|
@@ -575,6 +577,11 @@ class ProductView(
|
|
575
577
|
filterset_class = ProductFilter
|
576
578
|
queryset = Product.objects.active()
|
577
579
|
|
580
|
+
def get_serializer_class(self):
|
581
|
+
if self.request.query_params.get("q"):
|
582
|
+
return ProductSearchSerializer
|
583
|
+
return ProductSerializer
|
584
|
+
|
578
585
|
def apply_prefetch(self, queryset):
|
579
586
|
|
580
587
|
qs = queryset.prefetch_related(
|
@@ -1103,13 +1110,19 @@ class WalletViewSet(
|
|
1103
1110
|
methods=["GET"],
|
1104
1111
|
detail=True,
|
1105
1112
|
url_path="transactions",
|
1106
|
-
serializer_class=
|
1113
|
+
serializer_class=WalletTransactionSerializer,
|
1107
1114
|
)
|
1108
|
-
def transactions(
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1115
|
+
def transactions(
|
1116
|
+
self, request: Request, *args: typing.Any, **kwargs: typing.Any
|
1117
|
+
) -> Response:
|
1118
|
+
queryset = self.get_object().transactions.all().order_by("-created_at")
|
1119
|
+
page = self.paginate_queryset(queryset)
|
1120
|
+
if page is not None:
|
1121
|
+
serializer = self.get_serializer(page, many=True)
|
1122
|
+
return self.get_paginated_response(serializer.data)
|
1123
|
+
|
1124
|
+
serializer = self.get_serializer(queryset, many=True)
|
1125
|
+
return Response(serializer.data)
|
1113
1126
|
|
1114
1127
|
@swagger_auto_schema(
|
1115
1128
|
operation_summary="List Wallet selection images",
|
@@ -1137,6 +1150,34 @@ class WalletViewSet(
|
|
1137
1150
|
return Response(serializer.data)
|
1138
1151
|
|
1139
1152
|
|
1153
|
+
class WalletV2ViewSet(
|
1154
|
+
mixins.ListModelMixin, viewsets.GenericViewSet,
|
1155
|
+
):
|
1156
|
+
def get_queryset(self):
|
1157
|
+
return Wallet.objects.filter(
|
1158
|
+
user=self.request.user, is_active=True
|
1159
|
+
).select_related("media_image")
|
1160
|
+
|
1161
|
+
@swagger_auto_schema(
|
1162
|
+
operation_summary="List Wallet's transactions",
|
1163
|
+
operation_description="""
|
1164
|
+
list user's wallet transactions(debit,credit)
|
1165
|
+
""",
|
1166
|
+
tags=["Wallet",],
|
1167
|
+
)
|
1168
|
+
@action(
|
1169
|
+
methods=["GET"],
|
1170
|
+
detail=True,
|
1171
|
+
url_path="transactions",
|
1172
|
+
serializer_class=WalletTransactionListSerializer,
|
1173
|
+
)
|
1174
|
+
def transactions(self, request, *args, **kwargs):
|
1175
|
+
wallet = self.get_object()
|
1176
|
+
queryset = wallet.transactions.all().order_by("-created_at")
|
1177
|
+
serializer = WalletTransactionListSerializer(queryset, many=True)
|
1178
|
+
return Response({"results": serializer.data})
|
1179
|
+
|
1180
|
+
|
1140
1181
|
class PartnerAuthInfoViewSet(
|
1141
1182
|
mixins.CreateModelMixin,
|
1142
1183
|
mixins.RetrieveModelMixin,
|
@@ -248,6 +248,19 @@ class Product(DjangoModelCleanMixin, models.Model):
|
|
248
248
|
def __str__(self):
|
249
249
|
return f"Product {self.name} (PK={self.pk})"
|
250
250
|
|
251
|
+
def get_inventory(self, store_id):
|
252
|
+
try:
|
253
|
+
inventory = self.product_variants.inventories.get(store=store_id)
|
254
|
+
except ObjectDoesNotExist:
|
255
|
+
return None
|
256
|
+
|
257
|
+
def is_snoozed(self, store_id):
|
258
|
+
try:
|
259
|
+
inventory = self.product_variants.inventories.get(store=store_id)
|
260
|
+
except ObjectDoesNotExist:
|
261
|
+
return False
|
262
|
+
return inventory.is_snoozed
|
263
|
+
|
251
264
|
|
252
265
|
# TODO: must remove, redundunt
|
253
266
|
class Attribute(DjangoModelCleanMixin, models.Model):
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/gateway/tap/managers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0001_initial.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0011_favorite.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/0055_store_image.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/migrations/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ob_dj_store-0.0.21.1 → ob_dj_store-0.0.21.3}/ob_dj_store/core/stores/settings_validation.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|