diff --git a/project/circles/serializers.py b/project/circles/serializers.py new file mode 100644 index 0000000..4775e89 --- /dev/null +++ b/project/circles/serializers.py @@ -0,0 +1,9 @@ +from rest_framework import serializers + +from .models import Circle + + +class CircleSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Circle + fields = ("id", "name", "photo") diff --git a/project/circles/views.py b/project/circles/views.py index efa3383..f380fc1 100644 --- a/project/circles/views.py +++ b/project/circles/views.py @@ -10,8 +10,11 @@ from django.views.generic.base import TemplateView from django.views.generic.detail import DetailView from django.views.generic.edit import CreateView, DeleteView, UpdateView +from rest_framework import viewsets +from rest_framework.permissions import IsAuthenticated from .models import Circle, Companion, JoinRequest +from .serializers import CircleSerializer class CompanionDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView): @@ -241,3 +244,15 @@ def get(self, request, circle_id, join_request_id, *args, **kwargs): join_request.delete() return redirect(circle) + + +# Only returns circles that user is a companion of +class CircleViewSet(viewsets.ModelViewSet): + serializer_class = CircleSerializer + permission_classes = [IsAuthenticated] + + def get_queryset(self): + user = self.request.user + circles = Circle.objects.filter(companions_through__user=user) + + return circles diff --git a/project/core/urls.py b/project/core/urls.py index 8dcb31c..8dfb170 100644 --- a/project/core/urls.py +++ b/project/core/urls.py @@ -13,14 +13,19 @@ 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ +from circles import views from django.conf import settings from django.conf.urls.static import static from django.contrib import admin from django.urls import include, path from django.views.generic.base import TemplateView +from rest_framework.routers import DefaultRouter media_urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) +router = DefaultRouter() +router.register(r"circles", views.CircleViewSet, basename="circle") + api_urlpatterns = [ path( "accounts/registration/", @@ -34,6 +39,7 @@ urlpatterns = [ path("api/v1/", include(api_urlpatterns)), + path("api/v1/", include(router.urls)), path("__debug__/", include("debug_toolbar.urls")), path("", TemplateView.as_view(template_name="home.html"), name="home"), path("admin/", admin.site.urls),