ob-dj-store 0.0.19.9__tar.gz → 0.0.20.1__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.
Files changed (198) hide show
  1. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/PKG-INFO +1 -1
  2. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/apis/stores/rest/serializers/serializers.py +32 -6
  3. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/admin.py +3 -0
  4. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/admin_inlines.py +1 -6
  5. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_cart.py +10 -3
  6. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store.egg-info/PKG-INFO +1 -1
  7. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/.github/dependabot.yml +0 -0
  8. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/.github/workflows/docs.yml +0 -0
  9. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/.github/workflows/pre-release.yml +0 -0
  10. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/.github/workflows/release.yml +0 -0
  11. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/.github/workflows/test-build.yml +0 -0
  12. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/.gitignore +0 -0
  13. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/.isort.cfg +0 -0
  14. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/.pre-commit-config.yaml +0 -0
  15. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/Dockerfile +0 -0
  16. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/MANIFEST.in +0 -0
  17. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/Makefile +0 -0
  18. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/Pipfile +0 -0
  19. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/Pipfile.lock +0 -0
  20. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/README.md +0 -0
  21. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/config/__init__.py +0 -0
  22. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/config/settings.py +0 -0
  23. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/config/urls.py +0 -0
  24. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/config/wsgi.py +0 -0
  25. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/docker-compose.env +0 -0
  26. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/docker-compose.yml +0 -0
  27. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/docs/Makefile +0 -0
  28. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/docs/make.bat +0 -0
  29. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/docs/source/admin.rst +0 -0
  30. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/docs/source/conf.py +0 -0
  31. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/docs/source/index.rst +0 -0
  32. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/docs/source/installation.rst +0 -0
  33. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/docs/source/models.rst +0 -0
  34. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/docs/source/rest_endpoints.rst +0 -0
  35. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/fixtures/initial_users.yaml +0 -0
  36. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/fixtures/stores.yaml +0 -0
  37. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/manage.py +0 -0
  38. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/__init__.py +0 -0
  39. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/apis/__init__.py +0 -0
  40. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/apis/stores/__init__.py +0 -0
  41. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/apis/stores/filters.py +0 -0
  42. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/apis/stores/urls.py +0 -0
  43. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/apis/stores/views.py +0 -0
  44. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/apis/tap/__init__.py +0 -0
  45. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/apis/tap/serializers.py +0 -0
  46. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/apis/tap/urls.py +0 -0
  47. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/apis/tap/views.py +0 -0
  48. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/__init__.py +0 -0
  49. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/__init__.py +0 -0
  50. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/apps.py +0 -0
  51. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/__init__.py +0 -0
  52. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/__init__.py +0 -0
  53. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/admin.py +0 -0
  54. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/apps.py +0 -0
  55. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/managers.py +0 -0
  56. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/migrations/0001_initial.py +0 -0
  57. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/migrations/0002_auto_20220815_1610.py +0 -0
  58. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/migrations/0003_auto_20220818_1938.py +0 -0
  59. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/migrations/0004_tapcustomer.py +0 -0
  60. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/migrations/0005_alter_tappayment_payment_url.py +0 -0
  61. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/migrations/0006_alter_tappayment_source.py +0 -0
  62. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/migrations/0007_alter_tappayment_source.py +0 -0
  63. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/migrations/__init__.py +0 -0
  64. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/models.py +0 -0
  65. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/gateway/tap/utils.py +0 -0
  66. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/managers.py +0 -0
  67. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0001_initial.py +0 -0
  68. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0002_auto_20220422_0205.py +0 -0
  69. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0003_openinghours.py +0 -0
  70. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0004_auto_20220422_2326.py +0 -0
  71. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0005_auto_20220425_2119.py +0 -0
  72. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0005_auto_20220427_1729.py +0 -0
  73. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0006_auto_20220428_0100.py +0 -0
  74. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0007_cart_cartitem_order_orderitem.py +0 -0
  75. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0008_order_status.py +0 -0
  76. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0009_auto_20220508_2142.py +0 -0
  77. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0010_auto_20220509_1633.py +0 -0
  78. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0011_favorite.py +0 -0
  79. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0012_auto_20220514_0633.py +0 -0
  80. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0013_auto_20220518_1539.py +0 -0
  81. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0014_auto_20220519_0018.py +0 -0
  82. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0015_inventory_inventoryoperations.py +0 -0
  83. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0016_productvariant_preparation_time.py +0 -0
  84. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0017_auto_20220524_0912.py +0 -0
  85. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0018_auto_20220524_1613.py +0 -0
  86. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0019_product_is_featured.py +0 -0
  87. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0020_orderhistory.py +0 -0
  88. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0021_auto_20220531_1849.py +0 -0
  89. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0022_order_pickup_time.py +0 -0
  90. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0023_feedback_feedbackattribute_feedbackconfig.py +0 -0
  91. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0024_auto_20220609_1552.py +0 -0
  92. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0025_productvariant_is_primary.py +0 -0
  93. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0026_auto_20220630_1913.py +0 -0
  94. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0027_auto_20220713_1759.py +0 -0
  95. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0028_phonecontact.py +0 -0
  96. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0029_auto_20220726_1750.py +0 -0
  97. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0030_category_parent.py +0 -0
  98. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0031_auto_20220811_1733.py +0 -0
  99. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0032_auto_20220812_1951.py +0 -0
  100. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0033_auto_20220815_0133.py +0 -0
  101. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0034_auto_20220815_1528.py +0 -0
  102. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0035_auto_20220818_1938.py +0 -0
  103. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0036_productattribute_is_mandatory.py +0 -0
  104. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0037_auto_20220825_1736.py +0 -0
  105. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0038_cartitem_extra_infos.py +0 -0
  106. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0039_auto_20220831_1521.py +0 -0
  107. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0040_auto_20220902_1806.py +0 -0
  108. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0041_auto_20220912_1506.py +0 -0
  109. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0042_wallet_wallettransaction.py +0 -0
  110. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0043_auto_20220919_1854.py +0 -0
  111. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0044_remove_productvariant_has_inventory.py +0 -0
  112. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0045_shippingmethod_type.py +0 -0
  113. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0046_auto_20221014_1720.py +0 -0
  114. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0047_auto_20221018_1433.py +0 -0
  115. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0048_auto_20221026_1933.py +0 -0
  116. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0049_auto_20221029_1524.py +0 -0
  117. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0050_favoriteextra.py +0 -0
  118. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0051_order_car_id.py +0 -0
  119. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0052_auto_20221129_1732.py +0 -0
  120. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0053_inventory_plu.py +0 -0
  121. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0054_auto_20221230_1501.py +0 -0
  122. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0055_store_image.py +0 -0
  123. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0056_auto_20230213_2224.py +0 -0
  124. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0057_auto_20230214_1724.py +0 -0
  125. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0058_attributechoice_is_default.py +0 -0
  126. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0059_auto_20230217_2006.py +0 -0
  127. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0060_alter_orderitem_product_variant.py +0 -0
  128. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0061_auto_20230223_1435.py +0 -0
  129. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0062_auto_20230226_2005.py +0 -0
  130. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0063_alter_store_payment_methods.py +0 -0
  131. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0064_auto_20230228_1814.py +0 -0
  132. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0065_auto_20230228_1932.py +0 -0
  133. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0066_auto_20230304_1532.py +0 -0
  134. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0067_auto_20230309_2014.py +0 -0
  135. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0068_auto_20230309_2251.py +0 -0
  136. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0069_alter_cartitem_options.py +0 -0
  137. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0070_auto_20230323_1628.py +0 -0
  138. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0071_auto_20230328_1825.py +0 -0
  139. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0072_alter_order_extra_infos.py +0 -0
  140. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0073_wallettransaction_is_cashback.py +0 -0
  141. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0074_productvariant_label.py +0 -0
  142. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0075_auto_20230419_0259.py +0 -0
  143. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0076_auto_20230421_1343.py +0 -0
  144. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0077_auto_20230502_2005.py +0 -0
  145. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0078_auto_20230503_1259.py +0 -0
  146. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0079_auto_20230504_1919.py +0 -0
  147. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0080_productvariant_description.py +0 -0
  148. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0081_storeattributechoice.py +0 -0
  149. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0082_auto_20230613_1424.py +0 -0
  150. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0083_productvariant_is_special.py +0 -0
  151. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0084_payment_result.py +0 -0
  152. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0085_auto_20230726_1528.py +0 -0
  153. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0086_wallet_is_active.py +0 -0
  154. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0087_auto_20230828_2138.py +0 -0
  155. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0088_alter_paymentmethod_payment_provider.py +0 -0
  156. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0089_discount_partner_partnerauthinfo_partneremaildomain_partnerotpauth.py +0 -0
  157. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0090_auto_20231006_1356.py +0 -0
  158. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0091_auto_20231010_1740.py +0 -0
  159. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0092_auto_20231012_1339.py +0 -0
  160. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0093_auto_20231017_2033.py +0 -0
  161. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0094_countrypaymentmethod.py +0 -0
  162. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0095_auto_20231101_1531.py +0 -0
  163. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0096_discount_discount_pos_id.py +0 -0
  164. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0097_auto_20231108_1939.py +0 -0
  165. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0098_alter_discount_discount_rate.py +0 -0
  166. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0099_alter_product_name_arabic.py +0 -0
  167. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0100_remove_shippingmethod_type_arabic.py +0 -0
  168. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0101_store_is_digital.py +0 -0
  169. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0102_partner_name_arabic.py +0 -0
  170. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0103_alter_paymentmethod_payment_provider.py +0 -0
  171. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0104_wallettransaction_is_redeemed.py +0 -0
  172. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/0105_store_is_open_after_midnight.py +0 -0
  173. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/migrations/__init__.py +0 -0
  174. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/__init__.py +0 -0
  175. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_address.py +0 -0
  176. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_favorite.py +0 -0
  177. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_feedback.py +0 -0
  178. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_inventory.py +0 -0
  179. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_order.py +0 -0
  180. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_partner.py +0 -0
  181. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_payment.py +0 -0
  182. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_product.py +0 -0
  183. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_store.py +0 -0
  184. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/models/_wallet.py +0 -0
  185. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/receivers.py +0 -0
  186. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/settings_validation.py +0 -0
  187. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/core/stores/utils.py +0 -0
  188. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/utils/__init__.py +0 -0
  189. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/utils/helpers.py +0 -0
  190. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/utils/model.py +0 -0
  191. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store/utils/utils.py +0 -0
  192. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store.egg-info/SOURCES.txt +0 -0
  193. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store.egg-info/dependency_links.txt +0 -0
  194. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store.egg-info/requires.txt +0 -0
  195. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/ob_dj_store.egg-info/top_level.txt +0 -0
  196. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/pytest.ini +0 -0
  197. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/setup.cfg +0 -0
  198. {ob_dj_store-0.0.19.9 → ob_dj_store-0.0.20.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ob-dj-store
3
- Version: 0.0.19.9
3
+ Version: 0.0.20.1
4
4
  Summary: OBytes django application for managing ecommerce stores.
5
5
  Home-page: https://www.obytes.com/
6
6
  Author: OBytes
@@ -396,7 +396,7 @@ class OrderSerializer(serializers.ModelSerializer):
396
396
 
397
397
  def _validate_pickup_time(self, store, pickup_time):
398
398
  # validate that the pickup_time is always in the future
399
- print("pickup :", pickup_time)
399
+
400
400
  if pickup_time < localtime(now()):
401
401
  raise serializers.ValidationError(_("Pickup time must be in the future"))
402
402
  pickup_time_time = pickup_time.time()
@@ -440,6 +440,7 @@ class OrderSerializer(serializers.ModelSerializer):
440
440
  attrs["extra_infos"] = {}
441
441
  stores = Store.objects.filter(store_items__cart=user.cart).distinct()
442
442
  gift_details = attrs["extra_infos"].get("gift_details", None)
443
+ unavailable_items = []
443
444
  if gift_details:
444
445
  self._validate_digital_product(gift_details, attrs)
445
446
  currency = gift_details["currency"]
@@ -451,7 +452,17 @@ class OrderSerializer(serializers.ModelSerializer):
451
452
  if len(stores) > 1:
452
453
  raise ValidationError(_("You cannot order from different stores"))
453
454
  for item in user.cart.items.all():
454
- if not item.inventory:
455
+ if item.inventory:
456
+ if item.inventory.is_snoozed:
457
+ unavailable_items.append(item)
458
+ elif not item.inventory.is_uncountable:
459
+ if (
460
+ not item.inventory.quantity
461
+ or item.inventory.quantity == 0
462
+ ):
463
+ unavailable_items.append(item)
464
+
465
+ elif not item.inventory:
455
466
  if language and item.product_variant.product.name_arabic:
456
467
  product_name = item.product_variant.product.name_arabic
457
468
  else:
@@ -461,8 +472,14 @@ class OrderSerializer(serializers.ModelSerializer):
461
472
  message = (
462
473
  f"{product_name} {variant_name} doesn't exist on this store"
463
474
  )
475
+ unavailable_items.append(item)
464
476
  raise ValidationError(_(message))
465
-
477
+ if unavailable_items:
478
+ raise ValidationError(
479
+ _(
480
+ "The cart has items that are not available in the selected store"
481
+ )
482
+ )
466
483
  if "shipping_method" in attrs:
467
484
  if (
468
485
  attrs["shipping_method"].type
@@ -834,10 +851,19 @@ class CartSerializer(ArabicFieldsMixin, serializers.ModelSerializer):
834
851
  # update or create instance items
835
852
  for item in validated_data["items"]:
836
853
  attribute_choices = item.pop("attribute_choices", None)
837
- cart_item = CartItem.objects.create(
854
+ logger.info("cart item :", item)
855
+ cart_item, created = CartItem.objects.get_or_create(
838
856
  cart=instance,
839
- **item,
857
+ pk=item.pop("id", None),
858
+ defaults={
859
+ "cart": instance,
860
+ "product_variant": item.pop("product_variant", None),
861
+ "store": item.pop("store", None),
862
+ "notes": item.pop("notes", None),
863
+ "quantity": item.pop("quantity", None),
864
+ },
840
865
  )
866
+
841
867
  if attribute_choices:
842
868
  cart_item.attribute_choices.set(attribute_choices)
843
869
  cart_item.save()
@@ -1411,7 +1437,7 @@ class FavoriteSerializer(ArabicFieldsMixin, serializers.ModelSerializer):
1411
1437
  else:
1412
1438
  if inventory.is_uncountable:
1413
1439
  return True
1414
- return inventory.quantity > 0
1440
+ return False
1415
1441
  except ObjectDoesNotExist:
1416
1442
  return False
1417
1443
  return None
@@ -288,6 +288,7 @@ class CartAdmin(admin.ModelAdmin):
288
288
  search_fields = [
289
289
  "customer__email",
290
290
  ]
291
+ autocomplete_fields = ["customer"]
291
292
 
292
293
  def get_queryset(self, request):
293
294
  queryset = super().get_queryset(request)
@@ -380,6 +381,7 @@ class OrderAdmin(ImportExportModelAdmin, admin.ModelAdmin):
380
381
  "status",
381
382
  WeekNumberFilter, # Include the filter instance instead of the class name
382
383
  ]
384
+ autocomplete_fields = ["customer"]
383
385
 
384
386
  def get_queryset(self, request):
385
387
  queryset = (
@@ -419,6 +421,7 @@ class PaymentAdmin(ImportExportModelAdmin, admin.ModelAdmin):
419
421
  search_fields = ["orders__store__name", "user__email"]
420
422
  readonly_fields = ("orders",)
421
423
  date_hierarchy = "created_at"
424
+ autocomplete_fields = ["user"]
422
425
 
423
426
 
424
427
  class InventoryAdmin(admin.ModelAdmin):
@@ -107,12 +107,7 @@ class CartItemInlineAdmin(admin.TabularInline):
107
107
  class OrderItemInline(admin.TabularInline):
108
108
  model = models.OrderItem
109
109
  extra = 0
110
- fields = (
111
- "product_variant",
112
- "quantity",
113
- "unit_value",
114
- "total_amount",
115
- )
110
+ fields = ("product_variant", "quantity", "unit_value", "total_amount", "notes")
116
111
  readonly_fields = (
117
112
  "unit_value",
118
113
  "total_amount",
@@ -1,3 +1,4 @@
1
+ import logging
1
2
  from decimal import Decimal
2
3
 
3
4
  from django.contrib.auth import get_user_model
@@ -10,6 +11,8 @@ from ob_dj_store.core.stores.managers import CartItemManager, CartManager
10
11
  from ob_dj_store.core.stores.models._partner import PartnerAuthInfo
11
12
  from ob_dj_store.core.stores.utils import round_up_tie
12
13
 
14
+ logger = logging.getLogger(__name__)
15
+
13
16
 
14
17
  class Cart(models.Model):
15
18
  customer = models.OneToOneField(
@@ -48,8 +51,11 @@ class Cart(models.Model):
48
51
  def total_price(self) -> Decimal:
49
52
  total_price = Decimal(0)
50
53
  for item in self.items.all():
51
- if item.inventory.quantity and item.inventory.quantity > 0:
52
- total_price += item.total_price
54
+ try:
55
+ if item.inventory.quantity and item.inventory.quantity > 0:
56
+ total_price += item.total_price
57
+ except AttributeError:
58
+ logger.error(f"Item {item} has no inventory")
53
59
  return total_price
54
60
 
55
61
  @property
@@ -91,7 +97,8 @@ class Cart(models.Model):
91
97
  def fill(self, order):
92
98
  from ob_dj_store.core.stores.models._cart import CartItem
93
99
 
94
- for item in order.items.all():
100
+ order_items = order.items.all()
101
+ for item in order_items:
95
102
  cart_item = CartItem.objects.create(
96
103
  cart=self,
97
104
  product_variant=item.product_variant,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ob-dj-store
3
- Version: 0.0.19.9
3
+ Version: 0.0.20.1
4
4
  Summary: OBytes django application for managing ecommerce stores.
5
5
  Home-page: https://www.obytes.com/
6
6
  Author: OBytes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes