Example #1
0
def message_challenges( request ) :
    if request.method == "POST" :
        try :
            action    = request.POST['action']
            notice_id = request.POST['note_id']

            challenge = Challenge.objects.get( pk = notice_id )

            if challenge.challengee == request.user :
                if action == "accept_challenge" :
                    challenge.accept()
                    challenge.save()
                    messages.success( request, "You accepted the challenge against {}".format( challenge.challenger.userprofile.handle ) )
                elif action == "decline_challenge" :
                    challenge.forfeit()
                    challenge.save()
                    messages.success( request, "You forfeited the challenge against {}".format( challenge.challenger.userprofile.handle ) )
                else :
                    messages.error( request, "Invalid command" )
            elif challenge.challenger == request.user :
                if action == "cancel_challenge" :
                    if challenge.accepted == Challenge.STATUS_NOT_ACCEPTED :
                        challenge.cancel()
                        messages.success( request, "You canceled the challenge against {}".format( challenge.challengee.userprofile.handle ) )
                    else:
                        messages.warning( request, "The match has already been marked as {}".format( challenge.get_accepted_display() ) )
                pass
            else :
                raise PlayerNotInvolved()
        except AttributeError :
            messages.error( request, "Tried to use an invalid command. Tell a programmer." )
        except KeyError :
            messages.error( request, "Not enough information to complete request." )
        except PlayerNotInvolved :
            messages.error( request, "Challenge not found." )
        except ObjectDoesNotExist :
            messages.error( request, "Challenge not found." )

    challenges = _get_user_challenges( request.user )

    # status = 1
    # Accepted
    open_challenges = challenges.filter( challengee = request.user ).filter( accepted = 0 )

    # status = 0
    # Not Accepted / Pending
    pending_challenges = challenges.filter( challenger = request.user ).filter( accepted = 0 )

    # status = 2, 3, 4
    # Completed, Forfeit, Postponed
    past_challenges = challenges.filter( Q( challenger = request.user )|Q( challengee = request.user ) ).filter( Q( accepted = 2 )|Q( accepted = 3 )|Q( accepted = 4 ) )[:25]

    return render( request, "challenges.html", { 'open_challenges':open_challenges, 'pending_challenges': pending_challenges, 'past_challenges':past_challenges } )
Example #2
0
def message_list( request ) :
    num_challenges    = _get_user_challenges( request.user ).filter( accepted = 0 ).count()
    num_matches       = Match.objects.filter( Q(winner__isnull = True) & ( Q(challengee = request.user) | Q(challenger = request.user) ) ).count()
    return render( request, "messages.html", { 'num_challenges':num_challenges, 'num_matches':num_matches } )