Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 12 additions & 31 deletions commerce/controllers.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
from ninja import Router
from pydantic import UUID4

from commerce.models import Product, Category, City, Vendor, Item
from commerce.schemas import MessageOut, ProductOut, CitiesOut, CitySchema, VendorOut, ItemOut, ItemSchema, ItemCreate
from commerce.models import Address, Product, Category, City, Vendor, Item
from commerce.schemas import MessageOut, ProductOut, CitiesOut, CitySchema, VendorOut, ItemOut, ItemSchema, ItemCreate,ProductManualSchemaOut

products_controller = Router(tags=['products'])
address_controller = Router(tags=['addresses'])
Expand All @@ -20,37 +20,15 @@ def list_vendors(request):
return Vendor.objects.all()


@products_controller.get('', response={
200: List[ProductOut],
404: MessageOut
})
def list_products(
request, *,
q: str = None,
price_from: int = None,
price_to: int = None,
vendor=None,
):
products_qs = Product.objects.filter(is_active=True).select_related('merchant', 'vendor', 'category', 'label')

if not products_qs:
return 404, {'detail': 'No products found'}

if q:
products_qs = products_qs.filter(
Q(name__icontains=q) | Q(description__icontains=q)
)

if price_from:
products_qs = products_qs.filter(discounted_price__gte=price_from)

if price_to:
products_qs = products_qs.filter(discounted_price__lte=price_to)
@products_controller.get('')
def all_prodect(request):
return list(Product.objects.values().all())

if vendor:
products_qs = products_qs.filter(vendor_id=vendor)
@address_controller.get('')
def all_address(request):
return list(Address.objects.values().all())

return products_qs



"""
Expand Down Expand Up @@ -220,3 +198,6 @@ def delete_item(request, id: UUID4):
item.delete()

return 204, {'detail': 'Item deleted!'}



1 change: 0 additions & 1 deletion commerce/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import uuid

from PIL import Image
from django.contrib.auth import get_user_model
from django.db import models

Expand Down
19 changes: 19 additions & 0 deletions commerce/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,25 @@ class Config:
]



class ProductManualSchemaOut(Schema):
name:str
description:str
qty:float
price:float
discounted_price:float
vendor: VendorOut
label: LabelOut
merchant: MerchantOut
category: CategoryOut
weight:float = None
width:float = None
length:float
cost:float
height : float = None
discounted_price:float


# class ProductManualSchemaOut(Schema):
# pass

Expand Down