|
|
|
@ -7,6 +7,9 @@ from ..utils.licence_validator import LicenseValidator |
|
|
|
from ..utils.player_search import get_player_name_from_csv |
|
|
|
from ..utils.player_search import get_player_name_from_csv |
|
|
|
from tournaments.models import PlayerRegistration |
|
|
|
from tournaments.models import PlayerRegistration |
|
|
|
from ..utils.extensions import is_not_sqlite_backend |
|
|
|
from ..utils.extensions import is_not_sqlite_backend |
|
|
|
|
|
|
|
from django.contrib.auth import get_user_model |
|
|
|
|
|
|
|
from django.contrib.messages import get_messages |
|
|
|
|
|
|
|
from django.db import IntegrityError |
|
|
|
|
|
|
|
|
|
|
|
class TournamentRegistrationService: |
|
|
|
class TournamentRegistrationService: |
|
|
|
def __init__(self, request, tournament): |
|
|
|
def __init__(self, request, tournament): |
|
|
|
@ -70,6 +73,10 @@ class TournamentRegistrationService: |
|
|
|
if self._is_already_registered(licence_id): |
|
|
|
if self._is_already_registered(licence_id): |
|
|
|
return |
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if self.request.user.is_authenticated and self.request.user.licence_id is None: |
|
|
|
|
|
|
|
if self._update_user_license(player_data.get('licence_id')) == False: |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
if self.request.user.licence_id is None and len(self.context['current_players']) == 0: |
|
|
|
if self.request.user.licence_id is None and len(self.context['current_players']) == 0: |
|
|
|
# if no licence id for authentificated user and trying to add him as first player of the team, we check his federal data |
|
|
|
# if no licence id for authentificated user and trying to add him as first player of the team, we check his federal data |
|
|
|
self._handle_invalid_names(licence_id, player_data) |
|
|
|
self._handle_invalid_names(licence_id, player_data) |
|
|
|
@ -80,9 +87,6 @@ class TournamentRegistrationService: |
|
|
|
else: |
|
|
|
else: |
|
|
|
self._handle_invalid_names(licence_id, player_data) |
|
|
|
self._handle_invalid_names(licence_id, player_data) |
|
|
|
|
|
|
|
|
|
|
|
if self.request.user.is_authenticated and self.request.user.licence_id is None: |
|
|
|
|
|
|
|
self._update_user_license(player_data.get('licence_id')) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def handle_team_registration(self): |
|
|
|
def handle_team_registration(self): |
|
|
|
if not self.context['team_form'].is_valid(): |
|
|
|
if not self.context['team_form'].is_valid(): |
|
|
|
return |
|
|
|
return |
|
|
|
@ -119,7 +123,7 @@ class TournamentRegistrationService: |
|
|
|
self.context['registration_successful'] = True |
|
|
|
self.context['registration_successful'] = True |
|
|
|
|
|
|
|
|
|
|
|
def handle_get_request(self): |
|
|
|
def handle_get_request(self): |
|
|
|
from django.contrib.messages import get_messages |
|
|
|
print("handle_get_request") |
|
|
|
storage = get_messages(self.request) |
|
|
|
storage = get_messages(self.request) |
|
|
|
# Iterate through the storage to clear it |
|
|
|
# Iterate through the storage to clear it |
|
|
|
for _ in storage: |
|
|
|
for _ in storage: |
|
|
|
@ -180,8 +184,6 @@ class TournamentRegistrationService: |
|
|
|
self.request.session.modified = True |
|
|
|
self.request.session.modified = True |
|
|
|
|
|
|
|
|
|
|
|
def _get_authenticated_user_data(self): |
|
|
|
def _get_authenticated_user_data(self): |
|
|
|
from ..utils.player_search import get_player_name_from_csv |
|
|
|
|
|
|
|
from ..utils.licence_validator import LicenseValidator |
|
|
|
|
|
|
|
user = self.request.user |
|
|
|
user = self.request.user |
|
|
|
validator = LicenseValidator(user.licence_id) |
|
|
|
validator = LicenseValidator(user.licence_id) |
|
|
|
|
|
|
|
|
|
|
|
@ -209,6 +211,7 @@ class TournamentRegistrationService: |
|
|
|
return player_data |
|
|
|
return player_data |
|
|
|
|
|
|
|
|
|
|
|
def _validate_license(self, licence_id): |
|
|
|
def _validate_license(self, licence_id): |
|
|
|
|
|
|
|
print("Validating license...") |
|
|
|
validator = LicenseValidator(licence_id) |
|
|
|
validator = LicenseValidator(licence_id) |
|
|
|
|
|
|
|
|
|
|
|
if validator.validate_license() is False and self.tournament.license_is_required: |
|
|
|
if validator.validate_license() is False and self.tournament.license_is_required: |
|
|
|
@ -221,6 +224,7 @@ class TournamentRegistrationService: |
|
|
|
# computed_license_key = validator.computed_license_key |
|
|
|
# computed_license_key = validator.computed_license_key |
|
|
|
# messages.error(self.request, f"Le numéro de licence est invalide, la lettre ne correspond pas. {computed_license_key}") |
|
|
|
# messages.error(self.request, f"Le numéro de licence est invalide, la lettre ne correspond pas. {computed_license_key}") |
|
|
|
messages.error(self.request, "Le numéro de licence est invalide, la lettre ne correspond pas.") |
|
|
|
messages.error(self.request, "Le numéro de licence est invalide, la lettre ne correspond pas.") |
|
|
|
|
|
|
|
print("License validation failed") |
|
|
|
return False |
|
|
|
return False |
|
|
|
return True |
|
|
|
return True |
|
|
|
|
|
|
|
|
|
|
|
@ -276,16 +280,26 @@ class TournamentRegistrationService: |
|
|
|
player_data['is_woman'] = self.request.session.get('is_woman', False) |
|
|
|
player_data['is_woman'] = self.request.session.get('is_woman', False) |
|
|
|
|
|
|
|
|
|
|
|
def _update_user_license(self, licence_id): |
|
|
|
def _update_user_license(self, licence_id): |
|
|
|
if self.request.user.is_authenticated and licence_id: |
|
|
|
if not self.request.user.is_authenticated or not licence_id: |
|
|
|
self.context['add_player_form'].user_without_licence = False |
|
|
|
return False |
|
|
|
validator = LicenseValidator(licence_id) |
|
|
|
|
|
|
|
self.request.user.licence_id = validator.computed_licence_id |
|
|
|
self.context['add_player_form'].user_without_licence = False |
|
|
|
self.request.user.save() |
|
|
|
validator = LicenseValidator(licence_id) |
|
|
|
self.request.user.refresh_from_db() |
|
|
|
|
|
|
|
self.request.session.modified = True |
|
|
|
if validator.validate_license(): |
|
|
|
# Reset the form state |
|
|
|
computed_licence_id = validator.computed_licence_id |
|
|
|
self.context['add_player_form'] = AddPlayerForm() |
|
|
|
try: |
|
|
|
self.context['add_player_form'].first_tournament = False |
|
|
|
self.request.user.licence_id = computed_licence_id |
|
|
|
|
|
|
|
self.request.user.save() |
|
|
|
|
|
|
|
self.request.user.refresh_from_db() |
|
|
|
|
|
|
|
self.request.session.modified = True |
|
|
|
|
|
|
|
return True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
except IntegrityError: |
|
|
|
|
|
|
|
# Handle the duplicate license error |
|
|
|
|
|
|
|
error_msg = f"Ce numéro de licence ({computed_licence_id}) est déjà utilisé par un autre joueur." |
|
|
|
|
|
|
|
messages.error(self.request, error_msg) |
|
|
|
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
def _update_player_data_from_csv(self, player_data, csv_data): |
|
|
|
def _update_player_data_from_csv(self, player_data, csv_data): |
|
|
|
print("_update_player_data_from_csv", player_data, csv_data) |
|
|
|
print("_update_player_data_from_csv", player_data, csv_data) |
|
|
|
@ -305,16 +319,15 @@ class TournamentRegistrationService: |
|
|
|
'phone': None, |
|
|
|
'phone': None, |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
from django.contrib.auth import get_user_model |
|
|
|
|
|
|
|
User = get_user_model() |
|
|
|
User = get_user_model() |
|
|
|
|
|
|
|
|
|
|
|
# Get the license ID from player_data |
|
|
|
# Get the license ID from player_data |
|
|
|
licence_id = player_data.get('licence_id') |
|
|
|
licence_id = player_data.get('licence_id') |
|
|
|
validator = LicenseValidator(licence_id) |
|
|
|
validator = LicenseValidator(licence_id) |
|
|
|
if validator and validator.stripped_license: |
|
|
|
if validator.validate_license(): |
|
|
|
try: |
|
|
|
try: |
|
|
|
# Try to find a user with matching license |
|
|
|
# Try to find a user with matching license |
|
|
|
user_with_same_license = User.objects.get(licence_id__icontains=validator.stripped_license) |
|
|
|
user_with_same_license = User.objects.get(licence_id__iexact=validator.computed_licence_id) |
|
|
|
|
|
|
|
|
|
|
|
# If found, update the email and phone |
|
|
|
# If found, update the email and phone |
|
|
|
if user_with_same_license: |
|
|
|
if user_with_same_license: |
|
|
|
|