class PaymentForTerminalSerializer(serializers.ModelSerializer): donator = DonatorSerializer(many=False, read_only=True) campaign = CampaignSerializer(many=False, read_only=True) game = GameSerializer(many=False, read_only=True) class Meta: model = Payment fields = '__all__'
def get(self, request, pk, format=None): try: campaigns = Terminal.objects.get(pk=pk).campaigns campaigns = CampaignSerializer(campaigns, many=True, context={"request": request}) return Response(campaigns.data, status=status.HTTP_200_OK) except ObjectDoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND)
class TerminalSemiSerializer(serializers.Serializer): id = serializers.IntegerField() name = serializers.CharField() location = serializers.CharField() is_active = serializers.BooleanField() is_on = serializers.BooleanField() is_playing = serializers.BooleanField() campaigns = CampaignSerializer(many=True, allow_null=True) games = GameSerializer(many=True, allow_null=True) owner = UserFullSerializer(many=False, read_only=True) total_donations = serializers.ReadOnlyField() avg_donation = serializers.ReadOnlyField() avg_timesession = serializers.ReadOnlyField() avg_gametimesession = serializers.ReadOnlyField()
def get(self, request, format=None): try: terminal = Terminal.objects.get(owner=request.user.id) serializer = TerminalSerializer(terminal) campaigns = CampaignSerializer(terminal.campaigns, many=True, context={"request": request}) games = GameSerializer(terminal.games, many=True, context={"request": request}) return Response( { 'terminal': serializer.data, 'campaigns': campaigns.data, 'games': games.data }, status=status.HTTP_200_OK) except ObjectDoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND)