adding tag and category
This commit is contained in:
parent
29da461a53
commit
5448fd9d3c
12 changed files with 148 additions and 3 deletions
12
api/serializers/category.py
Normal file
12
api/serializers/category.py
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
from rest_framework import serializers
|
||||
from web.models.category import Category
|
||||
|
||||
|
||||
class CategorySerializer(serializers.ModelSerializer):
|
||||
# to_representation(self, instance) if needed
|
||||
# fk = Serializer()
|
||||
|
||||
class Meta:
|
||||
model = Category
|
||||
fields = '__all__'
|
||||
|
||||
12
api/serializers/tag.py
Normal file
12
api/serializers/tag.py
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
from rest_framework import serializers
|
||||
from web.models.tag import Tag
|
||||
|
||||
|
||||
class TagSerializer(serializers.ModelSerializer):
|
||||
# to_representation(self, instance) if needed
|
||||
# fk = Serializer()
|
||||
|
||||
class Meta:
|
||||
model = Tag
|
||||
fields = '__all__'
|
||||
|
||||
|
|
@ -11,3 +11,13 @@ class BaseView(APIView):
|
|||
response = Response()
|
||||
response.data = model_serializer.data
|
||||
return response
|
||||
|
||||
def _build_multi_response(self, data):
|
||||
serialized_data = []
|
||||
for d in data:
|
||||
serializer = self.SERIALIZER(data)
|
||||
serialized_data.append(serializer.data)
|
||||
|
||||
response = Response()
|
||||
response.data = serialized_data
|
||||
return response
|
||||
|
|
|
|||
42
api/views/category.py
Normal file
42
api/views/category.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
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)
|
||||
40
api/views/tag.py
Normal file
40
api/views/tag.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from api.serializers.tag import TagSerializer
|
||||
from api.views.base import BaseView
|
||||
from web.models.tag import Tag
|
||||
|
||||
|
||||
class TagView(BaseView):
|
||||
SERIALIZER = TagSerializer
|
||||
|
||||
def get(self, request, tag_id=None):
|
||||
if tag_id:
|
||||
tag = get_object_or_404(Tag, pk=tag_id)
|
||||
return self._build_response(tag)
|
||||
else:
|
||||
tags = Tag.objects.filter(active=True).all()
|
||||
return self._build_multi_response(tags)
|
||||
|
||||
def post(self, request):
|
||||
data = request.POST
|
||||
tag = Tag(
|
||||
name=data.get('name'),
|
||||
)
|
||||
|
||||
tag.save()
|
||||
return self._build_response(tag)
|
||||
|
||||
def put(self, request, tag_id):
|
||||
data = request.POST
|
||||
|
||||
tag = get_object_or_404(Tag, pk=tag_id)
|
||||
tag.name = data.get('name', tag.name)
|
||||
tag.save()
|
||||
self._build_response(tag)
|
||||
|
||||
def delete(self, request, tag_id):
|
||||
tag = get_object_or_404(Tag, pk=tag_id)
|
||||
tag.active = False
|
||||
tag.save()
|
||||
return self._build_response(tag)
|
||||
|
|
@ -2,9 +2,15 @@ from django.contrib import admin
|
|||
from django.urls import path
|
||||
|
||||
from api.views.event import EventView
|
||||
from api.views.category import CategoryView
|
||||
from api.views.tag import TagView
|
||||
|
||||
urlpatterns = [
|
||||
path("admin/", admin.site.urls),
|
||||
path("api/event/<int:event_id>", EventView.as_view(), name="event"),
|
||||
path("api/event", EventView.as_view(), name="event")
|
||||
path("api/event", EventView.as_view(), name="event"),
|
||||
path("api/category/<int:category_id>", CategoryView.as_view(), name="category"),
|
||||
path("api/category", CategoryView.as_view(), name="category"),
|
||||
path("api/tag/<int:tag_id>", TagView.as_view(), name="tag"),
|
||||
path("api/tag", TagView.as_view(), name="tag"),
|
||||
]
|
||||
|
|
|
|||
11
test_requests/category_post.py
Normal file
11
test_requests/category_post.py
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import requests
|
||||
|
||||
url = "http://127.0.0.1:8000/api/category"
|
||||
|
||||
data = {
|
||||
"name": "Test Category",
|
||||
"description": "this is a test",
|
||||
}
|
||||
|
||||
resp = requests.post(url, data=data)
|
||||
print(resp.status_code)
|
||||
10
test_requests/category_put.py
Normal file
10
test_requests/category_put.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
import requests
|
||||
|
||||
url = "http://127.0.0.1:8000/api/category/1"
|
||||
|
||||
data = {
|
||||
"name": "diddy cat"
|
||||
}
|
||||
|
||||
resp = requests.put(url, data=data)
|
||||
print(resp.status_code)
|
||||
|
|
@ -17,4 +17,5 @@ data = {
|
|||
"phone_number": ""
|
||||
}
|
||||
|
||||
requests.post(url, data=data)
|
||||
resp = requests.post(url, data=data)
|
||||
print(resp.status_code)
|
||||
|
|
@ -6,4 +6,5 @@ data = {
|
|||
"name": "diddy freakoff",
|
||||
}
|
||||
|
||||
requests.put(url, data=data)
|
||||
resp = requests.put(url, data=data)
|
||||
print(resp.status_code)
|
||||
0
test_requests/tag_post.py
Normal file
0
test_requests/tag_post.py
Normal file
0
test_requests/tag_put.py
Normal file
0
test_requests/tag_put.py
Normal file
Loading…
Reference in a new issue