ob-dj-store 0.0.17.8__py3-none-any.whl → 0.0.18__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.
@@ -1527,6 +1527,8 @@ class WalletTopUpSerializer(serializers.Serializer):
1527
1527
  store_settings.TAP_ALL,
1528
1528
  store_settings.APPLE_PAY,
1529
1529
  store_settings.GOOGLE_PAY,
1530
+ store_settings.MADA,
1531
+ store_settings.BENEFIT,
1530
1532
  ]
1531
1533
  ),
1532
1534
  required=True,
@@ -3,6 +3,7 @@ from typing import Any
3
3
 
4
4
  from django import forms
5
5
  from django.contrib import admin
6
+ from django.db.models.functions import ExtractWeek
6
7
  from django.utils.translation import gettext_lazy as _
7
8
  from import_export.admin import ImportExportModelAdmin
8
9
  from leaflet.admin import LeafletGeoAdmin
@@ -300,6 +301,26 @@ class AdressAdmin(LeafletGeoAdmin):
300
301
  ]
301
302
 
302
303
 
304
+ class WeekNumberFilter(admin.SimpleListFilter):
305
+ title = _("Week Number")
306
+ parameter_name = "week_number"
307
+
308
+ def lookups(self, request, model_admin):
309
+ return (
310
+ ("1", _("Week 1")),
311
+ ("2", _("Week 2")),
312
+ ("3", _("Week 3")),
313
+ ("4", _("Week 4")),
314
+ )
315
+
316
+ def queryset(self, request, queryset):
317
+ if self.value():
318
+ queryset = queryset.annotate(week_number=ExtractWeek("created_at")).filter(
319
+ week_number=self.value()
320
+ )
321
+ return queryset
322
+
323
+
303
324
  class OrderAdmin(ImportExportModelAdmin, admin.ModelAdmin):
304
325
  list_display = [
305
326
  "id",
@@ -318,11 +339,13 @@ class OrderAdmin(ImportExportModelAdmin, admin.ModelAdmin):
318
339
  "id",
319
340
  ]
320
341
  date_hierarchy = "created_at"
342
+
321
343
  list_filter = [
322
344
  "payment_method",
323
345
  "shipping_method",
324
346
  "store",
325
347
  "status",
348
+ WeekNumberFilter, # Include the filter instance instead of the class name
326
349
  ]
327
350
 
328
351
  def get_queryset(self, request):
@@ -410,6 +433,7 @@ class WalletTransactionAdmin(ImportExportModelAdmin, admin.ModelAdmin):
410
433
  list_display = [
411
434
  "id",
412
435
  "user",
436
+ "currency",
413
437
  "type",
414
438
  "amount",
415
439
  "is_cashback",
@@ -421,11 +445,18 @@ class WalletTransactionAdmin(ImportExportModelAdmin, admin.ModelAdmin):
421
445
  ]
422
446
  search_fields = [
423
447
  "wallet__user__email",
448
+ "wallet__currency",
424
449
  ]
425
450
 
426
451
  def user(self, obj) -> typing.Text:
427
452
  return obj.wallet.user.email
428
453
 
454
+ def currency(self, obj) -> typing.Text:
455
+ return obj.wallet.currency
456
+
457
+ def get_queryset(self, request):
458
+ return super().get_queryset(request).select_related("wallet__user")
459
+
429
460
  def save_model(self, request: Any, obj: Any, form: Any, change: Any) -> None:
430
461
  if not obj.pk:
431
462
  obj.is_by_admin = True
@@ -133,6 +133,8 @@ def initiate_payment(
133
133
  settings.TAP_CREDIT_CARD,
134
134
  settings.TAP_KNET,
135
135
  settings.TAP_ALL,
136
+ settings.MADA,
137
+ settings.BENEFIT,
136
138
  ]
137
139
  if not payment_transaction and source in tap_sources:
138
140
  # TODO: How does this issue occur and is this the best way to handle it?
@@ -82,6 +82,8 @@ class PaymentManager(models.Manager):
82
82
  settings.TAP_ALL,
83
83
  settings.APPLE_PAY,
84
84
  settings.GOOGLE_PAY,
85
+ settings.MADA,
86
+ settings.BENEFIT,
85
87
  ]:
86
88
  source = gateway
87
89
  TapPayment.objects.create(
@@ -0,0 +1,35 @@
1
+ # Generated by Django 3.2.8 on 2024-01-04 14:53
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ("stores", "0102_partner_name_arabic"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="paymentmethod",
15
+ name="payment_provider",
16
+ field=models.CharField(
17
+ choices=[
18
+ ("cod", "cash on delivery"),
19
+ ("src_all", "TAP all payment methods"),
20
+ ("src_card", "Tap Credit Card"),
21
+ ("src_kw.knet", "Tap knet"),
22
+ ("paypal", "Paypal"),
23
+ ("stripe", "Stripe"),
24
+ ("wallet", "Wallet"),
25
+ ("gift", "Gift"),
26
+ ("apple_pay", "Apple Pay"),
27
+ ("google_pay", "Google Pay"),
28
+ ("src_sa.mada", "Mada"),
29
+ ("src_bh.benefit", "Benefit"),
30
+ ],
31
+ default="cod",
32
+ max_length=20,
33
+ ),
34
+ ),
35
+ ]
@@ -185,6 +185,8 @@ class Payment(models.Model):
185
185
  settings.TAP_CREDIT_CARD,
186
186
  settings.TAP_KNET,
187
187
  settings.TAP_ALL,
188
+ settings.MADA,
189
+ settings.BENEFIT,
188
190
  ]:
189
191
  payment_url = self.tap_payment.payment_url
190
192
  return payment_url
@@ -82,7 +82,7 @@ class PaymentMethod(models.Model):
82
82
  """
83
83
 
84
84
  payment_provider = models.CharField(
85
- max_length=12,
85
+ max_length=20,
86
86
  choices=settings.PAYMENT_PROVIDER_CHOICES,
87
87
  default="cod",
88
88
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ob-dj-store
3
- Version: 0.0.17.8
3
+ Version: 0.0.18
4
4
  Summary: OBytes django application for managing ecommerce stores.
5
5
  Home-page: https://www.obytes.com/
6
6
  Author: OBytes
@@ -3,17 +3,17 @@ ob_dj_store/apis/stores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
3
3
  ob_dj_store/apis/stores/filters.py,sha256=zKBXPBoqIyFlSeZOECp97RTWvSLqNPnlPhEp7p8W5tE,9702
4
4
  ob_dj_store/apis/stores/urls.py,sha256=7vwogfIGcKS0hHYK3iBXKQwi1kCA_vuHY1eZt8rAspg,2021
5
5
  ob_dj_store/apis/stores/views.py,sha256=aE4LFPHzs_CtzZ8K5-vAbDn_51hyhi0KIsi7cV8dpkA,43372
6
- ob_dj_store/apis/stores/rest/serializers/serializers.py,sha256=unQr5K3TA5X7MJmwrBkTKS7zP7Tovtm42F64CCSjjNY,61750
6
+ ob_dj_store/apis/stores/rest/serializers/serializers.py,sha256=1EeW_FQBPCUVtd5Ehr9Dj2pzpbRgbSClAvto_OqTRck,61827
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=5nudX9BJ4lF58gYjAI3bR0dnVDJ_GxP-p1tBjEaPFws,12487
13
+ ob_dj_store/core/stores/admin.py,sha256=TE95erlxFcSbM-VU7NVtoqrXGL1La452O2x1XKSpDLs,13415
14
14
  ob_dj_store/core/stores/admin_inlines.py,sha256=2K8iDmP4h0CLIOqy3x-ZXXpgYnT2jqL4cg5YFdiho8s,2976
15
15
  ob_dj_store/core/stores/apps.py,sha256=ZadmEER_dNcQTH617b3fAsYZJSyRw0g46Kjp4eOAsOU,498
16
- ob_dj_store/core/stores/managers.py,sha256=Rhv_jTul29A0t_H7jiLQUewn4GnSbgYZ6kq4WAivvjc,9852
16
+ ob_dj_store/core/stores/managers.py,sha256=lz2CE4PJCI1ViO-CU61LqTr43O41aGRQkbWZUR5Fmfg,9909
17
17
  ob_dj_store/core/stores/receivers.py,sha256=DljYC97C_e1mHduKw9Un6YQmxIdwSIter7yVVZwggFA,3768
18
18
  ob_dj_store/core/stores/settings_validation.py,sha256=eTkRaI6CG5OEJQyI5CF-cNAcvjzXf3GwX5sR97O3v98,3977
19
19
  ob_dj_store/core/stores/utils.py,sha256=l09CT9rst0DtcyUTlDQ47yjOxqI_ilN-Du0jbVGZF3c,3081
@@ -23,7 +23,7 @@ ob_dj_store/core/stores/gateway/tap/admin.py,sha256=3KgawxLjvpMsYXl_hx1DlKYpsMd-
23
23
  ob_dj_store/core/stores/gateway/tap/apps.py,sha256=kWwPjuAJeEmEasVDzUbvRsGaQWL-aYe4JDHNLvCVXPs,212
24
24
  ob_dj_store/core/stores/gateway/tap/managers.py,sha256=vjZAVFwV7FMIzNeaTh-A68RfFrfSoKEkuBI16VIAa10,875
25
25
  ob_dj_store/core/stores/gateway/tap/models.py,sha256=CG5lSG97xUX172zw2FKjYrgMEKxTPRxE0TB64I5KXQM,4852
26
- ob_dj_store/core/stores/gateway/tap/utils.py,sha256=FyiR_7bGFI3uJ65ogGTvjqmnVi_hRFxJEcSVwx3e-h0,5191
26
+ ob_dj_store/core/stores/gateway/tap/utils.py,sha256=jsdE-ACKy7hUYXgQXCg1NFNF5H9I3mGVJabZHWhmKdg,5240
27
27
  ob_dj_store/core/stores/gateway/tap/migrations/0001_initial.py,sha256=_303R1R2tVVdPSMtwpuLUxvWbxQ2BML1Gsd-VhfnZEM,4808
28
28
  ob_dj_store/core/stores/gateway/tap/migrations/0002_auto_20220815_1610.py,sha256=gRsekTbqUH4h5yg5d1zWuai7Wiv6-rfsmjnXundgin8,674
29
29
  ob_dj_store/core/stores/gateway/tap/migrations/0003_auto_20220818_1938.py,sha256=pptUxq-AZtziRen5EvuahAVihcINEx_WTdpI28HBVUs,598
@@ -135,6 +135,7 @@ ob_dj_store/core/stores/migrations/0099_alter_product_name_arabic.py,sha256=dVv6
135
135
  ob_dj_store/core/stores/migrations/0100_remove_shippingmethod_type_arabic.py,sha256=3rwZhXsOqbo4jdW6AT5ClaDqXPYbMfP1JOesNzy-Ldw,347
136
136
  ob_dj_store/core/stores/migrations/0101_store_is_digital.py,sha256=yDs7c23WLdhnx82VBw0Fs_YJ0-IgfxLMvMsCkIiThFU,404
137
137
  ob_dj_store/core/stores/migrations/0102_partner_name_arabic.py,sha256=iJIiy5isLYv9Jv2sd-NOyZkwySNlXOEqGTOWE3wLH5w,411
138
+ ob_dj_store/core/stores/migrations/0103_alter_paymentmethod_payment_provider.py,sha256=yCDvU60LMCrJM4BDdyl1PpMcAirJDAyjpqTDH_cjC8g,1079
138
139
  ob_dj_store/core/stores/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
140
  ob_dj_store/core/stores/models/__init__.py,sha256=VeWrDiIbw94ZDSFD-62rz9iTTW87iPdwDW5jcjxm7bs,2045
140
141
  ob_dj_store/core/stores/models/_address.py,sha256=8zV444A8M7P8yqQHjEOCROUykWPQ1ndSdd2IIX8wwWY,2207
@@ -144,15 +145,15 @@ ob_dj_store/core/stores/models/_feedback.py,sha256=eCUVgprNK5hSRKOS4M_pdR7QH2-rq
144
145
  ob_dj_store/core/stores/models/_inventory.py,sha256=ZU8xDMQZxLnFehkBEGWr-os4AF1IlCn5XnBxvRq9IAs,4314
145
146
  ob_dj_store/core/stores/models/_order.py,sha256=hFdlAQcN-iZM6_RaIWJ_FATwTER7pHCGoGSqc2prWBM,9710
146
147
  ob_dj_store/core/stores/models/_partner.py,sha256=Rm7viyuJWGT2abZcqu1axmLvi7bdlfmgL1qd2gzshVA,4544
147
- ob_dj_store/core/stores/models/_payment.py,sha256=LLXDKDeetCWauybC_VCtxxnD1PECKvuzQcPrnTBh6fs,6434
148
+ ob_dj_store/core/stores/models/_payment.py,sha256=bzuf9J0rh1LwKrS_krtxa55x2rHYvwehupJop9zRy6A,6491
148
149
  ob_dj_store/core/stores/models/_product.py,sha256=F4GPoYXxmw-LC8Gben7RRFly-NmnjcvQhT6hrDggKbw,17665
149
- ob_dj_store/core/stores/models/_store.py,sha256=PM5pPJL7-1FNKN7zmwJCkNqZs2cxlzg5HNxPGqpVwlc,9633
150
+ ob_dj_store/core/stores/models/_store.py,sha256=BVvxzhZbBj7bAtHljmodjCTsqCO2uKReyHmx-9r5zro,9633
150
151
  ob_dj_store/core/stores/models/_wallet.py,sha256=Eb1Sy79_M8PGrcfd5Bri0fT-bkwyqfkPHNyC2T7CR_0,5454
151
152
  ob_dj_store/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
153
  ob_dj_store/utils/helpers.py,sha256=o7wgypM7mI2vZqZKkhxnTcnHJC8GMQDOuYMnRwXr6tY,2058
153
154
  ob_dj_store/utils/model.py,sha256=DV7hOhTaZL3gh9sptts2jTUFlTArKG3i7oPioq9HLFE,303
154
155
  ob_dj_store/utils/utils.py,sha256=8UVAFB56qUSjJJ5f9vnermtw638gdFy4CFRCuMbns_M,1342
155
- ob_dj_store-0.0.17.8.dist-info/METADATA,sha256=mfkmpYXZgtcUSeoD_MZhvF2rxLCqEB5QH31KVwGmrgE,2827
156
- ob_dj_store-0.0.17.8.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
157
- ob_dj_store-0.0.17.8.dist-info/top_level.txt,sha256=CZG3G0ptTkzGnc0dFYN-ZD7YKdJBmm47bsmGwofD_lk,12
158
- ob_dj_store-0.0.17.8.dist-info/RECORD,,
156
+ ob_dj_store-0.0.18.dist-info/METADATA,sha256=DByGtiEtfTat6QeTH17P2W81sRi_K1Y5Dd98CslmWzg,2825
157
+ ob_dj_store-0.0.18.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
158
+ ob_dj_store-0.0.18.dist-info/top_level.txt,sha256=CZG3G0ptTkzGnc0dFYN-ZD7YKdJBmm47bsmGwofD_lk,12
159
+ ob_dj_store-0.0.18.dist-info/RECORD,,