almost finished with the addresses
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
from rest_framework import serializers
|
||||
from ..models import Address, City, Province
|
||||
|
||||
|
||||
class ProvinceSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Province
|
||||
fields = ["province_id", "province_name"]
|
||||
|
||||
|
||||
class CitySerializer(serializers.ModelSerializer):
|
||||
province_id = serializers.CharField(source="province.province_id")
|
||||
class Meta:
|
||||
model = City
|
||||
fields = ["city_local_id", "city_name", "province_id"]
|
||||
|
||||
class AddressSerializer(serializers.ModelSerializer):
|
||||
province_name = serializers.CharField(source="province.province_name", read_only=True)
|
||||
city_name = serializers.CharField(source="city.city_name", read_only=True)
|
||||
class Meta:
|
||||
model = Address
|
||||
fields = ["province", "province_name", "city", "city_name", "postal_code", "address_detail", "user", "created_at", "updated_at"]
|
||||
read_only_fields = ["user", "province_name", "city_name", "created_at", "updated_at"]
|
||||
|
||||
def to_representation(self, instance):
|
||||
rep = super().to_representation(instance)
|
||||
request = self.context.get("request")
|
||||
if not request.parser_context.get("kwargs"):
|
||||
rep.pop("province_name")
|
||||
rep.pop("city_name")
|
||||
rep.pop("created_at")
|
||||
rep.pop("updated_at")
|
||||
|
||||
return rep
|
||||
@@ -0,0 +1,15 @@
|
||||
from django.urls import path
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from . import views
|
||||
|
||||
app_name = "address-api-urls"
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register("", views.AddressViewSet, basename="address-viewset")
|
||||
|
||||
urlpatterns = [
|
||||
path("province/", views.ProvinceListAPIView.as_view(), name="get-provinces"),
|
||||
path("province/<int:province_pk>/cities/", views.CityListAPIView.as_view(), name="get-cities")
|
||||
]
|
||||
|
||||
urlpatterns += router.urls
|
||||
@@ -0,0 +1,36 @@
|
||||
from rest_framework.generics import ListAPIView
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from . import serializers
|
||||
from ..models import Province, City, Address
|
||||
|
||||
class ProvinceListAPIView(ListAPIView):
|
||||
serializer_class = serializers.ProvinceSerializer
|
||||
queryset = Province.objects.all()
|
||||
|
||||
# def get(self, request, *args, **kwargs):
|
||||
# return Response()
|
||||
|
||||
|
||||
class CityListAPIView(ListAPIView):
|
||||
serializer_class = serializers.CitySerializer
|
||||
|
||||
def get_queryset(self):
|
||||
province_id = self.kwargs["province_pk"]
|
||||
return City.objects.filter(province_id=province_id)
|
||||
|
||||
|
||||
|
||||
class AddressViewSet(viewsets.ModelViewSet):
|
||||
permission_classes = [IsAuthenticated,]
|
||||
serializer_class = serializers.AddressSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
user_id = self.request.user.id
|
||||
return Address.objects.filter(user_id=user_id)
|
||||
|
||||
def perform_create(self, serializer):
|
||||
serializer.save(
|
||||
user_id=self.request.user.id
|
||||
)
|
||||
return super().perform_create(serializer)
|
||||
Reference in New Issue
Block a user