|
|
|
|
@ -135,16 +135,101 @@ class TournamentSerializer(serializers.ModelSerializer): |
|
|
|
|
fields = '__all__' |
|
|
|
|
|
|
|
|
|
class TournamentSummarySerializer(serializers.ModelSerializer): |
|
|
|
|
|
|
|
|
|
registration_count = serializers.SerializerMethodField() |
|
|
|
|
# English field names for all the information described in the comment |
|
|
|
|
tournament_name = serializers.SerializerMethodField() |
|
|
|
|
tournament_information = serializers.CharField(source='information', read_only=True) |
|
|
|
|
start_date = serializers.SerializerMethodField() |
|
|
|
|
end_date = serializers.SerializerMethodField() |
|
|
|
|
tournament_category = serializers.SerializerMethodField() # P25/P100/P250 as string |
|
|
|
|
tournament_type = serializers.SerializerMethodField() # homme/femme/mixte as string |
|
|
|
|
tournament_age_category = serializers.SerializerMethodField() # U10, U12, Senior, +45, etc. as string |
|
|
|
|
max_teams = serializers.IntegerField(source='team_count', read_only=True) |
|
|
|
|
registered_teams_count = serializers.SerializerMethodField() |
|
|
|
|
tournament_status = serializers.SerializerMethodField() # status as string |
|
|
|
|
registration_link = serializers.SerializerMethodField() |
|
|
|
|
umpire_name = serializers.SerializerMethodField() |
|
|
|
|
umpire_phone = serializers.SerializerMethodField() |
|
|
|
|
umpire_email = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
|
model = Tournament |
|
|
|
|
fields = ['id', 'name', 'start_date', 'day_duration', 'team_count', 'federal_category', 'federal_level_category', 'federal_age_category', 'registration_count'] |
|
|
|
|
|
|
|
|
|
def get_registration_count(self, obj): |
|
|
|
|
fields = [ |
|
|
|
|
'id', |
|
|
|
|
'tournament_name', |
|
|
|
|
'tournament_information', |
|
|
|
|
'start_date', |
|
|
|
|
'end_date', |
|
|
|
|
'tournament_category', |
|
|
|
|
'tournament_type', |
|
|
|
|
'tournament_age_category', |
|
|
|
|
'max_teams', |
|
|
|
|
'registered_teams_count', |
|
|
|
|
'tournament_status', |
|
|
|
|
'registration_link', |
|
|
|
|
'umpire_name', |
|
|
|
|
'umpire_phone', |
|
|
|
|
'umpire_email' |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
def get_start_date(self, obj): |
|
|
|
|
"""Get formatted start date""" |
|
|
|
|
return obj.local_start_date() |
|
|
|
|
|
|
|
|
|
def get_end_date(self, obj): |
|
|
|
|
"""Get formatted end date""" |
|
|
|
|
return obj.local_end_date() |
|
|
|
|
|
|
|
|
|
def get_tournament_name(self, obj): |
|
|
|
|
"""Get the tournament name""" |
|
|
|
|
return obj.name or obj.name_and_event() |
|
|
|
|
|
|
|
|
|
def get_tournament_category(self, obj): |
|
|
|
|
"""Get tournament category as string label (P25, P100, P250, etc.)""" |
|
|
|
|
return obj.level() |
|
|
|
|
|
|
|
|
|
def get_tournament_type(self, obj): |
|
|
|
|
"""Get tournament type as string label (homme, femme, mixte)""" |
|
|
|
|
return obj.category() |
|
|
|
|
|
|
|
|
|
def get_tournament_age_category(self, obj): |
|
|
|
|
"""Get tournament age category as string label (U10, U12, Senior, +45, etc.)""" |
|
|
|
|
return obj.age() |
|
|
|
|
|
|
|
|
|
def get_registered_teams_count(self, obj): |
|
|
|
|
"""Get number of registered teams""" |
|
|
|
|
return len(obj.teams(False)) |
|
|
|
|
|
|
|
|
|
def get_tournament_status(self, obj): |
|
|
|
|
"""Get tournament status as string""" |
|
|
|
|
return obj.get_tournament_status() |
|
|
|
|
|
|
|
|
|
def get_registration_link(self, obj): |
|
|
|
|
"""Get appropriate link based on tournament status""" |
|
|
|
|
# This will need to be adapted based on your URL structure |
|
|
|
|
# For now, returning a placeholder that you can customize |
|
|
|
|
status = obj.get_online_registration_status() |
|
|
|
|
base_url = "https://padelclub.app/" |
|
|
|
|
if status.value in [1, 3, 5]: # OPEN, NOT_STARTED, WAITING_LIST_POSSIBLE |
|
|
|
|
return f"{base_url}tournament/{obj.id}/info/" |
|
|
|
|
elif status.value == 7: # IN_PROGRESS |
|
|
|
|
return f"{base_url}tournament/{obj.id}/live/" |
|
|
|
|
elif status.value == 8: # ENDED_WITH_RESULTS |
|
|
|
|
return f"{base_url}tournament/{obj.id}/rankings/" |
|
|
|
|
else: |
|
|
|
|
return f"{base_url}tournament/{obj.id}/info/" |
|
|
|
|
|
|
|
|
|
def get_umpire_name(self, obj): |
|
|
|
|
"""Get umpire/referee name""" |
|
|
|
|
return obj.umpire_contact() |
|
|
|
|
|
|
|
|
|
def get_umpire_phone(self, obj): |
|
|
|
|
"""Get umpire phone number""" |
|
|
|
|
return obj.umpire_phone() |
|
|
|
|
|
|
|
|
|
def get_umpire_email(self, obj): |
|
|
|
|
"""Get umpire email address""" |
|
|
|
|
return obj.umpire_mail() |
|
|
|
|
|
|
|
|
|
class EventSerializer(serializers.ModelSerializer): |
|
|
|
|
class Meta: |
|
|
|
|
#club_id = serializers.PrimaryKeyRelatedField(queryset=Club.objects.all()) |
|
|
|
|
|