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