from django.utils import timezone from rest_framework import status from challenges.models import ChallengePhaseSplit, LeaderboardData from participants.models import ParticipantTeam from base.utils import get_model_object, suppress_autotime from challenges.utils import get_challenge_model, get_challenge_phase_model from hosts.utils import is_user_a_host_of_challenge from participants.utils import get_participant_team_id_of_user_for_a_challenge from .constants import submission_status_to_exclude from .models import Submission from .serializers import SubmissionSerializer get_submission_model = get_model_object(Submission) get_challenge_phase_split_model = get_model_object(ChallengePhaseSplit) logger = logging.getLogger(__name__) def get_remaining_submission_for_a_phase( user, challenge_phase_pk, challenge_pk ): """ Returns the number of remaining submissions that a participant can do daily, monthly and in total to a particular challenge phase of a challenge. """ get_challenge_model(challenge_pk)
from rest_framework.throttling import UserRateThrottle from rest_framework_simplejwt.authentication import JWTAuthentication from accounts.permissions import HasVerifiedEmail from base.utils import get_model_object, team_paginated_queryset from .filters import HostTeamsFilter from .models import ChallengeHost, ChallengeHostTeam from .serializers import ( ChallengeHostSerializer, ChallengeHostTeamSerializer, InviteHostToTeamSerializer, HostTeamDetailSerializer, ) from .utils import is_user_part_of_host_team get_challenge_host_model = get_model_object(ChallengeHost) @api_view(["GET", "POST"]) @throttle_classes([UserRateThrottle]) @permission_classes((permissions.IsAuthenticated, HasVerifiedEmail)) @authentication_classes(( JWTAuthentication, ExpiringTokenAuthentication, )) def challenge_host_team_list(request): if request.method == "GET": challenge_host_team_ids = ChallengeHost.objects.filter( user=request.user).values_list("team_name", flat=True) challenge_host_teams = ChallengeHostTeam.objects.filter( id__in=challenge_host_team_ids).order_by("-id")
import logging import os import requests import tempfile import urllib.request from base.utils import get_model_object from challenges.utils import get_challenge_model, get_challenge_phase_model from django.utils import timezone from participants.utils import get_participant_team_id_of_user_for_a_challenge from rest_framework import status from .constants import submission_status_to_exclude from .models import Submission from .serializers import SubmissionSerializer get_submission_model = get_model_object(Submission) logger = logging.getLogger(__name__) def get_remaining_submission_for_a_phase(user, challenge_phase_pk, challenge_pk): """ Returns the number of remaining submissions that a participant can do daily, monthly and in total to a particular challenge phase of a challenge. """ get_challenge_model(challenge_pk) challenge_phase = get_challenge_phase_model(challenge_phase_pk) participant_team_pk = get_participant_team_id_of_user_for_a_challenge(
from django.core.files.base import ContentFile from moto import mock_ecr, mock_sts from base.utils import get_model_object, get_boto3_client, mock_if_non_prod_aws from .models import ( Challenge, ChallengePhase, Leaderboard, DatasetSplit, ChallengePhaseSplit, ) logger = logging.getLogger(__name__) get_challenge_model = get_model_object(Challenge) get_challenge_phase_model = get_model_object(ChallengePhase) get_leaderboard_model = get_model_object(Leaderboard) get_dataset_split_model = get_model_object(DatasetSplit) get_challenge_phase_split_model = get_model_object(ChallengePhaseSplit) def get_file_content(file_path, mode): if os.path.isfile(file_path): with open(file_path, mode) as file_content: return file_content.read()
from base.utils import get_model_object from challenges.models import Challenge from .models import ChallengeHost, ChallengeHostTeam def get_challenge_host_teams_for_user(user): """Returns challenge host team ids for a particular user""" return ChallengeHost.objects.filter(user=user).values_list("team_name", flat=True) def is_user_a_host_of_challenge(user, challenge_pk): """Returns boolean if the user is host of a challenge.""" if user.is_anonymous: return False challenge_host_teams = get_challenge_host_teams_for_user(user) return Challenge.objects.filter( pk=challenge_pk, creator_id__in=challenge_host_teams).exists() def is_user_part_of_host_team(user, host_team): """Returns boolean if the user belongs to the host team or not""" return ChallengeHost.objects.filter(user=user, team_name=host_team).exists() get_challenge_host_team_model = get_model_object(ChallengeHostTeam)
from challenges.models import Challenge from base.utils import get_model_object from .models import Participant, ParticipantTeam get_participant_team_model = get_model_object(ParticipantTeam) def is_user_part_of_participant_team(user, participant_team): """Returns boolean if the user belongs to the participant team or not""" return Participant.objects.filter(user=user, team=participant_team).exists() def has_participant_team_participated_in_challenge(participant_team_id, challenge_id): """Returns boolean if the Participant Team participated in particular Challenge""" return Challenge.objects.filter( pk=challenge_id, participant_team__id=participant_team_id).exists() def get_participant_teams_for_user(user): """Returns participant team ids for a particular user""" return Participant.objects.filter(user=user).values_list("team", flat=True) def has_user_participated_in_challenge(user, challenge_id): """Returns boolean if the user has participated in a particular challenge""" participant_teams = get_participant_teams_for_user(user) return Challenge.objects.filter( pk=challenge_id, participant_teams__in=participant_teams).exists()
import os from base.utils import get_model_object from .models import Challenge, ChallengePhase get_challenge_model = get_model_object(Challenge) get_challenge_phase_model = get_model_object(ChallengePhase) def get_file_content(file_path, mode): if os.path.isfile(file_path): with open(file_path, mode) as file_content: return file_content.read()