ob-dj-store 0.0.20.2__py3-none-any.whl → 0.0.20.4__py3-none-any.whl
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/apis/stores/filters.py +5 -19
- ob_dj_store/apis/stores/rest/serializers/serializers.py +20 -34
- ob_dj_store/apis/stores/views.py +74 -226
- ob_dj_store/apis/tap/views.py +2 -6
- ob_dj_store/core/stores/admin.py +3 -21
- ob_dj_store/core/stores/admin_inlines.py +2 -7
- ob_dj_store/core/stores/gateway/tap/admin.py +1 -3
- ob_dj_store/core/stores/gateway/tap/managers.py +1 -6
- ob_dj_store/core/stores/gateway/tap/migrations/0001_initial.py +1 -3
- ob_dj_store/core/stores/gateway/tap/models.py +3 -12
- ob_dj_store/core/stores/gateway/tap/utils.py +2 -7
- ob_dj_store/core/stores/managers.py +1 -3
- ob_dj_store/core/stores/migrations/0001_initial.py +1 -4
- ob_dj_store/core/stores/migrations/0005_auto_20220425_2119.py +2 -5
- ob_dj_store/core/stores/migrations/0005_auto_20220427_1729.py +1 -2
- ob_dj_store/core/stores/migrations/0006_auto_20220428_0100.py +2 -8
- ob_dj_store/core/stores/migrations/0007_cart_cartitem_order_orderitem.py +2 -8
- ob_dj_store/core/stores/migrations/0010_auto_20220509_1633.py +1 -4
- ob_dj_store/core/stores/migrations/0012_auto_20220514_0633.py +1 -4
- ob_dj_store/core/stores/migrations/0013_auto_20220518_1539.py +1 -4
- ob_dj_store/core/stores/migrations/0014_auto_20220519_0018.py +3 -12
- ob_dj_store/core/stores/migrations/0017_auto_20220524_0912.py +3 -10
- ob_dj_store/core/stores/migrations/0018_auto_20220524_1613.py +1 -3
- ob_dj_store/core/stores/migrations/0021_auto_20220531_1849.py +1 -4
- ob_dj_store/core/stores/migrations/0026_auto_20220630_1913.py +8 -32
- ob_dj_store/core/stores/migrations/0031_auto_20220811_1733.py +1 -4
- ob_dj_store/core/stores/migrations/0033_auto_20220815_0133.py +2 -8
- ob_dj_store/core/stores/migrations/0039_auto_20220831_1521.py +1 -4
- ob_dj_store/core/stores/migrations/0044_remove_productvariant_has_inventory.py +1 -4
- ob_dj_store/core/stores/migrations/0049_auto_20221029_1524.py +2 -8
- ob_dj_store/core/stores/migrations/0050_favoriteextra.py +1 -3
- ob_dj_store/core/stores/migrations/0052_auto_20221129_1732.py +2 -8
- ob_dj_store/core/stores/migrations/0059_auto_20230217_2006.py +2 -8
- ob_dj_store/core/stores/migrations/0062_auto_20230226_2005.py +2 -6
- ob_dj_store/core/stores/migrations/0064_auto_20230228_1814.py +1 -2
- ob_dj_store/core/stores/migrations/0066_auto_20230304_1532.py +2 -8
- ob_dj_store/core/stores/migrations/0070_auto_20230323_1628.py +1 -4
- ob_dj_store/core/stores/migrations/0071_auto_20230328_1825.py +2 -5
- ob_dj_store/core/stores/migrations/0082_auto_20230613_1424.py +1 -4
- ob_dj_store/core/stores/migrations/0084_payment_result.py +1 -3
- ob_dj_store/core/stores/migrations/0087_auto_20230828_2138.py +1 -4
- ob_dj_store/core/stores/migrations/0097_auto_20231108_1939.py +1 -4
- ob_dj_store/core/stores/migrations/0100_remove_shippingmethod_type_arabic.py +1 -4
- ob_dj_store/core/stores/migrations/0106_alter_paymentmethod_payment_provider.py +35 -0
- ob_dj_store/core/stores/migrations/0107_auto_20250425_2059.py +29 -0
- ob_dj_store/core/stores/models/_address.py +1 -3
- ob_dj_store/core/stores/models/_cart.py +1 -3
- ob_dj_store/core/stores/models/_feedback.py +1 -3
- ob_dj_store/core/stores/models/_inventory.py +1 -2
- ob_dj_store/core/stores/models/_order.py +7 -20
- ob_dj_store/core/stores/models/_payment.py +3 -12
- ob_dj_store/core/stores/models/_product.py +5 -17
- ob_dj_store/core/stores/models/_store.py +5 -13
- ob_dj_store/core/stores/models/_wallet.py +7 -23
- ob_dj_store/core/stores/receivers.py +7 -20
- ob_dj_store/core/stores/utils.py +1 -2
- {ob_dj_store-0.0.20.2.dist-info → ob_dj_store-0.0.20.4.dist-info}/METADATA +3 -2
- {ob_dj_store-0.0.20.2.dist-info → ob_dj_store-0.0.20.4.dist-info}/RECORD +60 -58
- {ob_dj_store-0.0.20.2.dist-info → ob_dj_store-0.0.20.4.dist-info}/WHEEL +1 -1
- {ob_dj_store-0.0.20.2.dist-info → ob_dj_store-0.0.20.4.dist-info}/top_level.txt +0 -0
| @@ -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  | 
| 421 | 
            -
                             | 
| 422 | 
            -
             | 
| 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. | 
| 784 | 
            -
                    ] | 
| 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 | 
            -
             | 
| 1191 | 
            -
             | 
| 1192 | 
            -
             | 
| 1193 | 
            -
             | 
| 1194 | 
            -
             | 
| 1195 | 
            -
             | 
| 1196 | 
            -
             | 
| 1197 | 
            -
             | 
| 1198 | 
            -
                        if  | 
| 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 |  |