diff --git a/users/models.py b/users/models.py index ee43598..92b0806 100644 --- a/users/models.py +++ b/users/models.py @@ -4,6 +4,7 @@ from django.contrib.auth.models import PermissionsMixin from django.contrib.auth.base_user import AbstractBaseUser +import django.utils from .managers import UserManager @@ -56,7 +57,40 @@ def get_short_name(self): - +class Address(models.Model): + #User_id #Foreign key from the user model + locality=models.CharField(max_length=50) + city=models.CharField(max_length=50) + district=models.CharField(max_length=50) + state=models.CharField(max_length=50) + pincode=models.CharField(max_length=12) + latitude=models.DecimalField(max_digits=9,decimal_places=6) + longitude=models.DecimalField(max_digits=9,decimal_places=6) + +class Coupon(models.Model): + #coupon_id + discount=models.DecimalField(max_digits=5,decimal_places=2,default=0.00) + expiry_date=models.DateTimeField(default=django.utils.timezone.now()) + max=models.DecimalField(max_digits=5,decimal_places=2,default=0.00) + +class Order(models.Model): + #Order_id + #User_id #ForeignKey from the user model + #transaction id in order is avoided since it will create name error,since transaction class defined below order class + coupon=models.ForeignKey(Coupon,on_delete=models.PROTECT) + #shop_id #foreign key from the shop model + #Rider_id #ForeignKey from the rider model + time_stamp_order=models.DateField(auto_now=True,editable=False,null=False,blank=False) + +class Transaction(models.Model): + #transaction_id + #User_id #Foreign key to the user model + order=models.OneToOneField(Order,on_delete=models.CASCADE) + time_stamp_transaction=models.DateField(auto_now=True) + amount=models.DecimalField(max_digits=10,decimal_places=2,default=0.00) + + + diff --git a/users/serializers.py b/users/serializers.py index b662245..94514a8 100644 --- a/users/serializers.py +++ b/users/serializers.py @@ -26,7 +26,7 @@ def custom_signup(self, request, user): user.phone= self.validated_data.get('phone', '') user.user_type = self.validated_data.get('user_type', '') user.save(update_fields=['first_name','last_name','user_type', 'phone']) - + class CustomUserDetailsSerializer(serializers.ModelSerializer): class Meta: @@ -34,8 +34,33 @@ class Meta: fields = ('first_name','last_name','phone','user_type') + +class AddressSerializer(serializers.ModelSerializer): + class Meta: + model=Address + fields=['locality','city','district','state','pincode','latitude','longitude'] + +class CouponSerializer(serializers.ModelSerializer): + class Meta: + model=Coupon + fields=['discount','expiry_date','max'] + +class OrderSerializer(serializers.ModelSerializer): + class Meta: + model=Order + fields=['coupon','time_stamp_order'] + +class TransactionSerializer(serializers.ModelSerializer): + class Meta: + model=Transaction + fields=['order','amount','time_stamp_transaction'] + + + + + class ProductSerializer(serializers.ModelSerializer): class Meta: model = Product - fields = ('__all__') \ No newline at end of file + fields = ('__all__') diff --git a/users/urls.py b/users/urls.py index 6d4ca53..e9a1796 100644 --- a/users/urls.py +++ b/users/urls.py @@ -1,3 +1,4 @@ +from django.contrib import admin from django.urls import path, include from . import views from rest_framework import routers @@ -5,4 +6,12 @@ router = routers.DefaultRouter() router.register(r'products', views.ProductViewset) +router.register(r'Address',views.AddressViewSet) + +router.register(r'Coupon',views.CouponViewset) + +router.register(r'Order',views.OrderViewset) + +router.register(r'Transaction',views.TransactionViewSet) + urlpatterns = router.urls diff --git a/users/views.py b/users/views.py index e6b1c88..3a357d0 100644 --- a/users/views.py +++ b/users/views.py @@ -16,12 +16,39 @@ class CustomRegisterView(RegisterView): serializer_class = CustomRegisterSerializer + +class AddressViewSet(viewsets.ModelViewSet): + queryset=Address.objects.all() + serializer_class=AddressSerializer + + + +class CouponViewset(viewsets.ModelViewSet): + queryset=Coupon.objects.all() + serializer_class=CouponSerializer + + + +class OrderViewset(viewsets.ModelViewSet): + queryset=Order.objects.all() + serializer_class=OrderSerializer + + +class TransactionViewSet(viewsets.ModelViewSet): + queryset=Transaction.objects.all() + serializer_class=TransactionSerializer + + + + + + class ProductFilter(filters.FilterSet): category = filters.CharFilter(lookup_expr='icontains') name = filters.CharFilter(lookup_expr='icontains') -class ProductViewset(viewsets.ModelViewSet): - +class ProductViewset(viewsets.ModelViewSet): + queryset = Product.objects.all() serializer_class = ProductSerializer filter_backends = (filters.DjangoFilterBackend,) @@ -36,4 +63,4 @@ def perform_create(self, serializer): product = Product.objects.filter(category=params['pk']) serializer = ProductSerializer(product, many=True) return Response(serailizer.data) - ''' \ No newline at end of file + '''