From 4a2a5f9d7682d64624ab4d795a7a89e80c885fcc Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Tue, 23 Oct 2018 14:42:26 +0300 Subject: [PATCH] Bugfix #117: API Event tags Add API for tags so events can get the related field. --- webapp/serializers.py | 13 +++++++++++-- webapp/urls.py | 3 ++- webapp/views.py | 8 +++++++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/webapp/serializers.py b/webapp/serializers.py index d6cc1af..60bbb8e 100644 --- a/webapp/serializers.py +++ b/webapp/serializers.py @@ -14,19 +14,28 @@ class EventSerializer(serializers.HyperlinkedModelSerializer): signup_id = serializers.PrimaryKeyRelatedField( many=True, source="signupForm", - queryset=SignupForm.objects.all()) + queryset=SignupForm.objects.all() + ) + tag_id = serializers.PrimaryKeyRelatedField( + many=True, + source="tags", + queryset=Tag.objects.all() + ) class Meta: model = Event - fields = ('id', 'tags', 'visible', 'title', 'description', + fields = ('id', 'tag_id', 'tags', 'visible', 'title', 'description', 'content', 'start_time', 'end_time', 'signup_id', 'signupForm') depth = 1 def create(self, validated_data): signupForms = validated_data.pop('signupForm') + tags = validated_data.pop('tags') event = Event.objects.create(**validated_data) for form in signupForms: event.signupForm.add(form) + for tag in tags: + event.tags.add(tag) event.save() return event diff --git a/webapp/urls.py b/webapp/urls.py index 2ee139e..1126a82 100644 --- a/webapp/urls.py +++ b/webapp/urls.py @@ -19,7 +19,7 @@ from webapp.views import about_view # from webapp.views import contact_view from webapp.views import EventViewSet, SignupFormViewSet, SignupViewSet,\ - FeedViewSet, ContactsViewSet, SavedQuestionsViewSet, RootView + FeedViewSet, ContactsViewSet, SavedQuestionsViewSet, RootView, TagsViewSet class APIRouter(routers.DefaultRouter): @@ -33,6 +33,7 @@ router.register(r'signup', SignupViewSet) router.register(r'feed', FeedViewSet) router.register(r'contacts', ContactsViewSet) router.register(r'questions', SavedQuestionsViewSet) +router.register(r'tags', TagsViewSet) urlpatterns = [ url(r'^api/', include(router.urls)), diff --git a/webapp/views.py b/webapp/views.py index 5782b1c..802df3f 100644 --- a/webapp/views.py +++ b/webapp/views.py @@ -19,7 +19,7 @@ from rest_framework.reverse import reverse from dealer.git import git from webapp.models import Event, SignupForm, Signup, TemplateQuestion, Feed,\ - Committee, Official + Committee, Official, Tag from webapp.serializers import * from members.views.utils import * @@ -65,6 +65,12 @@ class ContactsViewSet(viewsets.ReadOnlyModelViewSet): permission_classes = [IsAuthenticatedOrReadOnly] +class TagsViewSet(viewsets.ReadOnlyModelViewSet): + queryset = Tag.objects.all() + serializer_class = ContactsSerializer + permission_classes = [IsAuthenticatedOrReadOnly] + + # -- OLD CODEBASE -- # @require_http_methods(["GET"])