ob-dj-store 0.0.20.2__tar.gz → 0.0.20.4__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 (201) hide show
  1. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/.github/workflows/test-build.yml +3 -3
  2. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/.pre-commit-config.yaml +9 -9
  3. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/Makefile +7 -7
  4. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/PKG-INFO +3 -2
  5. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/config/settings.py +3 -7
  6. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/apis/stores/filters.py +5 -19
  7. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/apis/stores/rest/serializers/serializers.py +20 -34
  8. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/apis/stores/views.py +74 -226
  9. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/apis/tap/views.py +2 -6
  10. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/admin.py +3 -21
  11. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/admin_inlines.py +2 -7
  12. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/admin.py +1 -3
  13. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/managers.py +1 -6
  14. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/migrations/0001_initial.py +1 -3
  15. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/models.py +3 -12
  16. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/utils.py +2 -7
  17. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/managers.py +1 -3
  18. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0001_initial.py +1 -4
  19. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0005_auto_20220425_2119.py +2 -5
  20. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0005_auto_20220427_1729.py +1 -2
  21. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0006_auto_20220428_0100.py +2 -8
  22. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0007_cart_cartitem_order_orderitem.py +2 -8
  23. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0010_auto_20220509_1633.py +1 -4
  24. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0012_auto_20220514_0633.py +1 -4
  25. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0013_auto_20220518_1539.py +1 -4
  26. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0014_auto_20220519_0018.py +3 -12
  27. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0017_auto_20220524_0912.py +3 -10
  28. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0018_auto_20220524_1613.py +1 -3
  29. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0021_auto_20220531_1849.py +1 -4
  30. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0026_auto_20220630_1913.py +8 -32
  31. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0031_auto_20220811_1733.py +1 -4
  32. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0033_auto_20220815_0133.py +2 -8
  33. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0039_auto_20220831_1521.py +1 -4
  34. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0044_remove_productvariant_has_inventory.py +1 -4
  35. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0049_auto_20221029_1524.py +2 -8
  36. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0050_favoriteextra.py +1 -3
  37. ob_dj_store-0.0.20.4/ob_dj_store/core/stores/migrations/0052_auto_20221129_1732.py +15 -0
  38. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0059_auto_20230217_2006.py +2 -8
  39. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0062_auto_20230226_2005.py +2 -6
  40. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0064_auto_20230228_1814.py +1 -2
  41. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0066_auto_20230304_1532.py +2 -8
  42. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0070_auto_20230323_1628.py +1 -4
  43. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0071_auto_20230328_1825.py +2 -5
  44. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0082_auto_20230613_1424.py +1 -4
  45. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0084_payment_result.py +1 -3
  46. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0087_auto_20230828_2138.py +1 -4
  47. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0097_auto_20231108_1939.py +1 -4
  48. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0100_remove_shippingmethod_type_arabic.py +1 -4
  49. ob_dj_store-0.0.20.4/ob_dj_store/core/stores/migrations/0106_alter_paymentmethod_payment_provider.py +35 -0
  50. ob_dj_store-0.0.20.4/ob_dj_store/core/stores/migrations/0107_auto_20250425_2059.py +29 -0
  51. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_address.py +1 -3
  52. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_cart.py +1 -3
  53. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_feedback.py +1 -3
  54. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_inventory.py +1 -2
  55. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_order.py +7 -20
  56. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_payment.py +3 -12
  57. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_product.py +5 -17
  58. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_store.py +5 -13
  59. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_wallet.py +7 -23
  60. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/receivers.py +7 -20
  61. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/utils.py +1 -2
  62. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store.egg-info/PKG-INFO +3 -2
  63. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store.egg-info/SOURCES.txt +2 -0
  64. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/setup.py +2 -8
  65. ob_dj_store-0.0.20.2/ob_dj_store/core/stores/migrations/0052_auto_20221129_1732.py +0 -21
  66. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/.github/dependabot.yml +0 -0
  67. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/.github/workflows/docs.yml +0 -0
  68. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/.github/workflows/pre-release.yml +0 -0
  69. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/.github/workflows/release.yml +0 -0
  70. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/.gitignore +0 -0
  71. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/.isort.cfg +0 -0
  72. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/Dockerfile +0 -0
  73. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/MANIFEST.in +0 -0
  74. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/Pipfile +0 -0
  75. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/Pipfile.lock +0 -0
  76. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/README.md +0 -0
  77. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/config/__init__.py +0 -0
  78. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/config/urls.py +0 -0
  79. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/config/wsgi.py +0 -0
  80. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/docker-compose.env +0 -0
  81. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/docker-compose.yml +0 -0
  82. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/docs/Makefile +0 -0
  83. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/docs/make.bat +0 -0
  84. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/docs/source/admin.rst +0 -0
  85. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/docs/source/conf.py +0 -0
  86. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/docs/source/index.rst +0 -0
  87. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/docs/source/installation.rst +0 -0
  88. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/docs/source/models.rst +0 -0
  89. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/docs/source/rest_endpoints.rst +0 -0
  90. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/fixtures/initial_users.yaml +0 -0
  91. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/fixtures/stores.yaml +0 -0
  92. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/manage.py +0 -0
  93. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/__init__.py +0 -0
  94. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/apis/__init__.py +0 -0
  95. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/apis/stores/__init__.py +0 -0
  96. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/apis/stores/urls.py +0 -0
  97. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/apis/tap/__init__.py +0 -0
  98. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/apis/tap/serializers.py +0 -0
  99. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/apis/tap/urls.py +0 -0
  100. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/__init__.py +0 -0
  101. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/__init__.py +0 -0
  102. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/apps.py +0 -0
  103. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/__init__.py +0 -0
  104. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/__init__.py +0 -0
  105. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/apps.py +0 -0
  106. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/migrations/0002_auto_20220815_1610.py +0 -0
  107. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/migrations/0003_auto_20220818_1938.py +0 -0
  108. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/migrations/0004_tapcustomer.py +0 -0
  109. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/migrations/0005_alter_tappayment_payment_url.py +0 -0
  110. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/migrations/0006_alter_tappayment_source.py +0 -0
  111. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/migrations/0007_alter_tappayment_source.py +0 -0
  112. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/gateway/tap/migrations/__init__.py +0 -0
  113. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0002_auto_20220422_0205.py +0 -0
  114. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0003_openinghours.py +0 -0
  115. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0004_auto_20220422_2326.py +0 -0
  116. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0008_order_status.py +0 -0
  117. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0009_auto_20220508_2142.py +0 -0
  118. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0011_favorite.py +0 -0
  119. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0015_inventory_inventoryoperations.py +0 -0
  120. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0016_productvariant_preparation_time.py +0 -0
  121. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0019_product_is_featured.py +0 -0
  122. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0020_orderhistory.py +0 -0
  123. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0022_order_pickup_time.py +0 -0
  124. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0023_feedback_feedbackattribute_feedbackconfig.py +0 -0
  125. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0024_auto_20220609_1552.py +0 -0
  126. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0025_productvariant_is_primary.py +0 -0
  127. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0027_auto_20220713_1759.py +0 -0
  128. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0028_phonecontact.py +0 -0
  129. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0029_auto_20220726_1750.py +0 -0
  130. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0030_category_parent.py +0 -0
  131. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0032_auto_20220812_1951.py +0 -0
  132. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0034_auto_20220815_1528.py +0 -0
  133. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0035_auto_20220818_1938.py +0 -0
  134. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0036_productattribute_is_mandatory.py +0 -0
  135. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0037_auto_20220825_1736.py +0 -0
  136. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0038_cartitem_extra_infos.py +0 -0
  137. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0040_auto_20220902_1806.py +0 -0
  138. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0041_auto_20220912_1506.py +0 -0
  139. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0042_wallet_wallettransaction.py +0 -0
  140. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0043_auto_20220919_1854.py +0 -0
  141. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0045_shippingmethod_type.py +0 -0
  142. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0046_auto_20221014_1720.py +0 -0
  143. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0047_auto_20221018_1433.py +0 -0
  144. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0048_auto_20221026_1933.py +0 -0
  145. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0051_order_car_id.py +0 -0
  146. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0053_inventory_plu.py +0 -0
  147. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0054_auto_20221230_1501.py +0 -0
  148. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0055_store_image.py +0 -0
  149. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0056_auto_20230213_2224.py +0 -0
  150. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0057_auto_20230214_1724.py +0 -0
  151. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0058_attributechoice_is_default.py +0 -0
  152. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0060_alter_orderitem_product_variant.py +0 -0
  153. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0061_auto_20230223_1435.py +0 -0
  154. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0063_alter_store_payment_methods.py +0 -0
  155. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0065_auto_20230228_1932.py +0 -0
  156. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0067_auto_20230309_2014.py +0 -0
  157. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0068_auto_20230309_2251.py +0 -0
  158. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0069_alter_cartitem_options.py +0 -0
  159. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0072_alter_order_extra_infos.py +0 -0
  160. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0073_wallettransaction_is_cashback.py +0 -0
  161. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0074_productvariant_label.py +0 -0
  162. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0075_auto_20230419_0259.py +0 -0
  163. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0076_auto_20230421_1343.py +0 -0
  164. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0077_auto_20230502_2005.py +0 -0
  165. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0078_auto_20230503_1259.py +0 -0
  166. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0079_auto_20230504_1919.py +0 -0
  167. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0080_productvariant_description.py +0 -0
  168. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0081_storeattributechoice.py +0 -0
  169. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0083_productvariant_is_special.py +0 -0
  170. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0085_auto_20230726_1528.py +0 -0
  171. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0086_wallet_is_active.py +0 -0
  172. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0088_alter_paymentmethod_payment_provider.py +0 -0
  173. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0089_discount_partner_partnerauthinfo_partneremaildomain_partnerotpauth.py +0 -0
  174. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0090_auto_20231006_1356.py +0 -0
  175. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0091_auto_20231010_1740.py +0 -0
  176. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0092_auto_20231012_1339.py +0 -0
  177. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0093_auto_20231017_2033.py +0 -0
  178. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0094_countrypaymentmethod.py +0 -0
  179. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0095_auto_20231101_1531.py +0 -0
  180. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0096_discount_discount_pos_id.py +0 -0
  181. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0098_alter_discount_discount_rate.py +0 -0
  182. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0099_alter_product_name_arabic.py +0 -0
  183. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0101_store_is_digital.py +0 -0
  184. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0102_partner_name_arabic.py +0 -0
  185. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0103_alter_paymentmethod_payment_provider.py +0 -0
  186. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0104_wallettransaction_is_redeemed.py +0 -0
  187. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/0105_store_is_open_after_midnight.py +0 -0
  188. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/migrations/__init__.py +0 -0
  189. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/__init__.py +0 -0
  190. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_favorite.py +0 -0
  191. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/models/_partner.py +0 -0
  192. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/core/stores/settings_validation.py +0 -0
  193. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/utils/__init__.py +0 -0
  194. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/utils/helpers.py +0 -0
  195. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/utils/model.py +0 -0
  196. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store/utils/utils.py +0 -0
  197. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store.egg-info/dependency_links.txt +0 -0
  198. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store.egg-info/requires.txt +0 -0
  199. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/ob_dj_store.egg-info/top_level.txt +0 -0
  200. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/pytest.ini +0 -0
  201. {ob_dj_store-0.0.20.2 → ob_dj_store-0.0.20.4}/setup.cfg +0 -0
@@ -22,13 +22,13 @@ jobs:
22
22
  run: touch docker-compose.local.env
23
23
 
24
24
  - name: Build
25
- run: docker-compose up -d
25
+ run: docker compose up -d
26
26
 
27
27
  - name: Test Code Linter
28
- run: docker-compose run --rm app pre-commit run --all-files
28
+ run: docker compose run --rm app pre-commit run --all-files
29
29
 
30
30
  - name: Run test suite
31
- run: docker-compose run --rm app pytest
31
+ run: docker compose run --rm app pytest
32
32
 
33
33
  # - name: Upload coverage to Codecov
34
34
  # uses: codecov/codecov-action@v2
@@ -1,31 +1,30 @@
1
+ default_language_version:
2
+ python: python3.9
1
3
  repos:
2
4
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v2.2.3
5
+ rev: v4.1.0
4
6
  hooks:
5
7
  - id: check-merge-conflict
6
8
  - id: check-added-large-files
7
9
  - id: check-ast
8
10
  - id: check-symlinks
9
11
  - id: check-yaml
10
- args: ['--unsafe']
11
12
  - id: trailing-whitespace
12
13
  - id: check-json
13
14
  - id: debug-statements
14
- - id: detect-aws-credentials
15
- args:
16
- - --allow-missing-credentials
17
15
  - id: pretty-format-json
18
- args:
19
- - --autofix
16
+ args: ["--autofix", "--allow-missing-credentials"]
20
17
  exclude: Pipfile.lock
21
18
  - repo: https://github.com/asottile/seed-isort-config
22
19
  rev: v2.2.0
23
20
  hooks:
24
21
  - id: seed-isort-config
22
+ language_version: python3.9
25
23
  - repo: https://github.com/PyCQA/isort
26
24
  rev: 5.12.0
27
25
  hooks:
28
26
  - id: isort
27
+ language_version: python3.9
29
28
  args: ["--profile", "black"]
30
29
  - repo: https://github.com/PyCQA/flake8
31
30
  rev: 4.0.1
@@ -43,7 +42,8 @@ repos:
43
42
  exclude: '^\..*'
44
43
  args: ["--in-place", "--remove-all-unused-imports"]
45
44
  - repo: https://github.com/psf/black
46
- rev: 22.3.0
45
+ rev: 19.10b0
47
46
  hooks:
48
47
  - id: black
49
- args: ["--target-version", "py38"]
48
+ language_version: python3.9
49
+ additional_dependencies: ['click==8.0.4']
@@ -12,7 +12,7 @@ help:
12
12
  @echo "dist: package"
13
13
  @echo "install: install the package to the active Python's site-packages"
14
14
  @echo "docs_check: check sphinx docs for spelling warnings"
15
- @echo "build - Build (usually, requires to build when changes happen to the Dockerfile or docker-compose.yml)"
15
+ @echo "build - Build (usually, requires to build when changes happen to the Dockerfile or docker compose.yml)"
16
16
 
17
17
  clean: clean-build clean-pyc clean-test
18
18
 
@@ -38,7 +38,7 @@ lint_tests:
38
38
  flake8 leviathan_serving tests
39
39
 
40
40
  test:
41
- docker-compose run --rm app pytest
41
+ docker compose run --rm app pytest
42
42
 
43
43
  test-all:
44
44
  tox
@@ -79,16 +79,16 @@ lint:
79
79
  pre-commit run --all-files
80
80
 
81
81
  bash:
82
- docker-compose run --rm app bash
82
+ docker compose run --rm app bash
83
83
 
84
84
  migrations:
85
- docker-compose run --rm app python manage.py makemigrations
85
+ docker compose run --rm app python manage.py makemigrations
86
86
 
87
87
  migrate:
88
- docker-compose run --rm app python manage.py migrate
88
+ docker compose run --rm app python manage.py migrate
89
89
 
90
90
  up:
91
- docker-compose up migrate -d && docker-compose up -d
91
+ docker compose up migrate -d && docker compose up -d
92
92
 
93
93
  build:
94
- docker-compose build
94
+ docker compose build
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: ob-dj-store
3
- Version: 0.0.20.2
3
+ Version: 0.0.20.4
4
4
  Summary: OBytes django application for managing ecommerce stores.
5
5
  Home-page: https://www.obytes.com/
6
6
  Author: OBytes
@@ -25,6 +25,7 @@ Requires-Dist: djangorestframework-gis
25
25
  Requires-Dist: django-filter
26
26
  Requires-Dist: django-leaflet
27
27
  Requires-Dist: django-countries
28
+ Dynamic: requires-dist
28
29
 
29
30
  ## OBytes Django Store App
30
31
 
@@ -284,9 +284,7 @@ REST_FRAMEWORK = {
284
284
  "rest_framework_simplejwt.authentication.JWTAuthentication",
285
285
  "rest_framework.authentication.SessionAuthentication",
286
286
  ),
287
- "DEFAULT_FILTER_BACKENDS": [
288
- "django_filters.rest_framework.DjangoFilterBackend",
289
- ],
287
+ "DEFAULT_FILTER_BACKENDS": ["django_filters.rest_framework.DjangoFilterBackend",],
290
288
  "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination",
291
289
  "PAGE_SIZE": 50,
292
290
  "TEST_REQUEST_RENDERER_CLASSES": [
@@ -317,7 +315,7 @@ PAYPAL = "paypal"
317
315
  STRIPE = "stripe"
318
316
  WALLET = "wallet"
319
317
  GIFT = "gift"
320
- APPLE_PAY = "apple_pay"
318
+ APPLE_PAY = "src_apple_pay"
321
319
  GOOGLE_PAY = "google_pay"
322
320
  MADA = "src_sa.mada"
323
321
  BENEFIT = "src_bh.benefit"
@@ -372,9 +370,7 @@ DIGITAL_PRODUCTS_REQUIRED_KEYS = (
372
370
  MULTIPLE_FAVORITE_EXTRA = 1
373
371
  SIGNLE_FAVORITE_EXTRA = 0
374
372
  FAVORITE_TYPES = {
375
- "Store": {
376
- "path": "ob_dj_store.core.stores.models._store.Store",
377
- },
373
+ "Store": {"path": "ob_dj_store.core.stores.models._store.Store",},
378
374
  "Product": {
379
375
  "path": "ob_dj_store.core.stores.models._product.Product",
380
376
  "extras": {
@@ -49,11 +49,7 @@ class StoreFilter(filters.FilterSet):
49
49
  return queryset.filter(address__country=value)
50
50
 
51
51
  def by_shipping_methods_names(self, queryset, name, value):
52
- return queryset.filter(
53
- shipping_methods__name__in=[
54
- value,
55
- ]
56
- )
52
+ return queryset.filter(shipping_methods__name__in=[value,])
57
53
 
58
54
  def by_open_stores(self, queryset, name, value):
59
55
  if value:
@@ -186,9 +182,7 @@ class CategoryFilter(filters.FilterSet):
186
182
 
187
183
  def by_type(self, queryset, name, value):
188
184
  return (
189
- queryset.filter(
190
- subcategories__products__type=value,
191
- )
185
+ queryset.filter(subcategories__products__type=value,)
192
186
  .prefetch_related(
193
187
  Prefetch(
194
188
  "subcategories",
@@ -198,9 +192,7 @@ class CategoryFilter(filters.FilterSet):
198
192
  ),
199
193
  Prefetch(
200
194
  "subcategories__products",
201
- queryset=Product.objects.filter(
202
- is_active=True,
203
- ).distinct(),
195
+ queryset=Product.objects.filter(is_active=True,).distinct(),
204
196
  ),
205
197
  )
206
198
  .distinct()
@@ -241,10 +233,7 @@ class FavoriteFilter(filters.FilterSet):
241
233
  product_variants__inventories__store__pk=value
242
234
  ).values_list("id", flat=True)
243
235
  content_type = ContentType.objects.get_for_model(Product)
244
- return queryset.filter(
245
- content_type=content_type,
246
- object_id__in=products_ids,
247
- )
236
+ return queryset.filter(content_type=content_type, object_id__in=products_ids,)
248
237
 
249
238
 
250
239
  class PaymentMethodFilter(filters.FilterSet):
@@ -267,10 +256,7 @@ class PaymentMethodFilter(filters.FilterSet):
267
256
 
268
257
  class WalletFilter(filters.FilterSet):
269
258
  currency = filters.CharFilter(
270
- method="by_currency",
271
- validators=[
272
- validate_currency,
273
- ],
259
+ method="by_currency", validators=[validate_currency,],
274
260
  )
275
261
  country = filters.CharFilter(method="by_country")
276
262
 
@@ -329,8 +329,7 @@ class OrderSerializer(serializers.ModelSerializer):
329
329
  return store
330
330
 
331
331
  def _validate_user_address(
332
- self,
333
- attrs,
332
+ self, attrs,
334
333
  ):
335
334
  if "shipping_address" not in attrs:
336
335
  raise ValidationError(
@@ -417,13 +416,9 @@ class OrderSerializer(serializers.ModelSerializer):
417
416
  logger.info(
418
417
  f"The fix for UAE stores timezone failed due to this error {e}"
419
418
  )
420
- if store.is_open_after_midnight:
421
- if to_hour < pickup_time_time < from_hour:
422
- raise serializers.ValidationError(
423
- _("Pickup time must be between store's opening hours")
424
- )
425
- elif (
426
- not op_hour.always_open
419
+ if (
420
+ op_hour.is_open_after_midnight
421
+ and not op_hour.always_open
427
422
  and pickup_time_time > to_hour
428
423
  or pickup_time_time < from_hour
429
424
  ):
@@ -736,9 +731,7 @@ class CartItemSerializer(
736
731
  "is_multi_variant",
737
732
  )
738
733
  extra_kwargs = {
739
- "store": {
740
- "required": True,
741
- },
734
+ "store": {"required": True,},
742
735
  }
743
736
 
744
737
  def get_is_multi_variant(self, obj):
@@ -779,9 +772,9 @@ class CartItemSerializer(
779
772
  favorites = Favorite.objects.favorites_for_object(
780
773
  obj.product_variant.product, user
781
774
  )
782
- customization = [
783
- obj.product_variant,
784
- ] + [attribute_choice for attribute_choice in obj.attribute_choices.all()]
775
+ customization = [obj.product_variant,] + [
776
+ attribute_choice for attribute_choice in obj.attribute_choices.all()
777
+ ]
785
778
  for favorite in favorites:
786
779
  content_objects = [
787
780
  instance.content_object for instance in favorite.extras.all()
@@ -1172,7 +1165,6 @@ class StoreSerializer(ArabicFieldsMixin, FavoriteMixin, serializers.ModelSeriali
1172
1165
  "image",
1173
1166
  "busy_mode",
1174
1167
  "name_arabic",
1175
- "is_open_after_midnight",
1176
1168
  )
1177
1169
  extra_kwargs = {
1178
1170
  "image": {"read_only": True, "required": False},
@@ -1186,16 +1178,16 @@ class StoreSerializer(ArabicFieldsMixin, FavoriteMixin, serializers.ModelSeriali
1186
1178
  if current_op_hour:
1187
1179
  from_hour = current_op_hour.from_hour
1188
1180
  to_hour = current_op_hour.to_hour
1189
- if current_time.tzinfo.zone != "Asia/Dubai":
1190
- if obj.currency == "AED":
1191
- try:
1192
- current_time += timedelta(hours=1)
1193
- except Exception as e:
1194
- logger.info(
1195
- f"The fix for UAE stores timezone failed due to this error {e}"
1196
- )
1197
-
1198
- if obj.is_open_after_midnight:
1181
+ # if current_time.tzinfo.zone != "Asia/Dubai":
1182
+ # if obj.currency == "AED":
1183
+ # try:
1184
+ # current_time += timedelta(hours=1)
1185
+ # except Exception as e:
1186
+ # logger.info(
1187
+ # f"The fix for UAE stores timezone failed due to this error {e}"
1188
+ # )
1189
+
1190
+ if current_op_hour.is_open_after_midnight:
1199
1191
  return True if to_hour < current_time.time() < from_hour else False
1200
1192
 
1201
1193
  if current_op_hour.always_open:
@@ -1817,9 +1809,7 @@ class PartnerAuthInfoSerializer(ArabicFieldsMixin, serializers.ModelSerializer):
1817
1809
  status=OneTruePairing.Statuses.init,
1818
1810
  created_at__gte=timeout,
1819
1811
  ).get(
1820
- email=attrs["email"],
1821
- partner_otp_auth__partner=partner,
1822
- user=user,
1812
+ email=attrs["email"], partner_otp_auth__partner=partner, user=user,
1823
1813
  )
1824
1814
  self.context["otp"] = otp
1825
1815
  except ObjectDoesNotExist as e:
@@ -1856,11 +1846,7 @@ class PartnerAuthInfoSerializer(ArabicFieldsMixin, serializers.ModelSerializer):
1856
1846
  otp.status = OneTruePairing.Statuses.used
1857
1847
  otp.save()
1858
1848
  partner_auth_info = PartnerAuthInfo.objects.update_or_create(
1859
- user=user,
1860
- defaults={
1861
- "partner": partner,
1862
- "email": validated_data["email"],
1863
- },
1849
+ user=user, defaults={"partner": partner, "email": validated_data["email"],},
1864
1850
  )
1865
1851
  return partner_auth_info
1866
1852