address complete
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 5.1.2 on 2024-12-14 10:38
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('account', '0005_remove_user_groups_remove_user_user_permissions'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='UserAddressModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=30)),
|
||||
('address', models.TextField()),
|
||||
('postal_code', models.CharField(max_length=10)),
|
||||
('phone', models.CharField(max_length=11)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -98,3 +98,12 @@ class User(AbstractBaseUser, PermissionsMixin):
|
||||
return self.email
|
||||
|
||||
|
||||
class UserAddressModel(models.Model):
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
name = models.CharField(max_length=30)
|
||||
address = models.TextField()
|
||||
postal_code = models.CharField(max_length=10)
|
||||
phone = models.CharField(max_length=11)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.user.phone}, {self.name}"
|
||||
@@ -9,3 +9,15 @@ class ProfileSerializer(serializers.ModelSerializer):
|
||||
model = User
|
||||
fields = ['first_name', 'last_name', 'email', 'profile_photo', 'phone']
|
||||
read_only_fields = ("phone",)
|
||||
|
||||
|
||||
class UserAddressSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = UserAddressModel
|
||||
fields = ['id', 'name', 'address', 'postal_code', 'phone']
|
||||
|
||||
def validate(self, data):
|
||||
user = self.context['request'].user
|
||||
if not user.is_authenticated:
|
||||
raise serializers.ValidationError("You must be logged in to perform this action.")
|
||||
return data
|
||||
@@ -3,4 +3,10 @@ from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('profile', views.ProfileView.as_view()),
|
||||
path('address/create', views.CreateAddressView.as_view(), name='create-address'),
|
||||
path('address/edit/<int:pk>', views.EditAddressView.as_view(), name='edit-address'),
|
||||
path('address/delete/<int:pk>', views.DeleteAddressView.as_view(), name='delete-address'),
|
||||
path('address/list', views.GetUserAddressesView.as_view(), name='list-addresses'),
|
||||
path('address/<int:pk>', views.GetIDUserAddressView.as_view(), name='get-ID-address'),
|
||||
|
||||
]
|
||||
@@ -1,13 +1,14 @@
|
||||
from django.shortcuts import render
|
||||
from rest_framework.views import APIView
|
||||
from .serializers import ProfileSerializer
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework import status
|
||||
from rest_framework import generics, permissions, status
|
||||
from rest_framework.response import Response
|
||||
from .serializers import ProfileSerializer, UserAddressSerializer
|
||||
from .models import UserAddressModel
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
class ProfileView(APIView):
|
||||
serializer_class = ProfileSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
|
||||
def get(self, request):
|
||||
user_ser = self.serializer_class(instance=request.user)
|
||||
return Response(user_ser.data, status=status.HTTP_200_OK)
|
||||
@@ -19,4 +20,41 @@ class ProfileView(APIView):
|
||||
if user_ser.is_valid():
|
||||
user_ser.save()
|
||||
return Response(user_ser.data)
|
||||
return Response(user_ser.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response(user_ser.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
class CreateAddressView(generics.CreateAPIView):
|
||||
queryset = UserAddressModel.objects.all()
|
||||
serializer_class = UserAddressSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def perform_create(self, serializer):
|
||||
serializer.save(user=self.request.user)
|
||||
|
||||
class EditAddressView(generics.UpdateAPIView):
|
||||
queryset = UserAddressModel.objects.all()
|
||||
serializer_class = UserAddressSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
return UserAddressModel.objects.filter(user=self.request.user)
|
||||
|
||||
class DeleteAddressView(generics.DestroyAPIView):
|
||||
queryset = UserAddressModel.objects.all()
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
return UserAddressModel.objects.filter(user=self.request.user)
|
||||
|
||||
class GetUserAddressesView(generics.ListAPIView):
|
||||
serializer_class = UserAddressSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
return UserAddressModel.objects.filter(user=self.request.user)
|
||||
|
||||
class GetIDUserAddressView(generics.RetrieveAPIView):
|
||||
serializer_class = UserAddressSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
return UserAddressModel.objects.filter(user=self.request.user)
|
||||
Reference in New Issue
Block a user