Skip to content

Commit 67146c4

Browse files
committed
Fix API
1 parent a9bff84 commit 67146c4

File tree

1 file changed

+3
-86
lines changed

1 file changed

+3
-86
lines changed

representatives_votes/serializers.py

Lines changed: 3 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,10 @@
55
from rest_framework import serializers
66

77

8-
class VoteSerializer(serializers.ModelSerializer):
8+
class VoteSerializer(serializers.HyperlinkedModelSerializer):
99
"""
1010
Vote serializer
1111
"""
12-
proposal = serializers.CharField(
13-
source='proposal.fingerprint'
14-
)
15-
representative = serializers.CharField(
16-
source='representative.fingerprint',
17-
allow_null=True
18-
)
19-
2012
class Meta:
2113
model = models.Vote
2214
fields = (
@@ -27,44 +19,13 @@ class Meta:
2719
'position'
2820
)
2921

30-
def to_internal_value(self, data):
31-
data = super(VoteSerializer, self).to_internal_value(data)
32-
data['proposal'] = models.Proposal.objects.get(
33-
fingerprint=data['proposal']['fingerprint']
34-
)
35-
if data['representative']['fingerprint']:
36-
data['representative'] = Representative.objects.get(
37-
fingerprint=data['representative']['fingerprint']
38-
)
39-
else:
40-
data['representative'] = None
41-
42-
return data
43-
44-
45-
class ProposalSerializer(serializers.ModelSerializer):
46-
dossier = serializers.CharField(
47-
source='dossier.fingerprint'
48-
)
49-
50-
dossier_title = serializers.CharField(
51-
source='dossier.title',
52-
read_only=True
53-
)
54-
55-
dossier_reference = serializers.CharField(
56-
source='dossier.reference',
57-
read_only=True
58-
)
5922

23+
class ProposalSerializer(serializers.HyperlinkedModelSerializer):
6024
class Meta:
6125
model = models.Proposal
6226
fields = (
6327
'id',
64-
'fingerprint',
6528
'dossier',
66-
'dossier_title',
67-
'dossier_reference',
6829
'title',
6930
'description',
7031
'reference',
@@ -76,58 +37,19 @@ class Meta:
7637
'url',
7738
)
7839

79-
def to_internal_value(self, data):
80-
validated_data = super(ProposalSerializer, self).to_internal_value(
81-
data)
82-
validated_data['dossier'] = models.Dossier.objects.get(
83-
fingerprint=validated_data['dossier']['fingerprint']
84-
)
85-
validated_data['votes'] = data['votes']
86-
return validated_data
87-
88-
def _create_votes(self, votes_data, proposal):
89-
for vote in votes_data:
90-
serializer = VoteSerializer(data=vote)
91-
if serializer.is_valid():
92-
serializer.save()
93-
else:
94-
raise Exception(serializer.errors)
95-
96-
def create(self, validated_data):
97-
votes_data = validated_data.pop('votes')
98-
proposal = models.Proposal.objects.create(
99-
**validated_data
100-
)
101-
self._create_votes(votes_data, proposal)
102-
return proposal
103-
104-
def update(self, instance, validated_data):
105-
validated_data.pop('votes')
106-
for attr, value in validated_data.iteritems():
107-
setattr(instance, attr, value)
108-
instance.save()
109-
return instance
110-
11140

11241
class ProposalDetailSerializer(ProposalSerializer):
11342
""" Proposal serializer that includes votes """
114-
votes = VoteSerializer(many=True)
11543

116-
class Meta(ProposalSerializer.Meta):
117-
fields = ProposalSerializer.Meta.fields + (
118-
'votes',
119-
)
12044

121-
122-
class DossierSerializer(serializers.ModelSerializer):
45+
class DossierSerializer(serializers.HyperlinkedModelSerializer):
12346
""" Base dossier serializer """
12447
proposals = ProposalSerializer(many=True)
12548

12649
class Meta:
12750
model = models.Dossier
12851
fields = (
12952
'id',
130-
'fingerprint',
13153
'title',
13254
'reference',
13355
'text',
@@ -142,8 +64,3 @@ class DossierDetailSerializer(DossierSerializer):
14264
Dossier serializer that includes proposals and votes.
14365
"""
14466
proposals = ProposalDetailSerializer(many=True)
145-
146-
class Meta(DossierSerializer.Meta):
147-
fields = DossierSerializer.Meta.fields + (
148-
'proposals',
149-
)

0 commit comments

Comments
 (0)