clean up import

sync_v2
Raz 7 months ago
parent 5337bd9af9
commit cd661743b8
  1. 3
      tournaments/filters.py
  2. 13
      tournaments/forms.py
  3. 1
      tournaments/models/enums.py
  4. 2
      tournaments/models/failed_api_call.py
  5. 2
      tournaments/models/log.py
  6. 1
      tournaments/models/player_enums.py
  7. 1
      tournaments/models/purchase.py
  8. 2
      tournaments/models/team_registration.py
  9. 4
      tournaments/models/team_score.py
  10. 8
      tournaments/models/tournament.py
  11. 2
      tournaments/models/unregistered_team.py
  12. 2
      tournaments/services/email_service.py
  13. 1
      tournaments/services/tournament_registration.py
  14. 14
      tournaments/signals.py
  15. 6
      tournaments/urls.py
  16. 81
      tournaments/views.py

@ -1,10 +1,9 @@
from django.contrib import admin from django.contrib import admin
from .models import Club, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, Court, DateInterval, FailedApiCall from .models import Tournament, Match
from django.db.models import Q from django.db.models import Q
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.utils import timezone from django.utils import timezone
from datetime import timedelta from datetime import timedelta
import uuid
from enum import Enum from enum import Enum
class SimpleTournamentListFilter(admin.SimpleListFilter): class SimpleTournamentListFilter(admin.SimpleListFilter):

@ -5,10 +5,14 @@ import re # Import the re module for regular expressions
from .utils.licence_validator import LicenseValidator from .utils.licence_validator import LicenseValidator
from django.core.mail import send_mail from django.core.mail import send_mail
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode from django.utils.http import urlsafe_base64_encode
from django.contrib.auth.tokens import default_token_generator from django.contrib.auth.tokens import default_token_generator
from django.contrib.sites.shortcuts import get_current_site from django.contrib.sites.shortcuts import get_current_site
from django.utils.encoding import force_bytes from django.utils.encoding import force_bytes
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth import authenticate # Add this import
import logging
class CustomUserCreationForm(UserCreationForm): class CustomUserCreationForm(UserCreationForm):
usable_password = None usable_password = None
@ -318,8 +322,6 @@ class ProfileUpdateForm(forms.ModelForm):
}, },
} }
from django.contrib.auth.forms import PasswordChangeForm
class CustomPasswordChangeForm(PasswordChangeForm): class CustomPasswordChangeForm(PasswordChangeForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -327,11 +329,6 @@ class CustomPasswordChangeForm(PasswordChangeForm):
for field in self.fields.values(): for field in self.fields.values():
field.widget.attrs.pop("autofocus", None) field.widget.attrs.pop("autofocus", None)
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth import authenticate # Add this import
from django import forms
import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class EmailOrUsernameAuthenticationForm(AuthenticationForm): class EmailOrUsernameAuthenticationForm(AuthenticationForm):

@ -1,5 +1,4 @@
from django.db import models from django.db import models
import uuid
class TournamentPayment(models.IntegerChoices): class TournamentPayment(models.IntegerChoices):
FREE = 0, 'Gratuit' FREE = 0, 'Gratuit'

@ -1,5 +1,5 @@
from django.db import models from django.db import models
from . import BaseModel, CustomUser from . import CustomUser
import uuid import uuid
class FailedApiCall(models.Model): class FailedApiCall(models.Model):

@ -1,5 +1,5 @@
from django.db import models from django.db import models
from . import BaseModel, CustomUser from . import CustomUser
import uuid import uuid
class Log(models.Model): class Log(models.Model):

@ -1,5 +1,4 @@
from django.db import models from django.db import models
import uuid
class PlayerPaymentType(models.IntegerChoices): class PlayerPaymentType(models.IntegerChoices):
CASH = 0, 'Cash' CASH = 0, 'Cash'

@ -1,5 +1,4 @@
from django.db import models from django.db import models
import uuid
from . import BaseModel, CustomUser from . import BaseModel, CustomUser

@ -1,9 +1,7 @@
from django.db import models from django.db import models
from django.db.models.sql.query import Q
from . import SideStoreModel, Tournament, GroupStage, Match from . import SideStoreModel, Tournament, GroupStage, Match
import uuid import uuid
from django.utils import timezone from django.utils import timezone
from django.db.models import Count
class TeamRegistration(SideStoreModel): class TeamRegistration(SideStoreModel):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)

@ -1,6 +1,7 @@
from django.db import models from django.db import models
from . import SideStoreModel, Match, TeamRegistration, PlayerRegistration, FederalMatchCategory from . import SideStoreModel, Match, TeamRegistration, FederalMatchCategory
import uuid import uuid
from .match import Team # Import Team only when needed
class TeamScore(SideStoreModel): class TeamScore(SideStoreModel):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
@ -125,7 +126,6 @@ class TeamScore(SideStoreModel):
names = self.shortened_team_names() names = self.shortened_team_names()
scores = self.parsed_scores() scores = self.parsed_scores()
walk_out = self.walk_out walk_out = self.walk_out
from .match import Team # Import Team only when needed
is_lucky_loser = self.lucky_loser is not None is_lucky_loser = self.lucky_loser is not None
team = Team(id, image, names, scores, weight, is_winner, walk_out, is_lucky_loser) team = Team(id, image, names, scores, weight, is_winner, walk_out, is_lucky_loser)
return team return team

@ -1,19 +1,15 @@
from zoneinfo import ZoneInfo from zoneinfo import ZoneInfo
from django.db import models from django.db import models
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from tournaments.models import group_stage
from . import BaseModel, Event, TournamentPayment, FederalMatchCategory, FederalCategory, FederalLevelCategory, FederalAgeCategory, OnlineRegistrationStatus from . import BaseModel, Event, TournamentPayment, FederalMatchCategory, FederalCategory, FederalLevelCategory, FederalAgeCategory, OnlineRegistrationStatus
import uuid import uuid
from django.utils import timezone, formats from django.utils import timezone, formats
from datetime import datetime, timedelta, time from datetime import datetime, timedelta, time
from tournaments.utils.player_search import get_player_name_from_csv from tournaments.utils.player_search import get_player_name_from_csv
from shared.cryptography import encryption_util from shared.cryptography import encryption_util
from ..utils.extensions import plural_format from ..utils.extensions import plural_format
from django.utils.formats import date_format from django.utils.formats import date_format
from ..utils.licence_validator import LicenseValidator from ..utils.licence_validator import LicenseValidator
from django.apps import apps
class TeamSortingType(models.IntegerChoices): class TeamSortingType(models.IntegerChoices):
RANK = 1, 'Rank' RANK = 1, 'Rank'
@ -1512,7 +1508,6 @@ class Tournament(BaseModel):
return "journée" return "journée"
def get_player_registration_status_by_licence(self, user): def get_player_registration_status_by_licence(self, user):
from . import PlayerRegistration
licence_id = user.licence_id licence_id = user.licence_id
if not licence_id: if not licence_id:
return None return None
@ -1521,6 +1516,7 @@ class Tournament(BaseModel):
if validator.validate_license(): if validator.validate_license():
stripped_license = validator.stripped_license stripped_license = validator.stripped_license
# Check if there is a PlayerRegistration for this user in this tournament # Check if there is a PlayerRegistration for this user in this tournament
PlayerRegistration = apps.get_model('tournaments', 'PlayerRegistration')
user_player = PlayerRegistration.objects.filter( user_player = PlayerRegistration.objects.filter(
licence_id__icontains=stripped_license, licence_id__icontains=stripped_license,
team_registration__tournament=self, team_registration__tournament=self,

@ -1,8 +1,6 @@
from django.db import models from django.db import models
from django.db.models.sql.query import Q
from . import Tournament from . import Tournament
import uuid import uuid
from django.utils import timezone
class UnregisteredTeam(models.Model): class UnregisteredTeam(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)

@ -1,6 +1,4 @@
from django.core.mail import EmailMessage from django.core.mail import EmailMessage
from django.utils import timezone
from django.urls import reverse
from enum import Enum from enum import Enum
from ..models.tournament import TeamSortingType from ..models.tournament import TeamSortingType

@ -52,7 +52,6 @@ class TournamentRegistrationService:
return return
# Clear existing messages if the form is valid # Clear existing messages if the form is valid
from django.contrib.messages import get_messages
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:

@ -1,20 +1,12 @@
import random import random
import string import string
from django.db.models.signals import pre_save, post_save, pre_delete
from django.db.models.signals import pre_save, post_save, pre_delete, post_delete
from django.dispatch import receiver from django.dispatch import receiver
from django.conf import settings from django.conf import settings
from django.utils import timezone from .models import Club, Tournament, FailedApiCall, Log, TeamRegistration
from .models import Club, Tournament, FailedApiCall, CustomUser, Log, TeamRegistration, PlayerRegistration, UnregisteredTeam, UnregisteredPlayer, TeamSortingType, PlayerDataSource
from tournaments.services.email_service import TournamentEmailService from tournaments.services.email_service import TournamentEmailService
from tournaments.services.email_service import TeamEmailType
from tournaments.services.email_service import TournamentEmailService, TeamEmailType
from tournaments.models import PlayerDataSource
from shared.discord import send_discord_log_message, send_discord_failed_calls_message from shared.discord import send_discord_log_message, send_discord_failed_calls_message
from datetime import datetime
from .utils.extensions import is_not_sqlite_backend from .utils.extensions import is_not_sqlite_backend
def generate_unique_code(): def generate_unique_code():

@ -1,12 +1,6 @@
from django.contrib.auth import views as auth_views from django.contrib.auth import views as auth_views
from django.urls import include, path from django.urls import include, path
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from .forms import EmailOrUsernameAuthenticationForm, CustomPasswordChangeForm
from .custom_views import CustomLoginView from .custom_views import CustomLoginView
from . import views from . import views
urlpatterns = [ urlpatterns = [

@ -1,6 +1,11 @@
# Standard library imports # Standard library imports
import os import os
import csv import csv
import pandas as pd
from .utils.extensions import create_random_filename
from api.serializers import GroupStageSerializer, MatchSerializer, PlayerRegistrationSerializer, TeamRegistrationSerializer, TeamScoreSerializer
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth import logout
from django.contrib.auth import update_session_auth_hash from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.views import PasswordResetCompleteView from django.contrib.auth.views import PasswordResetCompleteView
@ -13,29 +18,17 @@ from django.utils.encoding import force_str
from django.utils.http import urlsafe_base64_decode from django.utils.http import urlsafe_base64_decode
from django.urls import reverse from django.urls import reverse
from django.conf import settings from django.conf import settings
from django.db import transaction
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from django.contrib.admin.views.decorators import staff_member_required from django.contrib.admin.views.decorators import staff_member_required
from django.core.files.storage import default_storage from django.core.files.storage import default_storage
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from django.views.generic import View from django.views.generic import View
from django.db.models import Q from django.db.models import Q
from django.template import loader from .models import Club, Tournament, CustomUser, Event, Round, Match, TeamScore, TeamRegistration, PlayerRegistration, UserOrigin
from tournaments.models.device_token import DeviceToken
from .models import Court, DateInterval, Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamScore, TeamRegistration, PlayerRegistration, Purchase, FailedApiCall, UserOrigin
from .models import TeamSummon
from datetime import datetime, timedelta from datetime import datetime, timedelta
import time import time
from datetime import date
import json import json
import time
import asyncio import asyncio
from datetime import date, datetime, timedelta
import csv
import zipfile import zipfile
from api.tokens import account_activation_token from api.tokens import account_activation_token
@ -44,70 +37,26 @@ from api.tokens import account_activation_token
from qr_code.qrcode.utils import QRCodeOptions from qr_code.qrcode.utils import QRCodeOptions
# Django imports # Django imports
from django.shortcuts import render, redirect, get_object_or_404 from django.http import Http404
from django.http import HttpResponse, JsonResponse, Http404 from django.urls import reverse_lazy
from django.urls import reverse, reverse_lazy
from django.utils import timezone from django.utils import timezone
from django.utils.encoding import force_str, force_bytes from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode from django.utils.http import urlsafe_base64_encode
from django.template import loader
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.contrib import messages from django.contrib import messages
from django.contrib.sites.shortcuts import get_current_site from django.contrib.sites.shortcuts import get_current_site
from django.contrib.auth import login
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import (
UserCreationForm,
SetPasswordForm,
)
from django.contrib.auth.views import PasswordResetConfirmView from django.contrib.auth.views import PasswordResetConfirmView
from django.contrib.auth import get_user_model
from django.contrib.auth.tokens import default_token_generator
from django.db.models import Q
from django.views.decorators.csrf import csrf_exempt
from django.core.files.storage import default_storage
from django.core.files.base import ContentFile
from django.core.mail import EmailMessage from django.core.mail import EmailMessage
from django.views.decorators.csrf import csrf_protect from django.views.decorators.csrf import csrf_protect
from .services.tournament_registration import TournamentRegistrationService from .services.tournament_registration import TournamentRegistrationService
from .services.tournament_unregistration import TournamentUnregistrationService from .services.tournament_unregistration import TournamentUnregistrationService
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
# Local application imports
from .models import (
Court,
DateInterval,
Club,
Tournament,
CustomUser,
Event,
Round,
GroupStage,
Match,
TeamScore,
TeamRegistration,
PlayerRegistration,
Purchase,
FailedApiCall,
TeamSummon,
FederalCategory,
UnregisteredTeam,
UnregisteredPlayer
)
from .forms import ( from .forms import (
SimpleForm,
SimpleCustomUserCreationForm,
TournamentRegistrationForm,
AddPlayerForm,
ProfileUpdateForm, ProfileUpdateForm,
) )
from .utils.apns import send_push_notification from .utils.apns import send_push_notification
from .utils.licence_validator import LicenseValidator from .utils.licence_validator import LicenseValidator
from .utils.player_search import get_player_name_from_csv
from api.tokens import account_activation_token
from tournaments.models.device_token import DeviceToken
from tournaments.models.player_enums import PlayerDataSource, PlayerSexType
from django.views.generic.edit import UpdateView from django.views.generic.edit import UpdateView
from .forms import CustomPasswordChangeForm from .forms import CustomPasswordChangeForm
@ -531,7 +480,6 @@ def activate(request, uidb64, token):
user.save() user.save()
# Specify the authentication backend when logging in # Specify the authentication backend when logging in
from django.contrib.auth import login
login(request, user, backend='django.contrib.auth.backends.ModelBackend') login(request, user, backend='django.contrib.auth.backends.ModelBackend')
return redirect('activation_success') return redirect('activation_success')
@ -603,9 +551,6 @@ def test_websocket(request):
def terms_of_use(request): def terms_of_use(request):
return render(request, 'terms_of_use.html') return render(request, 'terms_of_use.html')
import pandas as pd
from .utils.extensions import create_random_filename
@csrf_exempt @csrf_exempt
def xls_to_csv(request): def xls_to_csv(request):
if request.method == 'POST': if request.method == 'POST':
@ -937,8 +882,6 @@ def all_my_ended_tournaments(request):
'title': "Palmarès", 'title': "Palmarès",
}) })
from django.contrib.auth.mixins import LoginRequiredMixin
class ProfileUpdateView(LoginRequiredMixin, UpdateView): class ProfileUpdateView(LoginRequiredMixin, UpdateView):
model = CustomUser model = CustomUser
form_class = ProfileUpdateForm form_class = ProfileUpdateForm
@ -954,9 +897,6 @@ class ProfileUpdateView(LoginRequiredMixin, UpdateView):
context['password_change_form'] = CustomPasswordChangeForm(user=self.request.user) context['password_change_form'] = CustomPasswordChangeForm(user=self.request.user)
return context return context
from api.serializers import GroupStageSerializer, MatchSerializer, PlayerRegistrationSerializer, TeamRegistrationSerializer, TeamScoreSerializer
@staff_member_required @staff_member_required
def tournament_import_view(request): def tournament_import_view(request):
if request.method == 'POST': if request.method == 'POST':
@ -1169,7 +1109,6 @@ def tournament_prog(request, tournament_id):
return render(request, 'tournaments/prog.html', context) return render(request, 'tournaments/prog.html', context)
def custom_logout(request): def custom_logout(request):
from django.contrib.auth import logout
logout(request) logout(request)
return redirect('index') # or whatever URL you want to redirect to return redirect('index') # or whatever URL you want to redirect to

Loading…
Cancel
Save