From 0c81e1a826b57dddf4364b99adf605d975a5374d Mon Sep 17 00:00:00 2001 From: Rahmaaljawadi <90490608+Rahmaaljawadi@users.noreply.github.com> Date: Tue, 2 Nov 2021 23:11:07 +0300 Subject: [PATCH 1/2] task44 --- manage.py | 161 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 139 insertions(+), 22 deletions(-) diff --git a/manage.py b/manage.py index 8e7ac79..f396b96 100755 --- a/manage.py +++ b/manage.py @@ -1,22 +1,139 @@ -#!/usr/bin/env python -"""Django's command-line utility for administrative tasks.""" -import os -import sys - - -def main(): - """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) - - -if __name__ == '__main__': - main() +from ninja import Router +from pydantic import UUID4 + +from commerce.models import Address, Product, Category, City, Vendor, Item, Order, OrderStatus +from commerce.schemas import AddressSchema, AddressesOut, CheckoutSchema, MessageOut, ProductOut, CitiesOut, CitySchema, VendorOut, ItemOut, ItemSchema, ItemCreate + +products_controller = Router(tags=['products']) +address_controller = Router(tags=['addresses']) +vendor_controller = Router(tags=['vendors']) +order_controller = Router(tags=['orders']) +city_controller = Router(tags=['cities']) + + +@vendor_controller.get('', response=List[VendorOut]) + def list_products( +""" + + +# @address_controller.get('') +# def list_addresses(request): +# pass + + +# @products_controller.get('categories', response=List[CategoryOut]) +# def list_categories(request): +# return Category.objects.all() + + +@city_controller.get('cities', response={ + 200: List[CitiesOut], + 404: MessageOut +}) + def list_cities(request): + return 404, {'detail': 'No cities found'} + + +@city_controller.get('cities/{id}', response={ + 200: CitiesOut, + 404: MessageOut +}) +def retrieve_city(request, id: UUID4): + return get_object_or_404(City, id=id) + + +@city_controller.post('cities', response={ + 201: CitiesOut, + 400: MessageOut +}) + def create_city(request, city_in: CitySchema): + return 201, city + + +@city_controller.put('cities/{id}', response={ + 200: CitiesOut, + 400: MessageOut +}) +def update_city(request, id: UUID4, city_in: CitySchema): + return 200, city + + +@city_controller.delete('cities/{id}', response={ + 204: MessageOut +}) +def delete_city(request, id: UUID4): + def create_order(request): + order_qs.save() + + return {'detail': 'order created successfully'} + + +@order_controller.post('/orders/item/{id}/increase-quantity', response={ + 200: MessageOut, +}) +def increase_item_quantity(request, id: UUID4): + item = get_object_or_404(Item, id=id, user=User.objects.first()) + item.item_qty += 1 + item.save() + + return 200, {'detail': 'Item quantity increased successfully!'} + + + +@address_controller.get('addresses', response={ + 200: List[AddressesOut], + 404: MessageOut +}) +def list_addresses(request): + addresses_qs = Address.objects.all() + + if addresses_qs: + return addresses_qs + + return 404, {'detail': 'No addresses found'} + + +@address_controller.get('addresses/{id}', response={ + 200: AddressesOut, + 404: MessageOut +}) +def retrieve_address(request, id: UUID4): + return get_object_or_404(Address, id=id) + + +@address_controller.post('addresses', response={ + 200: MessageOut, + 400: MessageOut +}) +def create_address(request, address_in: AddressSchema): + Address.objects.create(**address_in.dict() , user=User.objects.first()) + return 200, {'detail': 'Added successfully'} + + +@address_controller.put('addresses/{id}', response={ + 200: AddressSchema, + 400: MessageOut +}) +def update_address(request, id: UUID4, address_in: AddressSchema): + address = get_object_or_404(Address, id=id) + for key, value in address_in.items(): + setattr(address, key, value) + return 200, address + + +@address_controller.delete('addresses/{id}', response={ + 204: MessageOut +}) +def delete_address(request, id: UUID4): + address = get_object_or_404(Address, id=id) + address.delete() + return 204, {'detail': ''} + + +@order_controller.put('/api/orders/checkout/{id}', response=MessageOut) + +def checkout(request, id: UUID4, checkout_in: CheckoutSchema): + order = get_object_or_404(Order, id=id) + for key, value in checkout_in.items(): + setattr(order, key, value) + return {'detail': 'order checkout successfully'} From b6be00626c91fd6f45e207fa0a67b7bb32c2139e Mon Sep 17 00:00:00 2001 From: Rahmaaljawadi <90490608+Rahmaaljawadi@users.noreply.github.com> Date: Tue, 2 Nov 2021 23:11:51 +0300 Subject: [PATCH 2/2] sechma --- manage.py | 151 ++++++++++-------------------------------------------- 1 file changed, 26 insertions(+), 125 deletions(-) diff --git a/manage.py b/manage.py index f396b96..11e7ce1 100755 --- a/manage.py +++ b/manage.py @@ -1,139 +1,40 @@ -from ninja import Router -from pydantic import UUID4 - -from commerce.models import Address, Product, Category, City, Vendor, Item, Order, OrderStatus -from commerce.schemas import AddressSchema, AddressesOut, CheckoutSchema, MessageOut, ProductOut, CitiesOut, CitySchema, VendorOut, ItemOut, ItemSchema, ItemCreate - -products_controller = Router(tags=['products']) -address_controller = Router(tags=['addresses']) -vendor_controller = Router(tags=['vendors']) -order_controller = Router(tags=['orders']) -city_controller = Router(tags=['cities']) - - -@vendor_controller.get('', response=List[VendorOut]) - def list_products( -""" - - -# @address_controller.get('') -# def list_addresses(request): -# pass - - -# @products_controller.get('categories', response=List[CategoryOut]) -# def list_categories(request): -# return Category.objects.all() - - -@city_controller.get('cities', response={ - 200: List[CitiesOut], - 404: MessageOut -}) - def list_cities(request): - return 404, {'detail': 'No cities found'} - - -@city_controller.get('cities/{id}', response={ - 200: CitiesOut, - 404: MessageOut -}) -def retrieve_city(request, id: UUID4): - return get_object_or_404(City, id=id) +from os import name +from typing import List +from django.db import models +from ninja import ModelSchema, Schema +from ninja.orm import create_schema +from pydantic import UUID4 +# from pydantic.main import Model -@city_controller.post('cities', response={ - 201: CitiesOut, - 400: MessageOut -}) - def create_city(request, city_in: CitySchema): - return 201, city - - -@city_controller.put('cities/{id}', response={ - 200: CitiesOut, - 400: MessageOut -}) -def update_city(request, id: UUID4, city_in: CitySchema): - return 200, city - - -@city_controller.delete('cities/{id}', response={ - 204: MessageOut -}) -def delete_city(request, id: UUID4): - def create_order(request): - order_qs.save() - - return {'detail': 'order created successfully'} - - -@order_controller.post('/orders/item/{id}/increase-quantity', response={ - 200: MessageOut, -}) -def increase_item_quantity(request, id: UUID4): - item = get_object_or_404(Item, id=id, user=User.objects.first()) - item.item_qty += 1 - item.save() - - return 200, {'detail': 'Item quantity increased successfully!'} - - - -@address_controller.get('addresses', response={ - 200: List[AddressesOut], - 404: MessageOut -}) -def list_addresses(request): - addresses_qs = Address.objects.all() - - if addresses_qs: - return addresses_qs +from commerce.models import Address, OrderStatus, Product, Merchant - return 404, {'detail': 'No addresses found'} +class MessageOut(Schema): + class CategoryOut(UUIDSchema): + children: List['CategoryOut'] = None -@address_controller.get('addresses/{id}', response={ - 200: AddressesOut, - 404: MessageOut -}) -def retrieve_address(request, id: UUID4): - return get_object_or_404(Address, id=id) +CategoryOut.update_forward_refs() -@address_controller.post('addresses', response={ - 200: MessageOut, - 400: MessageOut -}) -def create_address(request, address_in: AddressSchema): - Address.objects.create(**address_in.dict() , user=User.objects.first()) - return 200, {'detail': 'Added successfully'} +class ProductOut(ModelSchema): +class ItemOut(UUIDSchema, ItemSchema): + pass -@address_controller.put('addresses/{id}', response={ - 200: AddressSchema, - 400: MessageOut -}) -def update_address(request, id: UUID4, address_in: AddressSchema): - address = get_object_or_404(Address, id=id) - for key, value in address_in.items(): - setattr(address, key, value) - return 200, address +class AddressSchema(Schema): + work_address:str + address1:str + address2:str + phone:str + city_id:UUID4 -@address_controller.delete('addresses/{id}', response={ - 204: MessageOut -}) -def delete_address(request, id: UUID4): - address = get_object_or_404(Address, id=id) - address.delete() - return 204, {'detail': ''} +class addressOut(AddressSchema): + pass -@order_controller.put('/api/orders/checkout/{id}', response=MessageOut) +class OrderSchema(Schema): -def checkout(request, id: UUID4, checkout_in: CheckoutSchema): - order = get_object_or_404(Order, id=id) - for key, value in checkout_in.items(): - setattr(order, key, value) - return {'detail': 'order checkout successfully'} + note:str + address:addressOut