Skip to content
Snippets Groups Projects
Commit af1f7a46 authored by florimondmanca's avatar florimondmanca
Browse files

delete form entry when deleting a project participation

parent 052e1543
Branches
No related tags found
No related merge requests found
......@@ -4,3 +4,6 @@ from django.apps import AppConfig
class ProjectsConfig(AppConfig):
name = 'projects'
verbose_name = 'Projets'
def ready(self):
from . import signals
......@@ -182,7 +182,7 @@ class Participation(models.Model):
entry = models.OneToOneField(
'dynamicforms.FormEntry',
on_delete=models.CASCADE,
on_delete=models.SET_NULL,
null=True,
related_name='project_participation',
verbose_name='entrée',
......
......@@ -55,7 +55,7 @@ class EditionListSerializer(serializers.HyperlinkedModelSerializer):
"""List serializer for Edition objects."""
description = MarkdownField()
project = serializers.PrimaryKeyRelatedField(read_only=True)
project = serializers.StringRelatedField(read_only=True)
organizers = serializers.SerializerMethodField()
participations = serializers.SerializerMethodField()
edition_form = EditionFormSerializer()
......@@ -112,6 +112,8 @@ class ParticipationSerializer(serializers.ModelSerializer):
with transaction.atomic():
entry_data = validated_data['entry']
entry = FormEntrySerializer().create(entry_data)
for answer in entry.answers.all():
print(answer)
participation = Participation.objects.create(
user=validated_data['user'],
......
"""Projects app signals."""
import logging
from django.db.models.signals import pre_delete
from django.dispatch import receiver
from .models import Participation
logger = logging.getLogger('web.projects.signals')
@receiver(pre_delete, sender=Participation)
def delete_associated_form_entry(sender, instance: Participation,
*args, **kwargs):
"""Delete the form entry associated to a participation being deleted."""
entry = instance.entry
if entry:
entry.delete()
logger.info('entry %s deleted', entry.id)
......@@ -103,7 +103,7 @@ class EditionViewSet(viewsets.ReadOnlyModelViewSet):
"url": "http://localhost:8000/api/editions/1/",
"name": "",
"year": 2018,
"project": 1,
"project": "Oser la Prépa",
"description": "",
"organizers": 0,
"participations": 2,
......@@ -245,7 +245,7 @@ class EditionViewSet(viewsets.ReadOnlyModelViewSet):
"url": "http://localhost:8000/api/editions/1/",
"name": "",
"year": 2018,
"project": 1,
"project": "Oser la Prépa",
"description": "",
"organizers": 0,
"participations": 3,
......@@ -321,7 +321,7 @@ class ParticipationViewSet(mixins.CreateModelMixin,
}
"""
queryset = Participation.objects.all()
queryset = Participation.objects.prefetch_related('edition').all()
serializer_class = ParticipationSerializer
permission_classes = (permissions.IsAuthenticated,)
filter_backends = (DjangoFilterBackend,)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment