Exemple #1
0
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)
Exemple #2
0
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")
Exemple #3
0
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(
Exemple #4
0
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()
Exemple #5
0
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)
Exemple #6
0
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()
Exemple #7
0
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()