From bce2c38ccbe0c91dda7fd3ef71c35e17dba27509 Mon Sep 17 00:00:00 2001 From: okhin Date: Tue, 31 Jan 2017 14:01:34 +0100 Subject: [PATCH] Adding a view for organizations --- picampaign/organization/serializers.py | 9 ++++++++- picampaign/organization/tests.py | 19 +++++++++++++++++++ picampaign/organization/views.py | 18 ++++++++++++++++-- picampaign/urls.py | 4 +++- 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/picampaign/organization/serializers.py b/picampaign/organization/serializers.py index c3a4d32..c826c1c 100644 --- a/picampaign/organization/serializers.py +++ b/picampaign/organization/serializers.py @@ -1,4 +1,4 @@ -from picampaign.organization.models import FeedbackCategory, Group, GroupType +from picampaign.organization.models import FeedbackCategory, Group, GroupType, Organization from rest_framework import serializers @@ -16,7 +16,14 @@ class GroupSerializer(serializers.ModelSerializer): model = Group fields = ('id', 'type', 'name', 'media') + class GroupTypeSerializer(serializers.ModelSerializer): class Meta: model = GroupType fields = ('id', 'name') + + +class OrganizationSerializer(serializers.ModelSerializer): + class Meta: + model = Organization + fields = ('id', 'name', 'description', 'website', 'logo',) diff --git a/picampaign/organization/tests.py b/picampaign/organization/tests.py index 9dee80c..99d6787 100644 --- a/picampaign/organization/tests.py +++ b/picampaign/organization/tests.py @@ -56,6 +56,25 @@ class FeedbackCategoryTest(TestCase): ) self.assertEqual(str(feedbackcategory), feedbackcategory.name) +class OrganizationViewSet(TestCase): + def setUp(self): + self.organization = Organization.objects.create( + name='Majestic 12', + sip_key='majestic-12' + ) + self.campaign = Campaign.objects.create( + title='Test Campaign', + start_date='2000-01-01', + end_date='2100-12-31', + organization=self.organization + ) + + def test_organization_viewset(self): + client = APIClient() + response = client.get('/campaigns/%(cid)s/organization/' % {'cid': self.campaign.id}, format='json') + self.assertEqual(response.status_code, 200) + self.assertEqual(response.content, b'{"id":1,"name":"Majestic 12","description":"","website":"","logo":null}') + class CategoryViewSet(TestCase): def setUp(self): self.organization = Organization.objects.create( diff --git a/picampaign/organization/views.py b/picampaign/organization/views.py index c56bb57..4689f56 100644 --- a/picampaign/organization/views.py +++ b/picampaign/organization/views.py @@ -1,8 +1,12 @@ from rest_framework import viewsets from rest_framework.response import Response -from picampaign.organization.models import FeedbackCategory, Organization, GroupType, Group -from picampaign.organization.serializers import CategorySerializer, GroupTypeSerializer, GroupSerializer +from picampaign.organization.models import (FeedbackCategory, Organization, + GroupType, Group) +from picampaign.organization.serializers import (CategorySerializer, + GroupTypeSerializer, + GroupSerializer, + OrganizationSerializer) class CategoryViewSet(viewsets.ViewSet): @@ -38,3 +42,13 @@ class GroupViewSet(viewsets.ViewSet): serializer = self.serializer_class(groups, many=True) return Response(serializer.data) +class OrganizationViewSet(viewsets.ViewSet): + + queryset = Organization.objects.all() + serializer_class = OrganizationSerializer + + def list(self, request, campaign_pk): + orga = Organization.objects.filter(campaigns__id=campaign_pk)[0] + serializer = self.serializer_class(orga) + return Response(serializer.data) + diff --git a/picampaign/urls.py b/picampaign/urls.py index 8f99451..599ccd8 100644 --- a/picampaign/urls.py +++ b/picampaign/urls.py @@ -5,7 +5,8 @@ from rest_framework_nested import routers from picampaign.campaign.views import (CampaignViewSet, CampaignContactViewSet, ArgumentaryViewSet) from picampaign.feedback.views import FeedbackViewSet -from picampaign.organization.views import CategoryViewSet, GroupTypeViewSet, GroupViewSet +from picampaign.organization.views import (CategoryViewSet, GroupTypeViewSet, + GroupViewSet, OrganizationViewSet) router = routers.SimpleRouter() router.register(r'campaigns', CampaignViewSet) @@ -18,6 +19,7 @@ campaign_router.register(r'categories', CategoryViewSet) campaign_router.register(r'feedbacks', FeedbackViewSet) campaign_router.register(r'grouptypes', GroupTypeViewSet) campaign_router.register(r'groups', GroupViewSet) +campaign_router.register(r'organization', OrganizationViewSet) urlpatterns = [ -- GitLab