Beispiel #1
0
    def get_context(self, request: WSGIRequest):
        context = get_discord_context(request=request)
        challenges = Challenge.objects.all()
        context["monthly_challenges"] = [
            challenge for challenge in challenges if challenge.type == "MO"
            and challenge.posted and not challenge.ended
        ]
        context["weekly_challenges"] = [
            challenge for challenge in challenges if challenge.type == "WE"
            and challenge.posted and not challenge.ended
        ]
        context["unreleased_challenges"] = {
            "monthly_challenges": [],
            "weekly_challenges": []
        }
        context["ended_challenges"] = {"MO": [], "WE": []}

        for challenge in challenges:
            if challenge.type == "WE" and not challenge.posted:
                context["unreleased_challenges"]["weekly_challenges"].append(
                    challenge)
            if challenge.type == "MO" and not challenge.posted:
                context["unreleased_challenges"]["monthly_challenges"].append(
                    challenge)
            if challenge.ended:  # TODO : Someone pls create view for ended challenges
                context["ended_challenges"][challenge.type].append(challenge)
        context["challenges"] = any(
            (context["monthly_challenges"], context["weekly_challenges"],
             context["unreleased_challenges"]["weekly_challenges"],
             context["unreleased_challenges"]["monthly_challenges"]))

        return context
Beispiel #2
0
    def get(request: WSGIRequest) -> HttpResponse:
        if not request.user.is_authenticated:
            messages.add_message(request,
                                 messages.INFO,
                                 'You are already logged out!',
                                 extra_tags='alert alert-primary')
            return redirect('/')

        return render(request=request,
                      template_name="challenges/logout.html",
                      context=get_discord_context(request=request))
Beispiel #3
0
    def get_context(self, request: WSGIRequest, team_ID) -> dict:
        context = get_discord_context(request)
        if not context["is_verified"]:
            return context

        team = get_object_or_404(Team,
                                 ID=team_ID)  # Team.objects.get(ID=team_ID)

        members = team.members.all()
        discord_members = []
        for member in members:
            new_member = {}
            try:
                user = SocialAccount.objects.get(user_id=member.id)
            except SocialAccount.DoesNotExist:
                pass
            else:
                new_member["user_id"] = user.uid
                avatar_url = user.get_avatar_url()
                if avatar_url.endswith("None.png"):
                    random = randint(0, 4)
                    avatar_url = (
                        f"https://cdn.discordapp.com/embed/avatars/{random}.png"
                    )
                new_member["avatar_url"] = avatar_url
                new_member["username"] = user.extra_data["username"]
                new_member["discriminator"] = user.extra_data["discriminator"]
            discord_members.append(new_member)
        team.discord_members = discord_members
        print(team)
        context["team"] = team
        context["challenge"] = team.challenge
        if team.submitted:
            try:
                context["submission"] = Submission.objects.get(
                    team=team, challenge=team.challenge)
            except:
                pass
        print(context["challenge"].submissions_status)
        context["invite"] = request.build_absolute_uri(
            location=f"/timathon/member/{team.invite}")
        return context
Beispiel #4
0
    def get(request: WSGIRequest, challenge_id: int) -> HttpResponse:
        if not request.user.is_authenticated:
            messages.add_message(request, messages.INFO,
                                 'You are not logged in!')
            return redirect('/')

        challenges = Challenge.objects.filter(id=challenge_id)
        print(len(challenges))
        if not len(challenges):
            return redirect('/')

        context = get_discord_context(request=request)
        context["challenge"] = challenges[0]

        if not challenges[0].posted:
            if not discord.is_staff(member_id=context["user_id"]):
                messages.add_message(
                    request, messages.INFO,
                    "You do not have permission to view that!")
                return redirect('/')

        return render(request=request,
                      template_name="challenges/view.html",
                      context=context)
Beispiel #5
0
 def get_context(self, request: WSGIRequest) -> dict:
     return get_discord_context(request=request)
Beispiel #6
0
 def get_context(self, request: WSGIRequest):
     context = get_discord_context(request=request)
     return context
Beispiel #7
0
    def get_context(self, request: WSGIRequest):
        context = get_discord_context(request=request)
        # challenges = Challenge.objects.all()
        challenges = Challenge.objects.filter(type="MO", posted=True)
        context["challenges"] = challenges
        try:
            current_challenge = Challenge.objects.get(type="MO",
                                                      posted=True,
                                                      ended=False)
        except:
            current_challenge = None
        context["current_challenge"] = current_challenge
        """
        context['challenges'] = \
            [challenge for challenge in challenges if challenge.type == Challenge.ChallengeType.MONTHLY]

        context['current_challenge'] = [challenge for challenge in challenges
                                        if challenge.type == Challenge.ChallengeType.MONTHLY and not challenge.ended]

        context['current_challenge'] = context['current_challenge'][0] or None
        """
        if context["current_challenge"]:
            old_teams = list(
                Team.objects.filter(challenge=context["current_challenge"]))
            user_teams = list(
                Team.objects.filter(challenge=context["current_challenge"],
                                    members=request.user))
            if not len(user_teams) == 0:
                old_teams.remove(user_teams[0])
                old_teams.insert(0, user_teams[0])
            teams = []
            is_in_team = False
            for team in old_teams:
                members = team.members.all()
                discord_members = []
                for member in members:
                    new_member = {}
                    if member.id == request.user.id:
                        is_in_team = True
                    try:
                        user = SocialAccount.objects.get(user_id=member.id)
                    except SocialAccount.DoesNotExist:
                        pass
                    else:
                        new_member["user_id"] = user.uid
                        avatar_url = user.get_avatar_url()
                        if avatar_url.endswith("None.png"):
                            random = randint(0, 4)
                            avatar_url = (
                                f"https://cdn.discordapp.com/embed/avatars/{random}.png"
                            )
                        new_member["avatar_url"] = avatar_url
                        new_member["username"] = user.extra_data["username"]
                        new_member["discriminator"] = user.extra_data[
                            "discriminator"]
                    discord_members.append(new_member)
                team.discord_members = discord_members
                teams.append(team)

            context["in_team"] = is_in_team
            context["teams"] = teams
            paginator = Paginator(context["teams"], 24)

            page_number = request.GET.get("page")
            page_obj = paginator.get_page(page_number)
            context["page_obj"] = page_obj
            context["teams_registered"] = len(
                list(
                    Team.objects.filter(
                        challenge=context["current_challenge"])))

        return context
Beispiel #8
0
 def get(request: WSGIRequest) -> HttpResponse:
     return render(
         request=request,
         template_name="challenges/test.html",
         context=get_discord_context(request=request),
     )