from django.contrib import messages from .models import PlayerRegistration from tournaments.utils.licence_validator import LicenseValidator # Remove unused import since get_player_name_from_csv is not used in this class class TournamentRegistrationValidator: @staticmethod def validate_player_license(request, tournament, player_data): licence_id = player_data['licence_id'].upper() validator = LicenseValidator(licence_id) if not validator.validate_license() and tournament.license_is_required: TournamentRegistrationValidator._handle_invalid_license(request, licence_id) return False if validator.validate_license() and TournamentRegistrationValidator._is_duplicate_license( licence_id, request.session['team_registration']): messages.error(request, "Ce joueur est déjà dans l'équipe.") return False if validator.validate_license() and tournament.license_is_required: stripped_license = validator.stripped_license if TournamentRegistrationValidator._license_already_registered(stripped_license, tournament): messages.error(request, "Un joueur avec ce numéro de licence est déjà inscrit dans une équipe.") return False return True @staticmethod def _handle_invalid_license(request, licence_id): if not licence_id: if not request.session.get('team_registration'): messages.error(request, "Le numéro de licence est obligatoire.") else: messages.error(request, "Le numéro de licence de votre partenaire est obligatoire.") else: messages.error(request, "Le numéro de licence est invalide, la lettre ne correspond pas.") @staticmethod def _is_duplicate_license(licence_id, team_registration): existing_licenses = [player['licence_id'] for player in team_registration] return licence_id in existing_licenses @staticmethod def _license_already_registered(stripped_license, tournament): return PlayerRegistration.objects.filter( team_registration__tournament=tournament, licence_id__startswith=stripped_license ).exists()