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 } )
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 } )