From 0eedd6143170cb0cf1c664dd0a4878d0114034b3 Mon Sep 17 00:00:00 2001 From: Yaron Dinur Date: Mon, 10 Oct 2016 22:18:14 +0300 Subject: [PATCH] added minister lists for votes --- committeeVotes/models.py | 2 ++ committeeVotes/serializers.py | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/committeeVotes/models.py b/committeeVotes/models.py index c141d07..97ce8f0 100644 --- a/committeeVotes/models.py +++ b/committeeVotes/models.py @@ -1,3 +1,5 @@ +# coding: utf-8 + from django.db import models from django.conf import settings # Create your models here. diff --git a/committeeVotes/serializers.py b/committeeVotes/serializers.py index 9ca5e91..b736096 100644 --- a/committeeVotes/serializers.py +++ b/committeeVotes/serializers.py @@ -1,4 +1,6 @@ -from committeeVotes.models import Bill, Meeting, Minister, Vote +# coding: utf-8 + +from committeeVotes.models import Bill, Meeting, Minister, Vote, VoteType from rest_framework import serializers @@ -37,6 +39,11 @@ class Meta: fields = ('vote', 'minister') +class VoteListSerializer(serializers.BaseSerializer): + def to_representation(self, obj): + return obj.minister.name + + class BillSerializer(DynamicFieldsMixin, serializers.HyperlinkedModelSerializer): class Meta: @@ -45,17 +52,36 @@ class Meta: class BillVoteSerializer(DynamicFieldsMixin, serializers.HyperlinkedModelSerializer): - votes = VoteSerializer(many=True, read_only=True) + yay = serializers.SerializerMethodField() + nay = serializers.SerializerMethodField() + sustained = serializers.SerializerMethodField() + + def get_votes(self, bill, voteTypeName): + voteType = VoteType.objects.get(typeName=voteTypeName) + qs = Vote.objects.filter(vote=voteType, bill=bill) + serializer = VoteListSerializer(instance=qs, many=True) + return serializer.data + + def get_yay(self, bill): + return self.get_votes(bill, u'בעד') + + def get_nay(self, bill): + return self.get_votes(bill, u'נגד') + + def get_sustained(self, bill): + return self.get_votes(bill, u'נמנע') class Meta: model = Bill - fields = ('id', 'name', 'oknesset_url', 'passed', 'votes') + fields = ('id', 'name', 'oknesset_url', 'passed', 'yay', 'nay', 'sustained') + class MinisterListSerializer(serializers.ModelSerializer): class Meta: model = Minister fields = ('id', 'name', 'photo_url', 'coop') + class MinisterSerializer(MinisterListSerializer): class Meta(MinisterListSerializer.Meta): @@ -78,7 +104,7 @@ class MinisterInMeetingSerializer(serializers.ModelSerializer): class Meta: model = Minister - fields = ('id', 'name') + fields = ('id', 'name', 'url') class MeetingSerializer(serializers.ModelSerializer):