mirror of
https://github.com/andwati/store-api.git
synced 2026-10-18 01:12:52 +00:00
completed brand API routes
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# Generated by Django 5.0.2 on 2024-03-03 01:24
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = []
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Brand",
|
||||
fields=[
|
||||
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
|
||||
("name", models.CharField(max_length=100)),
|
||||
("description", models.TextField(blank=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Supplier",
|
||||
fields=[
|
||||
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
|
||||
("name", models.CharField(max_length=100)),
|
||||
("email", models.EmailField(max_length=254)),
|
||||
("phone", models.CharField(max_length=20)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Product",
|
||||
fields=[
|
||||
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
|
||||
("name", models.CharField(max_length=100)),
|
||||
("description", models.TextField()),
|
||||
("sku", models.CharField(max_length=50)),
|
||||
("price", models.DecimalField(decimal_places=2, max_digits=10)),
|
||||
("quantity", models.IntegerField(default=0)),
|
||||
("barcode", models.CharField(blank=True, max_length=100, null=True)),
|
||||
("brand", models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to="products.brand")),
|
||||
(
|
||||
"supplier",
|
||||
models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to="products.supplier"),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,21 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from .models import Brand, Product, Supplier
|
||||
|
||||
|
||||
class BrandSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Brand
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class SupplierSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Supplier
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class ProductSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Product
|
||||
fields = "__all__"
|
||||
@@ -0,0 +1,8 @@
|
||||
from django.urls import include, path
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
from .views import BrandViewSet
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register(r"Brands", BrandViewSet)
|
||||
urlpatterns = router.urls
|
||||
+48
-2
@@ -1,3 +1,49 @@
|
||||
from django.shortcuts import render
|
||||
from rest_framework import status, viewsets
|
||||
from rest_framework.response import Response
|
||||
|
||||
# Create your views here.
|
||||
from .models import Brand, Product, Supplier
|
||||
from .serializers import BrandSerializer, ProductSerializer, SupplierSerializer
|
||||
|
||||
|
||||
class BrandViewSet(viewsets.ModelViewSet):
|
||||
queryset = Brand.objects.all()
|
||||
serializer_class = BrandSerializer
|
||||
|
||||
def list(self, request, *args, **kwargs):
|
||||
data = list(Brand.objects.all().values())
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
data = list(Brand.objects.filter(id=kwargs["pk"]).values())
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
brand_serializer_data = BrandSerializer(data=request.data)
|
||||
if brand_serializer_data.is_valid():
|
||||
brand_serializer_data.save()
|
||||
status_code = status.HTTP_201_CREATED
|
||||
return Response({"message": "Brand added successfully"}, status=status_code)
|
||||
else:
|
||||
status_code = status.HTTP_400_BAD_REQUEST
|
||||
return Response({"message": "please fill the details"}, status=status_code)
|
||||
|
||||
def destroy(self, request, *args, **kwargs):
|
||||
brand_data = Brand.objects.filter(id=kwargs["pk"])
|
||||
if brand_data:
|
||||
brand_data.delete()
|
||||
status_code = status.HTTP_201_CREATED
|
||||
return Response({"message": "Brand deleted succesfully"}, status=status_code)
|
||||
else:
|
||||
status_code = status.HTTP_400_BAD_REQUEST
|
||||
return Response({"message": "Brand not found"}, status=status_code)
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
brand_details = Brand.objects.get(id=kwargs["pk"])
|
||||
brand_serializer_data = BrandSerializer(brand_details, data=request, partial=True)
|
||||
if brand_serializer_data.is_valid():
|
||||
brand_serializer_data.save()
|
||||
status_code = status.HTTP_201_CREATED
|
||||
return Response({"message": "Brand updated successfully"}, status=status_code)
|
||||
else:
|
||||
status_code = status.HTTP_400_BAD_REQUEST
|
||||
return Response({"message": "Brand not found"}, status=status)
|
||||
|
||||
Reference in New Issue
Block a user