diff --git a/app/content/filters/registration.py b/app/content/filters/registration.py index 3b58f83f..5e2819b4 100644 --- a/app/content/filters/registration.py +++ b/app/content/filters/registration.py @@ -36,4 +36,4 @@ def filter_year(self, queryset, name, value): def filter_has_allergy(self, queryset, name, value): if value: return queryset.exclude(user__allergy__isnull=True).exclude(user__allergy__exact='') - return queryset + return queryset.filter(user__allergy__isnull=True) | queryset.filter(user__allergy__exact='') diff --git a/app/content/serializers/event.py b/app/content/serializers/event.py index 8b9f26c2..f4ac7af9 100644 --- a/app/content/serializers/event.py +++ b/app/content/serializers/event.py @@ -263,6 +263,7 @@ class EventStatisticsSerializer(BaseModelSerializer): has_attended_count = serializers.SerializerMethodField() studyyears = serializers.SerializerMethodField() studies = serializers.SerializerMethodField() + has_allergy_count = serializers.SerializerMethodField() class Meta: model = Event @@ -272,57 +273,14 @@ class Meta: "waiting_list_count", "studyyears", "studies", + "has_allergy_count", ) def get_has_attended_count(self, obj, *args, **kwargs): return obj.registrations.filter(is_on_wait=False, has_attended=True).count() - - def get_studyyears(self, obj, *args, **kwargs): - return filter( - lambda studyyear: studyyear["amount"] > 0, - map( - lambda group: { - "studyyear": group.name, - "amount": obj.registrations.filter( - user__memberships__group=group, is_on_wait=False - ).count(), - }, - Group.objects.filter(type=GroupType.STUDYYEAR), - ), - ) - - def get_studies(self, obj, *args, **kwargs): - return filter( - lambda study: study["amount"] > 0, - map( - lambda group: { - "study": group.name, - "amount": obj.registrations.filter( - user__memberships__group=group, is_on_wait=False - ).count(), - }, - Group.objects.filter(type=GroupType.STUDY), - ), - ) - -class EventCategoriesSerializer(BaseModelSerializer): - has_attended_count = serializers.SerializerMethodField() - studyyears = serializers.SerializerMethodField() - studies = serializers.SerializerMethodField() - - class Meta: - model = Event - fields = ( - "has_attended_count", - "list_count", - "waiting_list_count", - "studyyears", - "studies", - ) - - def get_has_attended_count(self, obj, *args, **kwargs): - return obj.registrations.filter(is_on_wait=False, has_attended=True).count() + def get_has_allergy_count(self, obj, *args, **kwargs): + return obj.registrations.exclude(user__allergy__isnull=True).exclude(user__allergy__exact='').count() def get_studyyears(self, obj, *args, **kwargs): return filter( @@ -352,47 +310,3 @@ def get_studies(self, obj, *args, **kwargs): ), ) -class EventRegistrationSerializer(BaseModelSerializer): - has_attended_count = serializers.SerializerMethodField() - studyyears = serializers.SerializerMethodField() - studies = serializers.SerializerMethodField() - - class Meta: - model = Event - fields = ( - "list_count", - "waiting_list_count", - "studyyears", - "studies", - ) - - def get_has_attended_count(self, obj, *args, **kwargs): - return obj.registrations.filter(is_on_wait=False, has_attended=True).all() - - def get_studyyears(self, obj, *args, **kwargs): - return filter( - lambda studyyear: studyyear["amount"] > 0, - map( - lambda group: { - "studyyear": group.name, - "amount": obj.registrations.filter( - user__memberships__group=group, is_on_wait=False - ).count(), - }, - Group.objects.filter(type=GroupType.STUDYYEAR), - ), - ) - - def get_studies(self, obj, *args, **kwargs): - return filter( - lambda study: study["amount"] > 0, - map( - lambda group: { - "study": group.name, - "amount": obj.registrations.filter( - user__memberships__group=group, is_on_wait=False - ).count(), - }, - Group.objects.filter(type=GroupType.STUDY), - ), - )