Skip to content

Commit

Permalink
[GREEN] update field status in venue and add update status view
Browse files Browse the repository at this point in the history
  • Loading branch information
catherineeangel committed Feb 25, 2024
1 parent 21b180b commit d373664
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 7 deletions.
18 changes: 18 additions & 0 deletions venue/migrations/0003_alter_venue_status.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2.9 on 2024-02-25 15:01

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('venue', '0002_alter_photo_image'),
]

operations = [
migrations.AlterField(
model_name='venue',
name='status',
field=models.CharField(choices=[('NONE', 'NONE'), ('PENDING', 'PENDING'), ('WAITLIST', 'WAITLIST'), ('CONFIRMED', 'CONFIRMED'), ('CANCELLED', 'CANCELLED')], default='NONE', max_length=16),
),
]
8 changes: 7 additions & 1 deletion venue/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,13 @@ class Venue(models.Model):
name = models.CharField(max_length=255)
address = models.CharField(max_length=255)
price = models.IntegerField()
status = models.CharField(max_length=255)
status = models.CharField(max_length=16, default='NONE', choices=[
('NONE', 'NONE'),
('PENDING', 'PENDING'),
('WAITLIST', 'WAITLIST'),
('CONFIRMED', 'CONFIRMED'),
('CANCELLED', 'CANCELLED'),
])
contact_name = models.CharField(max_length=255)
contact_phone_number = models.CharField(max_length=15)
event = models.IntegerField()
Expand Down
5 changes: 5 additions & 0 deletions venue/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,8 @@ class VenueSerializer(serializers.ModelSerializer):
class Meta:
model = Venue
fields = '__all__'

class VenueStatusSerializer(serializers.ModelSerializer):
class Meta:
model = Venue
fields = ['status']
2 changes: 2 additions & 0 deletions venue/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
VenueRetrieveUpdateDestroyView,
PhotoCreateView,
PhotoRetrieveUpdateDestroyView,
VenueStatusUpdateAPIView
)

urlpatterns = [
path('venues/', VenueListCreateView.as_view(), name='venue-list-create'),
path('venues/<int:pk>/', VenueRetrieveUpdateDestroyView.as_view(), name='venue-retrieve-update-destroy'),
path('venues/<int:pk>/status/', VenueStatusUpdateAPIView.as_view(), name='venue-status-update'),
path('venues/event/<int:event_id>/', VenueEventListView.as_view(), name='venue-event-list'),
path('photos/', PhotoCreateView.as_view(), name='photo-create'),
path('photos/<int:pk>/', PhotoRetrieveUpdateDestroyView.as_view(), name='photo-retrieve-update-destroy'),
Expand Down
23 changes: 17 additions & 6 deletions venue/views.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
from django.shortcuts import render

# Create your views here.

from rest_framework import status
from rest_framework import generics
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Venue, Photo
from .serializers import VenueSerializer, PhotoSerializer

from .serializers import VenueSerializer, PhotoSerializer, VenueStatusSerializer
from rest_framework.permissions import IsAuthenticated

class VenueListCreateView(generics.ListCreateAPIView):
queryset = Venue.objects.all()
Expand All @@ -31,3 +28,17 @@ class PhotoCreateView(generics.CreateAPIView):
class PhotoRetrieveUpdateDestroyView(generics.RetrieveUpdateDestroyAPIView):
queryset = Photo.objects.all()
serializer_class = PhotoSerializer

class VenueStatusUpdateAPIView(APIView):
permission_classes = [IsAuthenticated]
def patch(self, request, pk):
try:
venue = Venue.objects.get(pk=pk)
except Venue.DoesNotExist:
return Response({'message': 'Venue not found'}, status=status.HTTP_404_NOT_FOUND)

serializer = VenueStatusSerializer(venue, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

0 comments on commit d373664

Please sign in to comment.