42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from django.shortcuts import get_object_or_404
|
|
|
|
from api.serializers.category import CategorySerializer
|
|
from api.views.base import BaseView
|
|
from web.models.category import Category
|
|
|
|
|
|
class CategoryView(BaseView):
|
|
SERIALIZER = CategorySerializer
|
|
|
|
def get(self, request, category_id=None):
|
|
if category_id:
|
|
category = get_object_or_404(Category, pk=category_id)
|
|
return self._build_response(category)
|
|
else:
|
|
categories = Category.objects.filter(active=True).all()
|
|
return self._build_multi_response(categories)
|
|
|
|
def post(self, request):
|
|
data = request.POST
|
|
category = Category(
|
|
name=data.get('name'),
|
|
description=data.get('description')
|
|
)
|
|
|
|
category.save()
|
|
return self._build_response(category)
|
|
|
|
def put(self, request, category_id):
|
|
data = request.POST
|
|
|
|
category = get_object_or_404(Category, pk=category_id)
|
|
|
|
category.name = data.get('name', category.name)
|
|
category.description = data.get('description', category.description)
|
|
return self._build_response(category)
|
|
|
|
def delete(self, request, category_id):
|
|
category = get_object_or_404(Category, pk=category_id)
|
|
category.active = False
|
|
category.save()
|
|
return self._build_response(category)
|