ob-dj-store 0.0.11.10__py3-none-any.whl → 0.0.11.12__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/rest/serializers/serializers.py +28 -3
- ob_dj_store/apis/stores/views.py +64 -1
- ob_dj_store/core/stores/admin.py +5 -0
- ob_dj_store/core/stores/migrations/0066_auto_20230304_1532.py +64 -0
- ob_dj_store/core/stores/models/__init__.py +6 -1
- ob_dj_store/core/stores/models/_wallet.py +29 -3
- ob_dj_store/core/stores/receivers.py +2 -3
- ob_dj_store/utils/helpers.py +2 -2
- ob_dj_store/utils/utils.py +3 -1
- {ob_dj_store-0.0.11.10.dist-info → ob_dj_store-0.0.11.12.dist-info}/METADATA +1 -1
- {ob_dj_store-0.0.11.10.dist-info → ob_dj_store-0.0.11.12.dist-info}/RECORD +13 -12
- {ob_dj_store-0.0.11.10.dist-info → ob_dj_store-0.0.11.12.dist-info}/WHEEL +0 -0
- {ob_dj_store-0.0.11.10.dist-info → ob_dj_store-0.0.11.12.dist-info}/top_level.txt +0 -0
@@ -40,6 +40,8 @@ from ob_dj_store.core.stores.models import (
|
|
40
40
|
Store,
|
41
41
|
Tax,
|
42
42
|
Wallet,
|
43
|
+
WalletMedia,
|
44
|
+
WalletTransaction,
|
43
45
|
)
|
44
46
|
from ob_dj_store.core.stores.models._inventory import Inventory
|
45
47
|
from ob_dj_store.core.stores.utils import distance
|
@@ -52,6 +54,7 @@ class AttributeChoiceSerializer(serializers.ModelSerializer):
|
|
52
54
|
"id",
|
53
55
|
"name",
|
54
56
|
"price",
|
57
|
+
"label",
|
55
58
|
"is_default",
|
56
59
|
)
|
57
60
|
|
@@ -148,6 +151,7 @@ class OrderSerializer(serializers.ModelSerializer):
|
|
148
151
|
items = OrderItemSerializer(many=True, read_only=True)
|
149
152
|
history = OrderHistorySerializer(many=True, read_only=True)
|
150
153
|
estimated_timeline = serializers.SerializerMethodField()
|
154
|
+
store_name = serializers.SerializerMethodField()
|
151
155
|
|
152
156
|
class Meta:
|
153
157
|
model = Order
|
@@ -170,6 +174,7 @@ class OrderSerializer(serializers.ModelSerializer):
|
|
170
174
|
"extra_infos",
|
171
175
|
"created_at",
|
172
176
|
"updated_at",
|
177
|
+
"store_name",
|
173
178
|
)
|
174
179
|
extra_kwargs = {
|
175
180
|
"customer": {"read_only": True},
|
@@ -200,9 +205,11 @@ class OrderSerializer(serializers.ModelSerializer):
|
|
200
205
|
timeline["ready"] = timeline["delivering"] or timeline["order_ready"]
|
201
206
|
return timeline
|
202
207
|
|
208
|
+
def get_store_name(self, obj):
|
209
|
+
return obj.store.name if obj.store else None
|
210
|
+
|
203
211
|
def to_representation(self, instance):
|
204
212
|
data = super().to_representation(instance)
|
205
|
-
data["store_name"] = instance.store.name
|
206
213
|
return data
|
207
214
|
|
208
215
|
def _get_store(self):
|
@@ -403,6 +410,7 @@ class ProductAttributeSerializer(serializers.ModelSerializer):
|
|
403
410
|
"is_mandatory",
|
404
411
|
"attribute_choices",
|
405
412
|
"type",
|
413
|
+
"label",
|
406
414
|
"min",
|
407
415
|
"max",
|
408
416
|
)
|
@@ -1061,13 +1069,18 @@ class FavoriteSerializer(serializers.ModelSerializer):
|
|
1061
1069
|
return favorite
|
1062
1070
|
|
1063
1071
|
|
1072
|
+
class WalletMediaSerializer(serializers.ModelSerializer):
|
1073
|
+
class Meta:
|
1074
|
+
model = WalletMedia
|
1075
|
+
fields = "__all__"
|
1076
|
+
|
1077
|
+
|
1064
1078
|
class WalletSerializer(serializers.ModelSerializer):
|
1065
1079
|
class Meta:
|
1066
1080
|
model = Wallet
|
1067
|
-
fields = ["id", "user", "balance", "name", "
|
1081
|
+
fields = ["id", "user", "balance", "name", "media_image", "image_url"]
|
1068
1082
|
extra_kwargs = {
|
1069
1083
|
"user": {"read_only": True},
|
1070
|
-
"image_thumbnail_medium": {"read_only": True},
|
1071
1084
|
}
|
1072
1085
|
|
1073
1086
|
|
@@ -1090,3 +1103,15 @@ class WalletTopUpSerializer(serializers.Serializer):
|
|
1090
1103
|
amount = self.validated_data["amount"]
|
1091
1104
|
payment_method = self.validated_data["payment_method"]
|
1092
1105
|
return wallet.top_up_wallet(amount=amount, payment_method=payment_method)
|
1106
|
+
|
1107
|
+
|
1108
|
+
class WalletTransactionSerializer(serializers.ModelSerializer):
|
1109
|
+
class Meta:
|
1110
|
+
model = WalletTransaction
|
1111
|
+
fields = [
|
1112
|
+
"id",
|
1113
|
+
"type",
|
1114
|
+
"amount",
|
1115
|
+
"created_at",
|
1116
|
+
"wallet",
|
1117
|
+
]
|
ob_dj_store/apis/stores/views.py
CHANGED
@@ -48,8 +48,10 @@ from ob_dj_store.apis.stores.rest.serializers.serializers import (
|
|
48
48
|
ShippingMethodSerializer,
|
49
49
|
StoreSerializer,
|
50
50
|
TaxSerializer,
|
51
|
+
WalletMediaSerializer,
|
51
52
|
WalletSerializer,
|
52
53
|
WalletTopUpSerializer,
|
54
|
+
WalletTransactionSerializer,
|
53
55
|
)
|
54
56
|
from ob_dj_store.core.stores.models import (
|
55
57
|
Cart,
|
@@ -66,6 +68,7 @@ from ob_dj_store.core.stores.models import (
|
|
66
68
|
Store,
|
67
69
|
Tax,
|
68
70
|
Wallet,
|
71
|
+
WalletMedia,
|
69
72
|
)
|
70
73
|
from ob_dj_store.core.stores.models._inventory import Inventory
|
71
74
|
|
@@ -944,7 +947,9 @@ class WalletViewSet(
|
|
944
947
|
]
|
945
948
|
|
946
949
|
def get_queryset(self):
|
947
|
-
return Wallet.objects.filter(user=self.request.user)
|
950
|
+
return Wallet.objects.filter(user=self.request.user).select_related(
|
951
|
+
"media_image"
|
952
|
+
)
|
948
953
|
|
949
954
|
@swagger_auto_schema(
|
950
955
|
operation_summary="Get User Wallet",
|
@@ -1010,3 +1015,61 @@ class WalletViewSet(
|
|
1010
1015
|
instance = self.get_object()
|
1011
1016
|
payment_url = serializer.top_up_wallet(instance)
|
1012
1017
|
return Response({"payment_url": payment_url}, status=status.HTTP_200_OK)
|
1018
|
+
|
1019
|
+
@swagger_auto_schema(
|
1020
|
+
operation_summary="List Wallet's transactions",
|
1021
|
+
operation_description="""
|
1022
|
+
list user's wallet transactions(debit,credit)
|
1023
|
+
""",
|
1024
|
+
tags=[
|
1025
|
+
"Wallet",
|
1026
|
+
],
|
1027
|
+
)
|
1028
|
+
@action(
|
1029
|
+
methods=[
|
1030
|
+
"GET",
|
1031
|
+
],
|
1032
|
+
detail=True,
|
1033
|
+
url_path="transactions",
|
1034
|
+
serializer_class=WalletTransactionSerializer,
|
1035
|
+
)
|
1036
|
+
def transactions(
|
1037
|
+
self, request: Request, *args: typing.Any, **kwargs: typing.Any
|
1038
|
+
) -> Response:
|
1039
|
+
queryset = self.get_object().transactions.all()
|
1040
|
+
page = self.paginate_queryset(queryset)
|
1041
|
+
if page is not None:
|
1042
|
+
serializer = self.get_serializer(page, many=True)
|
1043
|
+
return self.get_paginated_response(serializer.data)
|
1044
|
+
|
1045
|
+
serializer = self.get_serializer(queryset, many=True)
|
1046
|
+
return Response(serializer.data)
|
1047
|
+
|
1048
|
+
@swagger_auto_schema(
|
1049
|
+
operation_summary="List Wallet selection images",
|
1050
|
+
operation_description="""
|
1051
|
+
list wallet selection images
|
1052
|
+
""",
|
1053
|
+
tags=[
|
1054
|
+
"Wallet",
|
1055
|
+
],
|
1056
|
+
)
|
1057
|
+
@action(
|
1058
|
+
methods=[
|
1059
|
+
"GET",
|
1060
|
+
],
|
1061
|
+
detail=False,
|
1062
|
+
url_path="images",
|
1063
|
+
serializer_class=WalletMediaSerializer,
|
1064
|
+
)
|
1065
|
+
def images(
|
1066
|
+
self, request: Request, *args: typing.Any, **kwargs: typing.Any
|
1067
|
+
) -> Response:
|
1068
|
+
queryset = WalletMedia.objects.filter(is_active=True)
|
1069
|
+
page = self.paginate_queryset(queryset)
|
1070
|
+
if page is not None:
|
1071
|
+
serializer = self.get_serializer(page, many=True)
|
1072
|
+
return self.get_paginated_response(serializer.data)
|
1073
|
+
|
1074
|
+
serializer = self.get_serializer(queryset, many=True)
|
1075
|
+
return Response(serializer.data)
|
ob_dj_store/core/stores/admin.py
CHANGED
@@ -288,6 +288,10 @@ class WalletAdmin(admin.ModelAdmin):
|
|
288
288
|
]
|
289
289
|
|
290
290
|
|
291
|
+
class WalletMediaAdmin(admin.ModelAdmin):
|
292
|
+
list_display = ("id", "image", "image_thumbnail_medium", "is_active")
|
293
|
+
|
294
|
+
|
291
295
|
admin.site.register(models.Store, StoreAdmin)
|
292
296
|
admin.site.register(models.ShippingMethod, ShippingMethodAdmin)
|
293
297
|
admin.site.register(models.PaymentMethod, PaymentMethodAdmin)
|
@@ -305,3 +309,4 @@ admin.site.register(models.Inventory, InventoryAdmin)
|
|
305
309
|
admin.site.register(models.Tax, TaxAdmin)
|
306
310
|
admin.site.register(models.WalletTransaction, WalletTransactionAdmin)
|
307
311
|
admin.site.register(models.Wallet, WalletAdmin)
|
312
|
+
admin.site.register(models.WalletMedia, WalletMediaAdmin)
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# Generated by Django 3.2.8 on 2023-03-04 12:32
|
2
|
+
|
3
|
+
import django.db.models.deletion
|
4
|
+
from django.db import migrations, models
|
5
|
+
|
6
|
+
import ob_dj_store.utils.helpers
|
7
|
+
import ob_dj_store.utils.model
|
8
|
+
|
9
|
+
|
10
|
+
class Migration(migrations.Migration):
|
11
|
+
|
12
|
+
dependencies = [
|
13
|
+
("stores", "0065_auto_20230228_1932"),
|
14
|
+
]
|
15
|
+
|
16
|
+
operations = [
|
17
|
+
migrations.CreateModel(
|
18
|
+
name="WalletMedia",
|
19
|
+
fields=[
|
20
|
+
(
|
21
|
+
"id",
|
22
|
+
models.AutoField(
|
23
|
+
auto_created=True,
|
24
|
+
primary_key=True,
|
25
|
+
serialize=False,
|
26
|
+
verbose_name="ID",
|
27
|
+
),
|
28
|
+
),
|
29
|
+
(
|
30
|
+
"image",
|
31
|
+
models.ImageField(
|
32
|
+
upload_to=ob_dj_store.utils.helpers.wallet_media_upload_to
|
33
|
+
),
|
34
|
+
),
|
35
|
+
(
|
36
|
+
"image_thumbnail_medium",
|
37
|
+
models.ImageField(blank=True, null=True, upload_to="wallets/"),
|
38
|
+
),
|
39
|
+
("is_active", models.BooleanField(default=True)),
|
40
|
+
("created_at", models.DateTimeField(auto_now_add=True)),
|
41
|
+
("updated_at", models.DateTimeField(auto_now=True)),
|
42
|
+
],
|
43
|
+
bases=(ob_dj_store.utils.model.DjangoModelCleanMixin, models.Model),
|
44
|
+
),
|
45
|
+
migrations.RemoveField(
|
46
|
+
model_name="wallet",
|
47
|
+
name="image",
|
48
|
+
),
|
49
|
+
migrations.RemoveField(
|
50
|
+
model_name="wallet",
|
51
|
+
name="image_thumbnail_medium",
|
52
|
+
),
|
53
|
+
migrations.AddField(
|
54
|
+
model_name="wallet",
|
55
|
+
name="media_image",
|
56
|
+
field=models.ForeignKey(
|
57
|
+
blank=True,
|
58
|
+
null=True,
|
59
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
60
|
+
related_name="wallets",
|
61
|
+
to="stores.walletmedia",
|
62
|
+
),
|
63
|
+
),
|
64
|
+
]
|
@@ -26,7 +26,11 @@ from ob_dj_store.core.stores.models._store import (
|
|
26
26
|
ShippingMethod,
|
27
27
|
Store,
|
28
28
|
)
|
29
|
-
from ob_dj_store.core.stores.models._wallet import
|
29
|
+
from ob_dj_store.core.stores.models._wallet import (
|
30
|
+
Wallet,
|
31
|
+
WalletMedia,
|
32
|
+
WalletTransaction,
|
33
|
+
)
|
30
34
|
|
31
35
|
__all__ = [
|
32
36
|
"Store",
|
@@ -60,4 +64,5 @@ __all__ = [
|
|
60
64
|
"WalletTransaction",
|
61
65
|
"Wallet",
|
62
66
|
"FavoriteExtra",
|
67
|
+
"WalletMedia",
|
63
68
|
]
|
@@ -11,10 +11,27 @@ from ob_dj_store.core.stores.managers import WalletTransactionManager
|
|
11
11
|
from ob_dj_store.core.stores.models._store import PaymentMethod
|
12
12
|
from ob_dj_store.core.stores.utils import validate_currency
|
13
13
|
from ob_dj_store.utils.helpers import wallet_media_upload_to
|
14
|
+
from ob_dj_store.utils.model import DjangoModelCleanMixin
|
14
15
|
|
15
16
|
logger = logging.getLogger(__name__)
|
16
17
|
|
17
18
|
|
19
|
+
class WalletMedia(DjangoModelCleanMixin, models.Model):
|
20
|
+
"""
|
21
|
+
selection images for wallets.
|
22
|
+
"""
|
23
|
+
|
24
|
+
image = models.ImageField(upload_to=wallet_media_upload_to)
|
25
|
+
image_thumbnail_medium = models.ImageField(
|
26
|
+
upload_to="wallets/", null=True, blank=True
|
27
|
+
)
|
28
|
+
is_active = models.BooleanField(default=True)
|
29
|
+
|
30
|
+
# Audit fields
|
31
|
+
created_at = models.DateTimeField(auto_now_add=True)
|
32
|
+
updated_at = models.DateTimeField(auto_now=True)
|
33
|
+
|
34
|
+
|
18
35
|
class Wallet(models.Model):
|
19
36
|
user = models.ForeignKey(
|
20
37
|
settings.AUTH_USER_MODEL,
|
@@ -22,9 +39,12 @@ class Wallet(models.Model):
|
|
22
39
|
related_name="wallets",
|
23
40
|
)
|
24
41
|
name = models.CharField(max_length=200, null=True, blank=True)
|
25
|
-
|
26
|
-
|
27
|
-
|
42
|
+
media_image = models.ForeignKey(
|
43
|
+
WalletMedia,
|
44
|
+
on_delete=models.SET_NULL,
|
45
|
+
null=True,
|
46
|
+
blank=True,
|
47
|
+
related_name="wallets",
|
28
48
|
)
|
29
49
|
currency = models.CharField(
|
30
50
|
max_length=3,
|
@@ -63,6 +83,12 @@ class Wallet(models.Model):
|
|
63
83
|
)
|
64
84
|
return query["balance"]
|
65
85
|
|
86
|
+
@property
|
87
|
+
def image_url(self):
|
88
|
+
if self.media_image:
|
89
|
+
image = self.media_image.image_thumbnail_medium
|
90
|
+
return image.url if image else None
|
91
|
+
|
66
92
|
def top_up_wallet(self, amount: Decimal, payment_method: PaymentMethod):
|
67
93
|
from ob_dj_store.core.stores.models import Order, Payment
|
68
94
|
|
@@ -9,7 +9,7 @@ from ob_dj_store.core.stores.models import (
|
|
9
9
|
Order,
|
10
10
|
OrderHistory,
|
11
11
|
ProductMedia,
|
12
|
-
|
12
|
+
WalletMedia,
|
13
13
|
)
|
14
14
|
from ob_dj_store.utils.utils import resize_image
|
15
15
|
|
@@ -95,7 +95,7 @@ def create_product_media_thumbnails(sender, instance, **kwargs):
|
|
95
95
|
|
96
96
|
@receiver(
|
97
97
|
pre_save,
|
98
|
-
sender=
|
98
|
+
sender=WalletMedia,
|
99
99
|
dispatch_uid="create_wallet_thumbnails",
|
100
100
|
)
|
101
101
|
def create_wallet_thumbnails(sender, instance, **kwargs):
|
@@ -105,5 +105,4 @@ def create_wallet_thumbnails(sender, instance, **kwargs):
|
|
105
105
|
instance.image,
|
106
106
|
dim=medium_dim,
|
107
107
|
size_name="medium",
|
108
|
-
image_name=f"{instance.currency}_{instance.user.username}",
|
109
108
|
)
|
ob_dj_store/utils/helpers.py
CHANGED
@@ -35,6 +35,6 @@ def store_media_upload_to(instance, filename):
|
|
35
35
|
|
36
36
|
|
37
37
|
def wallet_media_upload_to(instance, filename):
|
38
|
-
ext = filename.split(".")
|
38
|
+
image_name, ext = filename.split(".")
|
39
39
|
if instance:
|
40
|
-
return f"wallets/{
|
40
|
+
return f"wallets/{image_name}_{int(now().timestamp())}.{ext}"
|
ob_dj_store/utils/utils.py
CHANGED
@@ -10,7 +10,7 @@ from pilkit.processors import ResizeToFill
|
|
10
10
|
logger = logging.getLogger(__name__)
|
11
11
|
|
12
12
|
|
13
|
-
def resize_image(image, dim: dict, size_name: str, image_name: str):
|
13
|
+
def resize_image(image, dim: dict, size_name: str, image_name: str = None):
|
14
14
|
try:
|
15
15
|
img = Image.open(image)
|
16
16
|
except UnidentifiedImageError as e:
|
@@ -32,6 +32,8 @@ def resize_image(image, dim: dict, size_name: str, image_name: str):
|
|
32
32
|
new_img = new_img.convert("RGB")
|
33
33
|
new_img.save(output, format=img_format, quality=70)
|
34
34
|
output.seek(0)
|
35
|
+
if not image_name:
|
36
|
+
image_name = filename
|
35
37
|
new_image = InMemoryUploadedFile(
|
36
38
|
output,
|
37
39
|
"ImageField",
|
@@ -2,19 +2,19 @@ ob_dj_store/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
2
2
|
ob_dj_store/apis/stores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
ob_dj_store/apis/stores/filters.py,sha256=s4US_TysnIgdT8pue_1jlG3V33WhYmCymXK3DuC0rqY,5746
|
4
4
|
ob_dj_store/apis/stores/urls.py,sha256=cPForgFpOgOGCUVAk6DZcZ7qOooMf1zpDIr1BA0L_8A,1593
|
5
|
-
ob_dj_store/apis/stores/views.py,sha256=
|
6
|
-
ob_dj_store/apis/stores/rest/serializers/serializers.py,sha256=
|
5
|
+
ob_dj_store/apis/stores/views.py,sha256=RjibvMPfEKsKQtuuieU4UplNL2z-54ZkwDyC5J5Mbwo,31738
|
6
|
+
ob_dj_store/apis/stores/rest/serializers/serializers.py,sha256=9hPfSHj5ODbrPuePX5sT5zPXc_jNk_FTZMOsu-rEWLY,36921
|
7
7
|
ob_dj_store/apis/tap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
8
|
ob_dj_store/apis/tap/serializers.py,sha256=KPrBK4h2-fWvEVf6vOj2ww5-USV9WqpyYicIqoHIiXI,1065
|
9
9
|
ob_dj_store/apis/tap/urls.py,sha256=bnOTv6an11kxpo_FdqlhsizlGPLVpNxBjCyKcf3_C9M,367
|
10
10
|
ob_dj_store/apis/tap/views.py,sha256=VnVquybTHlJquxsC0RNTy20dtLXalchO0SlGjSDaBng,2666
|
11
11
|
ob_dj_store/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
ob_dj_store/core/stores/__init__.py,sha256=-izNGrxNn_nn3IQXd5pkuES9lSF-AHYb14yhNPozYCI,65
|
13
|
-
ob_dj_store/core/stores/admin.py,sha256=
|
13
|
+
ob_dj_store/core/stores/admin.py,sha256=xRmi6LCda27w3f4c2rIaodbTSvLLBuhOLVgmEJcUU4g,7530
|
14
14
|
ob_dj_store/core/stores/admin_inlines.py,sha256=SLj8mMa-Sc3oP693R0W9c3Ocyk7eb34IyXbC4E6LL8M,1557
|
15
15
|
ob_dj_store/core/stores/apps.py,sha256=i6D2lcqlluP6FwJSBpekf7BQVzQURwSy_Y97SgqWTkM,434
|
16
16
|
ob_dj_store/core/stores/managers.py,sha256=cDr8TtPxayLwTFNgFs9I87ZXh7ssqM-yAmvEcN9a5LU,6359
|
17
|
-
ob_dj_store/core/stores/receivers.py,sha256=
|
17
|
+
ob_dj_store/core/stores/receivers.py,sha256=gfpshRC_OjLW8dx9Y61dpakPGZkW_hV9KV9cEYH7K1w,3132
|
18
18
|
ob_dj_store/core/stores/settings_validation.py,sha256=s9BPEdyCL2aslZwZGLAWEvJBzXlUo0p2TbC1_0E_SDo,327
|
19
19
|
ob_dj_store/core/stores/utils.py,sha256=_FwZEIwKdfj3CuYHCz3wKqq5TBb8xak7UiiCB1oggKc,1850
|
20
20
|
ob_dj_store/core/stores/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -94,8 +94,9 @@ ob_dj_store/core/stores/migrations/0062_auto_20230226_2005.py,sha256=ApzGG5teYcL
|
|
94
94
|
ob_dj_store/core/stores/migrations/0063_alter_store_payment_methods.py,sha256=QKIrNVtjttvYn4IO1GpGkA2gX4cyqjHNbFQ7q7cQqno,571
|
95
95
|
ob_dj_store/core/stores/migrations/0064_auto_20230228_1814.py,sha256=6fgusQrMykN_tlNBxiJqLNvrHBA0yI32JK0kQ4VfNpQ,644
|
96
96
|
ob_dj_store/core/stores/migrations/0065_auto_20230228_1932.py,sha256=r3-ThPhh_Lf4J3tYbCLiRbLSui5VSqwaVCtzvEZes_8,919
|
97
|
+
ob_dj_store/core/stores/migrations/0066_auto_20230304_1532.py,sha256=IVOFLoaaFyRM50EBdfw9W4ixUP_F1n6LRm4zQJ9Yfaw,1977
|
97
98
|
ob_dj_store/core/stores/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
|
-
ob_dj_store/core/stores/models/__init__.py,sha256=
|
99
|
+
ob_dj_store/core/stores/models/__init__.py,sha256=fNB_sn6HM6EmTp_Z-Q7KXD8HDWVjG3qlayrWqvygvbw,1617
|
99
100
|
ob_dj_store/core/stores/models/_address.py,sha256=qS5TQ9Z12zx_4CrrHvG8PoYVkdiOq_MtbKR14WKh3Hw,1661
|
100
101
|
ob_dj_store/core/stores/models/_cart.py,sha256=qgjg5MXTMRIZRJJDx5BQ1pa9__ylfrnYMMRGbB2R53c,4555
|
101
102
|
ob_dj_store/core/stores/models/_favorite.py,sha256=bpXlFBNK8jsQkZG1RiDAbNTNSoVP0NOUUxZI8c46QzI,2561
|
@@ -105,12 +106,12 @@ ob_dj_store/core/stores/models/_order.py,sha256=qtdUpG30dZeDGeh0Z8JhzyyqQIuxTdLf
|
|
105
106
|
ob_dj_store/core/stores/models/_payment.py,sha256=dCOXOYkgxOGJqp0nxEvzHmdZxR_srFUIZAhrB--SP1U,6143
|
106
107
|
ob_dj_store/core/stores/models/_product.py,sha256=yGVp3vl5rCReG4c8ogWy2NUcsTJeqCxP0tm6lQyYx7Y,10928
|
107
108
|
ob_dj_store/core/stores/models/_store.py,sha256=g7QXKbZI886Pdw6smuheVep7Vh1ke42PEhJhnxW4byA,7334
|
108
|
-
ob_dj_store/core/stores/models/_wallet.py,sha256=
|
109
|
+
ob_dj_store/core/stores/models/_wallet.py,sha256=iPeS2BVbDhZcqw0Wi7tEiUgw7ihFKQvd0RK8ZaF6ZYY,4350
|
109
110
|
ob_dj_store/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
110
|
-
ob_dj_store/utils/helpers.py,sha256=
|
111
|
+
ob_dj_store/utils/helpers.py,sha256=3LsbPik74hkn4T2R6cwa0x6IE9gBNK7gMQsjQsJz1uk,1200
|
111
112
|
ob_dj_store/utils/model.py,sha256=DV7hOhTaZL3gh9sptts2jTUFlTArKG3i7oPioq9HLFE,303
|
112
|
-
ob_dj_store/utils/utils.py,sha256=
|
113
|
-
ob_dj_store-0.0.11.
|
114
|
-
ob_dj_store-0.0.11.
|
115
|
-
ob_dj_store-0.0.11.
|
116
|
-
ob_dj_store-0.0.11.
|
113
|
+
ob_dj_store/utils/utils.py,sha256=8UVAFB56qUSjJJ5f9vnermtw638gdFy4CFRCuMbns_M,1342
|
114
|
+
ob_dj_store-0.0.11.12.dist-info/METADATA,sha256=OVSVTQIgRyF-cfWmlfDeklAKAx3PUL-MZE8pi-CkT44,2828
|
115
|
+
ob_dj_store-0.0.11.12.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
116
|
+
ob_dj_store-0.0.11.12.dist-info/top_level.txt,sha256=CZG3G0ptTkzGnc0dFYN-ZD7YKdJBmm47bsmGwofD_lk,12
|
117
|
+
ob_dj_store-0.0.11.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|