Loading api/serializers.py +7 −0 Changes for api/serializers.py: 7 added lines, 0 removed lines. Original line number Diff line number Diff line from rest_framework import serializers from elections.models import Election, Option from voters.models import Voter class ElectionListSerializer(serializers.ModelSerializer): class Meta: Loading @@ -17,3 +18,9 @@ class ElectionSerializer(serializers.ModelSerializer): class Meta: model = Election fields = ['id', 'alias', 'name', 'description', 'allow_invalid', 'options'] class VoterSerializer(serializers.ModelSerializer): group_name = serializers.ReadOnlyField(source="group.display_name") class Meta: model = Voter fields = ['name', 'group_name'] No newline at end of file api/urls.py +2 −1 Changes for api/urls.py: 2 added lines, 1 removed line. Original line number Diff line number Diff line from django.urls import path from api.views import ElectionListView, ElectionView from api.views import ElectionListView, ElectionView, VoterView urlpatterns = [ path("elections/", ElectionListView.as_view(), name="election-list-api"), path("election/<str:alias>/", ElectionView.as_view(), name="election-api"), path("voter/<uuid:token>/", VoterView.as_view(), name="voter-api") ] No newline at end of file api/views.py +13 −2 Changes for api/views.py: 13 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ from elections.models import Election from voters.models import Voter from vote.models import Participation from api.serializers import ElectionListSerializer, ElectionSerializer from api.serializers import ElectionListSerializer, ElectionSerializer, VoterSerializer class ElectionListView(ListAPIView): serializer_class = ElectionListSerializer Loading Loading @@ -37,7 +37,6 @@ class ElectionView(RetrieveAPIView): lookup_field = "alias" def get_object(self): token = self.request.query_params.get("token") if token is None: Loading @@ -59,3 +58,15 @@ class ElectionView(RetrieveAPIView): raise ValidationError("Już oddałeś głos w tym głosowaniu!") return election class VoterView(RetrieveAPIView): serializer_class = VoterSerializer queryset = Voter.objects.all() lookup_field = "token" def get_object(self): voter = super().get_object() return voter No newline at end of file vote/forms.py +2 −2 Changes for vote/forms.py: 2 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ class VoteForm(forms.Form): super().__init__(*args, **kwargs) if self.election: choices = [(o.id, str(o)) for o in self.election.option_set.all()] choices = [(o.id, str(o)) for o in self.election.options.all()] if self.election.allow_invalid: choices.append(('invalid', 'GŁOS NIEWAŻNY')) Loading @@ -28,7 +28,7 @@ class VoteForm(forms.Form): raise ValidationError("W tym głosowaniu nie możesz oddać głosu nieważnego") return data if not self.election.option_set.filter(id=data).exists(): if not self.election.options.filter(id=data).exists(): raise ValidationError("Opcja niedostępna") return data No newline at end of file Loading
api/serializers.py +7 −0 Changes for api/serializers.py: 7 added lines, 0 removed lines. Original line number Diff line number Diff line from rest_framework import serializers from elections.models import Election, Option from voters.models import Voter class ElectionListSerializer(serializers.ModelSerializer): class Meta: Loading @@ -17,3 +18,9 @@ class ElectionSerializer(serializers.ModelSerializer): class Meta: model = Election fields = ['id', 'alias', 'name', 'description', 'allow_invalid', 'options'] class VoterSerializer(serializers.ModelSerializer): group_name = serializers.ReadOnlyField(source="group.display_name") class Meta: model = Voter fields = ['name', 'group_name'] No newline at end of file
api/urls.py +2 −1 Changes for api/urls.py: 2 added lines, 1 removed line. Original line number Diff line number Diff line from django.urls import path from api.views import ElectionListView, ElectionView from api.views import ElectionListView, ElectionView, VoterView urlpatterns = [ path("elections/", ElectionListView.as_view(), name="election-list-api"), path("election/<str:alias>/", ElectionView.as_view(), name="election-api"), path("voter/<uuid:token>/", VoterView.as_view(), name="voter-api") ] No newline at end of file
api/views.py +13 −2 Changes for api/views.py: 13 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ from elections.models import Election from voters.models import Voter from vote.models import Participation from api.serializers import ElectionListSerializer, ElectionSerializer from api.serializers import ElectionListSerializer, ElectionSerializer, VoterSerializer class ElectionListView(ListAPIView): serializer_class = ElectionListSerializer Loading Loading @@ -37,7 +37,6 @@ class ElectionView(RetrieveAPIView): lookup_field = "alias" def get_object(self): token = self.request.query_params.get("token") if token is None: Loading @@ -59,3 +58,15 @@ class ElectionView(RetrieveAPIView): raise ValidationError("Już oddałeś głos w tym głosowaniu!") return election class VoterView(RetrieveAPIView): serializer_class = VoterSerializer queryset = Voter.objects.all() lookup_field = "token" def get_object(self): voter = super().get_object() return voter No newline at end of file
vote/forms.py +2 −2 Changes for vote/forms.py: 2 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ class VoteForm(forms.Form): super().__init__(*args, **kwargs) if self.election: choices = [(o.id, str(o)) for o in self.election.option_set.all()] choices = [(o.id, str(o)) for o in self.election.options.all()] if self.election.allow_invalid: choices.append(('invalid', 'GŁOS NIEWAŻNY')) Loading @@ -28,7 +28,7 @@ class VoteForm(forms.Form): raise ValidationError("W tym głosowaniu nie możesz oddać głosu nieważnego") return data if not self.election.option_set.filter(id=data).exists(): if not self.election.options.filter(id=data).exists(): raise ValidationError("Opcja niedostępna") return data No newline at end of file