Переглянути джерело

Converted API view to model view set and added Address model

master
kj1352 3 роки тому
джерело
коміт
456314e625
5 змінених файлів з 57 додано та 48 видалено
  1. +2
    -2
      client/admin.py
  2. +10
    -3
      client/models.py
  3. +8
    -3
      client/serializers.py
  4. +12
    -6
      client/urls.py
  5. +25
    -34
      client/views.py

+ 2
- 2
client/admin.py Переглянути файл

@@ -1,4 +1,4 @@
from django.contrib import admin
from .models import TaxType, Country, State, City, Client
from .models import TaxType, Country, State, City, Address, Client

admin.site.register([TaxType, Country, State, City, Client])
admin.site.register([TaxType, Country, State, City, Address, Client])

+ 10
- 3
client/models.py Переглянути файл

@@ -32,9 +32,7 @@ class City(models.Model):
return self.name


class Client(models.Model):
name = models.CharField(max_length=30)
profile_picture = models.ImageField(upload_to='client_images', null=True, blank=True)
class Address(models.Model):
city = models.ForeignKey(City, on_delete=models.CASCADE)
address_line1 = models.CharField(max_length=50)
address_line2 = models.CharField(max_length=50)
@@ -42,5 +40,14 @@ class Client(models.Model):
tax_type = models.ForeignKey(TaxType, on_delete=models.CASCADE)
tax_id = models.CharField(max_length=30)

def __str__(self):
return self.address_line1


class Client(models.Model):
name = models.CharField(max_length=30)
profile_picture = models.ImageField(upload_to='client_images', null=True, blank=True)
address = models.ForeignKey(Address, on_delete=models.CASCADE)

def __str__(self):
return self.name

+ 8
- 3
client/serializers.py Переглянути файл

@@ -1,5 +1,5 @@
from rest_framework import serializers
from .models import TaxType, Country, State, City, Client
from .models import TaxType, Country, State, City, Address, Client


class TaxTypeSerializer(serializers.ModelSerializer):
@@ -29,5 +29,10 @@ class CitySerializer(serializers.ModelSerializer):
class ClientSerializer(serializers.ModelSerializer):
class Meta:
model = Client
fields = ['id', 'name', 'profile_picture', 'city', 'address_line1', 'address_line2',
'postal_code', 'tax_type', 'tax_id']
fields = ['id', 'name', 'address']


class AddressSerializer(serializers.ModelSerializer):
class Meta:
model = Address
fields = ['id', 'city', 'address_line1', 'address_line2', 'postal_code', 'tax_type', 'tax_id']

+ 12
- 6
client/urls.py Переглянути файл

@@ -1,10 +1,16 @@
from django.urls import path
from django.urls import path, include
from . import views
from rest_framework import routers


router = routers.DefaultRouter()
router.register(r'tax-types', views.TaxTypeViewSet)
router.register(r'clients', views.ClientViewSet)
router.register(r'address', views.AddressViewSet)
router.register(r'cities', views.CityViewSet)
router.register(r'states', views.StateViewSet)
router.register(r'countries', views.CountryViewSet)

urlpatterns = [
path('tax-types/', views.TaxTypeList.as_view()),
path('countries/', views.CountryList.as_view()),
path('states/', views.StateList.as_view()),
path('cities/', views.CityList.as_view()),
path('clients/', views.ClientList.as_view())
path('', include(router.urls)),
]

+ 25
- 34
client/views.py Переглянути файл

@@ -1,56 +1,47 @@
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.authentication import TokenAuthentication, SessionAuthentication
from .models import TaxType, Country, State, City, Client, Address
from .serializers import TaxTypeSerializer, CountrySerializer, StateSerializer, CitySerializer, ClientSerializer, AddressSerializer
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from .models import TaxType, Country, State, City, Client
from .serializers import TaxTypeSerializer, CountrySerializer, StateSerializer, CitySerializer, ClientSerializer
from rest_framework.authentication import TokenAuthentication, SessionAuthentication


class TaxTypeList(APIView):
class TaxTypeViewSet(viewsets.ReadOnlyModelViewSet):
queryset = TaxType.objects.all()
serializer_class = TaxTypeSerializer
authentication_classes = [TokenAuthentication, SessionAuthentication]
permission_classes = [IsAuthenticated]

def get(self, request):
tax_types = TaxType.objects.all()
serializer = TaxTypeSerializer(tax_types, many=True)
return Response(serializer.data)


class CountryList(APIView):
class CountryViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Country.objects.all()
serializer_class = CountrySerializer
authentication_classes = [TokenAuthentication, SessionAuthentication]
permission_classes = [IsAuthenticated]

def get(self, request):
countries = Country.objects.all()
serializer = CountrySerializer(countries, many=True)
return Response(serializer.data)


class StateList(APIView):
class StateViewSet(viewsets.ReadOnlyModelViewSet):
queryset = State.objects.all()
serializer_class = StateSerializer
authentication_classes = [TokenAuthentication, SessionAuthentication]
permission_classes = [IsAuthenticated]

def get(self, request):
states = State.objects.all()
serializer = StateSerializer(states, many=True)
return Response(serializer.data)


class CityList(APIView):
class CityViewSet(viewsets.ReadOnlyModelViewSet):
queryset = City.objects.all()
serializer_class = CitySerializer
authentication_classes = [TokenAuthentication, SessionAuthentication]
permission_classes = [IsAuthenticated]

def get(self, request):
cities = City.objects.all()
serializer = CitySerializer(cities, many=True)
return Response(serializer.data)


class ClientList(APIView):
class ClientViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Client.objects.all()
serializer_class = ClientSerializer
authentication_classes = [TokenAuthentication, SessionAuthentication]
permission_classes = [IsAuthenticated]

def get(self, request):
clients = Client.objects.all()
serializer = ClientSerializer(clients, many=True)
return Response(serializer.data)

class AddressViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Address.objects.all()
serializer_class = AddressSerializer
authentication_classes = [TokenAuthentication, SessionAuthentication]
permission_classes = [IsAuthenticated]