Skip to content

Commit ec340b0

Browse files
Merge pull request #398 from MySecondLanguage/optimized-query
Optimized query
2 parents a133483 + cb3acda commit ec340b0

File tree

8 files changed

+89
-16
lines changed

8 files changed

+89
-16
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 4.2.11 on 2025-02-21 08:51
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("filemanager", "0004_rename_image_sm_image_image_xs"),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name="image",
15+
name="image",
16+
field=models.ImageField(upload_to="images/"),
17+
),
18+
migrations.AlterField(
19+
model_name="image",
20+
name="image_xs",
21+
field=models.ImageField(blank=True, null=True, upload_to="images/xs/"),
22+
),
23+
]

nxtbn/filemanager/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ class Image(AbstractBaseModel):
88
created_by = models.ForeignKey(User, on_delete=models.PROTECT, related_name='image_created')
99
last_modified_by = models.ForeignKey(User, on_delete=models.PROTECT, related_name='image_modified', null=True, blank=True)
1010
name = models.CharField(max_length=255)
11-
image = models.ImageField()
12-
image_xs = models.ImageField(null=True, blank=True)
11+
image = models.ImageField(upload_to='images/')
12+
image_xs = models.ImageField(upload_to='images/xs/', null=True, blank=True)
1313
image_alt_text = models.CharField(max_length=255)
1414

1515
def get_image_url(self,request):

nxtbn/order/__init__.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,14 @@ class OrderStockReservationStatus(models.TextChoices):
147147
OrderReservationStatus is an enumeration of possible statuses for an order reservation.
148148
149149
Attributes:
150-
RESERVED: The stock has been reserved for the order.
151-
RELEASED: The stock reservation has been released.
152-
INSUFFICIENT_STOCK: The stock is insufficient to fulfill the order.
153-
NOT_RESERVED: The stock has not been reserved for the order.
150+
RESERVED: Stock has been reserved for the order.
151+
RELEASED: Stock reservation has been released.
152+
FAILED: Stock reservation has failed due to insufficient stock.
153+
NOT_REQUIRED: Stock reservation is not required.
154+
DISPATCHED: Stock has been dispatched for the order.
154155
"""
155156
RESERVED = 'RESERVED', _('Reserved')
156157
RELEASED = 'RELEASED', _('Released') # Re-adjust stock after order is cancelled
157158
FAILED = 'FAILED', _('Failed') # If failed, that is mean stock is insufficient to fulfill the order, have to fixed it before proceed
158-
NOT_RESERVED = 'NOT_RESERVED', _('Not Reserved') # DO NOTHING IF NOT RESERVED, NO NEED VALIDATION
159+
NOT_REQUIRED = 'NOT_REQUIRED', _('Not Required') # DO NOTHING IF NOT REQUIRED, NO NEED VALIDATION
159160
DISPATCHED = 'DISPATCHED', _('Dispatched')
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Generated by Django 4.2.11 on 2025-02-21 09:22
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("order", "0039_alter_order_options"),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name="order",
15+
name="reservation_status",
16+
field=models.CharField(
17+
choices=[
18+
("RESERVED", "Reserved"),
19+
("RELEASED", "Released"),
20+
("FAILED", "Failed"),
21+
("NOT_REQUIRED", "Not Required"),
22+
("DISPATCHED", "Dispatched"),
23+
],
24+
default="NOT_REQUIRED",
25+
max_length=20,
26+
),
27+
),
28+
]

nxtbn/order/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ class Order(MonetaryMixin, AbstractBaseUUIDModel):
241241
help_text="Preferred payment method for this order. The actual payment method may differ when the order is initiated or paid."
242242
)
243243
reservation_status = models.CharField(
244-
default=OrderStockReservationStatus.NOT_RESERVED,
244+
default=OrderStockReservationStatus.NOT_REQUIRED,
245245
max_length=20,
246246
choices=OrderStockReservationStatus.choices
247247
)

nxtbn/product/admin_filters.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,27 @@ class ProductFilter(filters.FilterSet):
1818
variant_alias = filters.CharFilter(field_name='variants__alias', lookup_expr='icontains')
1919
variant_sku = filters.CharFilter(field_name='variants__sku', lookup_expr='icontains')
2020
variant_name = filters.CharFilter(field_name='variants__name', lookup_expr='icontains')
21-
title = filters.CharFilter(field_name='name', lookup_expr='icontains')
22-
2321

2422
class Meta:
2523
model = Product
26-
fields = ('name', 'summary', 'description', 'category', 'category_name', 'supplier', 'brand','related_to', 'search', 'collection')
24+
fields = (
25+
'id',
26+
'alias',
27+
'name',
28+
'summary',
29+
'description',
30+
'category',
31+
'category_name',
32+
'supplier',
33+
'brand',
34+
'related_to',
35+
'search',
36+
'collection',
37+
'variant_id',
38+
'variant_alias',
39+
'variant_sku',
40+
'variant_name'
41+
)
2742

2843
def filter_search(self, queryset, name, value):
2944
"""

nxtbn/product/models.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,12 @@ def product_thumbnail_xs(self, request):
232232
image_url = first_image.image_xs.url
233233
full_url = request.build_absolute_uri(image_url)
234234
return full_url
235+
236+
if first_image and hasattr(first_image, 'image') and first_image.image:
237+
image_url = first_image.image.url
238+
full_url = request.build_absolute_uri(image_url)
239+
return full_url
240+
235241
return None
236242

237243

@@ -394,7 +400,7 @@ def variant_thumbnail(self, request):
394400
if first_image and hasattr(first_image, 'image') and first_image.image:
395401
image_url = first_image.image.url
396402
full_url = request.build_absolute_uri(image_url)
397-
return
403+
return full_url
398404
return None
399405

400406
def variant_thumbnail_xs(self, request):
@@ -409,10 +415,10 @@ def variant_thumbnail_xs(self, request):
409415

410416
if self.product.images.exists():
411417
first_image = self.product.images.first()
412-
if first_image and hasattr(first_image, 'image_xs') and first_image.image_xs:
413-
image_url = first_image.image_xs.url
418+
if first_image and hasattr(first_image, 'image') and first_image.image:
419+
image_url = first_image.image.url
414420
full_url = request.build_absolute_uri(image_url)
415-
return
421+
return full_url
416422
return None
417423

418424

nxtbn/warehouse/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def release_stock(order):
106106
return order
107107

108108
def deduct_reservation_on_packed_for_dispatch(order):
109-
if order.reservation_status == OrderStockReservationStatus.NOT_RESERVED: # As not reservable, nothing to do
109+
if order.reservation_status == OrderStockReservationStatus.NOT_REQUIRED: # As not reservable, nothing to do
110110
return None
111111

112112
if order.reservation_status == OrderStockReservationStatus.FAILED:

0 commit comments

Comments
 (0)