Skip to content

Commit

Permalink
Add current user following status to EventReadUserDetailedSerializer
Browse files Browse the repository at this point in the history
  • Loading branch information
eikhr committed Feb 9, 2023
1 parent 7e08ba1 commit 6234720
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 1 deletion.
11 changes: 11 additions & 0 deletions lego/apps/events/fields.py
Expand Up @@ -79,6 +79,17 @@ def to_representation(self, value):
return value.is_admitted(request.user)


class FollowingField(serializers.Field):
def get_attribute(self, instance):
return instance

def to_representation(self, value):
request = self.context.get("request", None)
if not request or not request.user.is_authenticated:
return False
return value.following(request.user)


class ActivationTimeField(serializers.Field):
def get_attribute(self, instance):
return instance
Expand Down
6 changes: 6 additions & 0 deletions lego/apps/events/models.py
Expand Up @@ -646,6 +646,12 @@ def is_admitted(self, user: User) -> bool:
return self.user_reg[0].pool is not None
return self.registrations.filter(user=user).exclude(pool=None).exists()

def following(self, user: User) -> int | False:
try:
return FollowEvent.objects.get(follower=user, target=self).pk
except FollowEvent.DoesNotExist:
return False

def is_on_waiting_list(self, user: User) -> bool:
return self.registrations.filter(
user=user, pool=None, status=constants.SUCCESS_REGISTER
Expand Down
4 changes: 3 additions & 1 deletion lego/apps/events/serializers/events.py
Expand Up @@ -10,7 +10,7 @@
from lego.apps.content.fields import ContentSerializerField
from lego.apps.events import constants
from lego.apps.events.constants import PRESENCE_CHOICES
from lego.apps.events.fields import ActivationTimeField, IsAdmittedField, SpotsLeftField
from lego.apps.events.fields import ActivationTimeField, IsAdmittedField, SpotsLeftField, FollowingField
from lego.apps.events.models import Event, Pool, Registration
from lego.apps.events.serializers.pools import (
PoolAdministrateExportSerializer,
Expand Down Expand Up @@ -205,6 +205,7 @@ class EventReadUserDetailedSerializer(EventReadDetailedSerializer):

activation_time = ActivationTimeField()
is_admitted = IsAdmittedField()
following = FollowingField()
spots_left = SpotsLeftField()
pending_registration = serializers.SerializerMethodField()
price = serializers.SerializerMethodField()
Expand All @@ -215,6 +216,7 @@ class Meta(EventReadDetailedSerializer.Meta):
"price",
"activation_time",
"is_admitted",
"following",
"spots_left",
"pending_registration",
"photo_consents",
Expand Down

0 comments on commit 6234720

Please sign in to comment.