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 = Response()
|
||||||
response.data = model_serializer.data
|
response.data = model_serializer.data
|
||||||
return response
|
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 django.urls import path
|
||||||
|
|
||||||
from api.views.event import EventView
|
from api.views.event import EventView
|
||||||
|
from api.views.category import CategoryView
|
||||||
|
from api.views.tag import TagView
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("admin/", admin.site.urls),
|
path("admin/", admin.site.urls),
|
||||||
path("api/event/<int:event_id>", EventView.as_view(), name="event"),
|
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": ""
|
"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",
|
"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