adding tag and category

This commit is contained in:
Dominic DiTaranto 2026-06-20 18:00:06 -04:00
parent 29da461a53
commit 5448fd9d3c
12 changed files with 148 additions and 3 deletions

View 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
View 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__'

View file

@ -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
View 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
View 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)

View file

@ -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"),
]

View 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)

View 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)

View file

@ -17,4 +17,5 @@ data = {
"phone_number": ""
}
requests.post(url, data=data)
resp = requests.post(url, data=data)
print(resp.status_code)

View file

@ -6,4 +6,5 @@ data = {
"name": "diddy freakoff",
}
requests.put(url, data=data)
resp = requests.put(url, data=data)
print(resp.status_code)

View file

0
test_requests/tag_put.py Normal file
View file