feat(api): initial work on API

!1
This commit is contained in:
2024-05-14 09:24:39 +09:30
parent 50cc050adf
commit 102aa981ce
9 changed files with 171 additions and 2 deletions

42
app/api/views/access.py Normal file
View File

@ -0,0 +1,42 @@
from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin
from rest_framework import generics
from access.models import Organization, Team
from api.serializers.access import OrganizationSerializer, TeamSerializer
class OrganizationList(PermissionRequiredMixin, LoginRequiredMixin, generics.ListCreateAPIView):
permission_required = 'access.view_organization'
queryset = Organization.objects.all()
serializer_class = OrganizationSerializer
def get_view_name(self):
return "Organizations"
class OrganizationDetail(PermissionRequiredMixin, LoginRequiredMixin, generics.RetrieveUpdateDestroyAPIView):
permission_required = 'access.view_organization'
queryset = Organization.objects.all()
serializer_class = OrganizationSerializer
def get_view_name(self):
return "Organization"
class TeamList(generics.ListCreateAPIView):
queryset = Team.objects.all()
serializer_class = TeamSerializer
class TeamDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Team.objects.all()
serializer_class = TeamSerializer
lookup_field = 'group_ptr_id'

33
app/api/views/index.py Normal file
View File

@ -0,0 +1,33 @@
from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin
from django.contrib.auth.models import User
from django.utils.safestring import mark_safe
from rest_framework import generics, permissions, routers
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.reverse import reverse
class IndexView(PermissionRequiredMixin, LoginRequiredMixin, routers.APIRootView):
permission_required = 'access.view_organization'
def get_view_name(self):
return "My API"
def get_view_description(self, html=False) -> str:
text = "My REST API"
if html:
return mark_safe(f"<p>{text}</p>")
else:
return text
def get(self, request, *args, **kwargs):
return Response(
{
"organizations": reverse("_api_orgs", request=request),
"teams": reverse("_api_teams", request=request),
}
)