adds a service to request if the user has a hierarchy that can pay

apikeys
Laurent 4 months ago
parent 9c80016575
commit b3a59f5aa2
  1. 1
      api/urls.py
  2. 39
      api/views.py
  3. 6
      tournaments/models/purchase.py
  4. 3
      tournaments/views.py

@ -35,6 +35,7 @@ urlpatterns = [
path('sync-data/', SynchronizationApi.as_view(), name="data"), path('sync-data/', SynchronizationApi.as_view(), name="data"),
path('data-access-content/', UserDataAccessApi.as_view(), name="data-access-content"), path('data-access-content/', UserDataAccessApi.as_view(), name="data-access-content"),
path("can_create_tournament/", views.has_hierarchy_with_payment_capabilities, name="can-create-tournament"),
path('api-token-auth/', obtain_auth_token, name='api_token_auth'), path('api-token-auth/', obtain_auth_token, name='api_token_auth'),
path("user-by-token/", views.user_by_token, name="user_by_token"), path("user-by-token/", views.user_by_token, name="user_by_token"),

@ -1,34 +1,33 @@
from .serializers import ClubSerializer, CourtSerializer, DateIntervalSerializer, DrawLogSerializer, TournamentSerializer, UserSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamScoreSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer, PurchaseSerializer, ShortUserSerializer, FailedApiCallSerializer, LogSerializer, DeviceTokenSerializer, CustomUserSerializer, UnregisteredTeamSerializer, UnregisteredPlayerSerializer, ImageSerializer
from tournaments.models import Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamScore, TeamRegistration, PlayerRegistration, Court, DateInterval, Purchase, FailedApiCall, Log, DeviceToken, DrawLog, UnregisteredTeam, UnregisteredPlayer, Image
from rest_framework import viewsets from rest_framework import viewsets
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.decorators import api_view from rest_framework.decorators import api_view, permission_classes
from rest_framework import status from rest_framework import status
from rest_framework.exceptions import MethodNotAllowed from rest_framework.exceptions import MethodNotAllowed
from rest_framework.permissions import IsAuthenticated
from django.http import Http404 from django.conf import settings
from django.http import Http404, HttpResponse, JsonResponse
from django.db.models import Q from django.db.models import Q
from django.core.files.storage import default_storage
from django.core.files.base import ContentFile
from django.shortcuts import get_object_or_404
from .serializers import ClubSerializer, CourtSerializer, DateIntervalSerializer, DrawLogSerializer, TournamentSerializer, UserSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamScoreSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer, PurchaseSerializer, ShortUserSerializer, FailedApiCallSerializer, LogSerializer, DeviceTokenSerializer, CustomUserSerializer, UnregisteredTeamSerializer, UnregisteredPlayerSerializer, ImageSerializer
from tournaments.models import Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamScore, TeamRegistration, PlayerRegistration, Court, DateInterval, Purchase, FailedApiCall, Log, DeviceToken, DrawLog, UnregisteredTeam, UnregisteredPlayer, Image
from .permissions import IsClubOwner from .permissions import IsClubOwner
from .utils import check_version_smaller_than_1_1_12 from .utils import check_version_smaller_than_1_1_12
from shared.discord import send_discord_log_message from shared.discord import send_discord_log_message
from rest_framework.decorators import permission_classes
from rest_framework.permissions import IsAuthenticated
from django.shortcuts import get_object_or_404
from tournaments.services.payment_service import PaymentService from tournaments.services.payment_service import PaymentService
from django.conf import settings from tournaments.utils.extensions import create_random_filename
import stripe import stripe
import json import json
import pandas as pd import pandas as pd
from tournaments.utils.extensions import create_random_filename
from django.core.files.storage import default_storage
from django.core.files.base import ContentFile
import os import os
from django.http import HttpResponse
import logging import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -568,3 +567,15 @@ def validate_stripe_account(request):
'error': f'Unexpected error: {str(e)}', 'error': f'Unexpected error: {str(e)}',
'needs_onboarding': True, 'needs_onboarding': True,
}, status=200) }, status=200)
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def has_hierarchy_with_payment_capabilities(request):
can_create = False
if request.user and request.user.is_anonymous == False and request.user.owners:
for owner in request.user.owners.all():
purchases = Purchase.objects.filter(user=owner,product_id='app.padelclub.tournament.subscription.unlimited')
for purchase in purchases:
if purchase.is_active():
can_create = True
return JsonResponse({'can_create': can_create}, status=status.HTTP_200_OK)

@ -1,6 +1,7 @@
from django.db import models from django.db import models
from . import BaseModel, CustomUser from django.utils import timezone
from . import BaseModel, CustomUser
class Purchase(BaseModel): class Purchase(BaseModel):
id = models.BigIntegerField(primary_key=True, unique=True, editable=True) id = models.BigIntegerField(primary_key=True, unique=True, editable=True)
@ -16,3 +17,6 @@ class Purchase(BaseModel):
def __str__(self): def __str__(self):
return f"{self.id} > {self.product_id} - {self.purchase_date} - {self.user.username}" return f"{self.id} > {self.product_id} - {self.purchase_date} - {self.user.username}"
def is_active(self):
return self.expiration_date > timezone.now()

@ -21,7 +21,7 @@ from django.conf import settings
from django.contrib.admin.views.decorators import staff_member_required from django.contrib.admin.views.decorators import staff_member_required
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 .models import Club, Tournament, CustomUser, Event, Round, Match, TeamScore, TeamRegistration, PlayerRegistration, UserOrigin from .models import Club, Tournament, CustomUser, Event, Round, Match, TeamScore, TeamRegistration, PlayerRegistration, UserOrigin, Purchase
from datetime import datetime, timedelta from datetime import datetime, timedelta
import time import time
import json import json
@ -1678,7 +1678,6 @@ def get_user_tournaments(user, tournaments):
def stripe_onboarding_complete(request): def stripe_onboarding_complete(request):
return render(request, 'stripe/onboarding_complete.html') return render(request, 'stripe/onboarding_complete.html')
def stripe_refresh_account_link(request): def stripe_refresh_account_link(request):
return render(request, 'stripe/refresh_account_link.html') return render(request, 'stripe/refresh_account_link.html')

Loading…
Cancel
Save