Skip to content

Instantly share code, notes, and snippets.

@Runinterface
Last active April 27, 2020 21:14
Show Gist options
  • Save Runinterface/e9912aa99691a14d720b90f0b70c631e to your computer and use it in GitHub Desktop.
Save Runinterface/e9912aa99691a14d720b90f0b70c631e to your computer and use it in GitHub Desktop.
from rest_framework import status
from rest_framework.response import Response
from rest_framework.decorators import api_view
from orders.models import Menu, Courier, Order, Reviews, News
from orders.serializers import MenuSerializer, CouriersSerializer, OrderSerializer, OrderStatusSerializer, ReviewsSerializer, NewsSerializer
from rest_registration.models import User
@api_view(['GET', 'POST', 'DELETE', 'PUT'])
def menu(request, pk=None):
if request.method == 'GET':
menu = Menu.objects.all()
serializer = MenuSerializer(menu, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = MenuSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'PUT':
serializer = MenuSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'DELETE':
try:
menu = Menu.objects.get(pk=pk)
except Menu.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
menu.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
@api_view(['GET', 'POST', 'DELETE'])
def courier(request, pk=None):
if request.method == 'GET':
couriers = Courier.objects.all()
serializer = CouriersSerializer(couriers, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = CouriersSerializer(data=request.data)
if serializer.is_valid():
id_user = request.data['user_id']
user = User.objects.get(id=id_user)
user.access_level = 2
user.save()
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'DELETE':
try:
couriers = Courier.objects.get(pk=pk)
profile_id = couriers.user_id
user = User.objects.get(id=profile_id)
user.access_level = 1
user.save()
except Courier.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
couriers.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
@api_view(['GET', 'POST', 'DELETE', 'PUT'])
def order(request, pk=None):
if request.method == 'GET':
if pk:
user_orders = Order.objects.filter(user_id=pk).all()
else:
user_orders = Order.objects.all()
serializer = OrderSerializer(user_orders, many=True)
return Response(serializer.data)
elif request.method in ['POST', 'PUT']:
serializer = OrderSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'DELETE':
try:
orders = Order.objects.get(pk=pk)
except Order.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
orders.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
@api_view(['POST'])
def order_status(request, pk=None):
serializer = OrderStatusSerializer(data=request.data)
if serializer.is_valid():
id_order = request.data['id']
new_status = request.data['status']
order = Order.objects.get(id=id_order)
order.status = new_status
order.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['GET', 'POST', 'DELETE'])
def reviews(request, pk=None):
if request.method == 'GET':
reviews = Reviews.objects.all()
serializer = ReviewsSerializer(reviews, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = ReviewsSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'DELETE':
try:
reviews = Reviews.objects.get(pk=pk)
except Reviews.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
reviews.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
@api_view(['GET', 'POST', 'DELETE'])
def news(request, pk=None):
if request.method == 'GET':
news = News.objects.all()
serializer = NewsSerializer(news, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = NewsSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'DELETE':
try:
news = News.objects.get(pk=pk)
print(pk)
except News.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
news.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment