From 1df17667539a1dd407d0987abe621b314087fc01 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Mon, 29 Mar 2021 16:06:09 +0200 Subject: [PATCH] Upgrade dependencies --- Dockerfile | 2 +- apps/participation/api/serializers.py | 11 ++++++++--- apps/participation/api/views.py | 23 ++++++++++++++++++++++- requirements.txt | 4 ++-- tox.ini | 2 +- 5 files changed, 34 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 124f083..1519f85 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8-alpine +FROM python:3.9-alpine ENV PYTHONUNBUFFERED 1 ENV DJANGO_ALLOW_ASYNC_UNSAFE 1 diff --git a/apps/participation/api/serializers.py b/apps/participation/api/serializers.py index f82b31f..e9e8da0 100644 --- a/apps/participation/api/serializers.py +++ b/apps/participation/api/serializers.py @@ -25,6 +25,8 @@ class PassageSerializer(serializers.ModelSerializer): class PoolSerializer(serializers.ModelSerializer): + passages = serializers.ListSerializer(child=PassageSerializer()) + class Meta: model = Pool fields = '__all__' @@ -43,14 +45,17 @@ class SynthesisSerializer(serializers.ModelSerializer): class TeamSerializer(serializers.ModelSerializer): + participation = ParticipationSerializer() + class Meta: model = Team fields = '__all__' class TournamentSerializer(serializers.ModelSerializer): - teams = serializers.ListSerializer() - class Meta: model = Tournament - fields = '__all__' + fields = ('name', 'date_start', 'date_end', 'place', 'max_teams', 'price', 'remote', + 'inscription_limit', 'solution_limit', 'solutions_draw', 'syntheses_first_phase_limit', + 'solutions_available_second_phase', 'syntheses_second_phase_limit', + 'description', 'organizers', 'final', 'participations',) diff --git a/apps/participation/api/views.py b/apps/participation/api/views.py index 33b8aa9..0634f9c 100644 --- a/apps/participation/api/views.py +++ b/apps/participation/api/views.py @@ -1,6 +1,6 @@ # Copyright (C) 2020 by Animath # SPDX-License-Identifier: GPL-3.0-or-later - +from django_filters.rest_framework import DjangoFilterBackend from rest_framework.viewsets import ModelViewSet from .serializers import NoteSerializer, ParticipationSerializer, PassageSerializer, PoolSerializer, \ @@ -11,38 +11,59 @@ from ..models import Note, Participation, Passage, Pool, Solution, Synthesis, Te class NoteViewSet(ModelViewSet): queryset = Note.objects.all() serializer_class = NoteSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['jury', 'passage', 'defender_writing', 'defender_oral', 'opponent_writing', + 'opponent_oral', 'reporter_writing', 'reporter_oral', ] class ParticipationViewSet(ModelViewSet): queryset = Participation.objects.all() serializer_class = ParticipationSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['team', 'team__name', 'team__trigram', 'tournament', 'tournament__name', 'valid', 'final', ] class PassageViewSet(ModelViewSet): queryset = Passage.objects.all() serializer_class = PassageSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['pool', 'place', 'solution_number', 'defender', 'opponent', 'reporter', ] class PoolViewSet(ModelViewSet): queryset = Pool.objects.all() serializer_class = PoolSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['tournament', 'tournament__name', 'round', 'participations', 'juries', 'bbb_url', ] class SolutionViewSet(ModelViewSet): queryset = Solution.objects.all() serializer_class = SolutionSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['participation', 'number', 'problem', 'final_solution', ] class SynthesisViewSet(ModelViewSet): queryset = Synthesis.objects.all() serializer_class = SynthesisSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['participation', 'number', 'passage', 'type', ] class TeamViewSet(ModelViewSet): queryset = Team.objects.all() serializer_class = TeamSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['name', 'trigram', 'access_code', 'participation__valid', 'participation__tournament', + 'participation__tournament__name', 'participation__valid', 'participation__final', ] class TournamentViewSet(ModelViewSet): queryset = Tournament.objects.all() serializer_class = TournamentSerializer + filter_backends = [DjangoFilterBackend] + filterset_fields = ['name', 'date_start', 'date_end', 'place', 'max_teams', 'price', 'remote', + 'inscription_limit', 'solution_limit', 'solutions_draw', 'syntheses_first_phase_limit', + 'solutions_available_second_phase', 'syntheses_second_phase_limit', + 'description', 'organizers', 'final', ] diff --git a/requirements.txt b/requirements.txt index 48ed2f3..3613662 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ asgiref~=3.3.1 -Django~=3.0 +Django~=3.1 django-address~=0.2 django-bootstrap-datepicker-plus~=3.0 django-cas-server~=1.2 @@ -19,7 +19,7 @@ phonenumbers~=8.9.10 psycopg2-binary~=2.8 PyPDF3~=1.0.2 ipython~=7.19.0 -python-magic==0.4.18 +python-magic>=0.4.21 requests~=2.25.0 sympasoap~=1.0 whoosh~=2.7 \ No newline at end of file diff --git a/tox.ini b/tox.ini index 55a8978..6c428f0 100644 --- a/tox.ini +++ b/tox.ini @@ -23,7 +23,7 @@ deps = django-rest-polymorphic~=0.1 phonenumbers~=8.9.10 PyPDF3~=1.0.2 - python-magic==0.4.18 + python-magic==0.4.21 whoosh~=2.7 commands = coverage run --source=apps,tfjm ./manage.py test apps/ tfjm/