示例#1
0
文件: views.py 项目: theiviaxx/ladder
    def ratingGraph(self, request, obj_id):
        res = Result()
        team = Team.objects.get(pk=obj_id)
        ladderID = request.GET.get('ladder', None)
        if ladderID:
            try:
                ladder = Ladder.objects.get(pk=ladderID)
            except ObjectDoesNotExist:
                raise Http404
        else:
            try:
                ladder = RatingHistory.objects.filter(team=team).latest().ladder
            except ObjectDoesNotExist:
                raise Http404

        ratings = RatingHistory.objects.filter(ladder=ladder, team=team).order_by('id')
        
        data = {
            'title': ladder.name,
            'rows': [[int(rating.rating),] for rating in ratings],
            'rowNames': [],
            'colNames': [team.name,],
        }
        res.isSuccess = True
        res.append(data)

        return JsonResponse(data)
示例#2
0
文件: views.py 项目: theiviaxx/ladder
    def ticker(self, request):
        res = Result()
        res.isSuccess = True
        for g in Game.objects.filter(status=Game.Closed)[:5]:
            res.append(g.json())

        return JsonResponse(res)
示例#3
0
文件: views.py 项目: theiviaxx/ladder
    def get(self, request, obj_id, requestData={}):
        context = requestData
        if request.GET.get('json', False):
            res = Result()
            res.isSuccess = True
            res.append(context['object'].json())
            
            return JsonResponse(res)

        redGames = Game.objects.filter(red__exact=context['id'], status=Game.Closed)
        bluGames = Game.objects.filter(blu__exact=context['id'], status=Game.Closed)
        games = redGames | bluGames

        game_hist = []
        for n in games:
            obj = {
                'opponent': n.blu if context['object'] == n.red else n.red,
                'ladder': n.ladder,
                'status': n.status,
                'win': n.result == context['object'],
                'date': n.created,
                'delta': n.red_change if context['object'] == n.red else n.blu_change,
            }
            game_hist.append(obj)

        context['games'] = game_hist
        context['isMember'] = True if (context['object'].members.filter(username=context['request'].user.username).count()) > 0 else False

        return render(request, 'ladder/team.html', context)
示例#4
0
文件: views.py 项目: theiviaxx/ladder
 def quick(self, request):
     res = Result()
     context = self._processRequest(request)
     serobj = context['request'].POST.get('q', False)
     if serobj:
         obj = json.loads(serobj)
         ladder = Ladder.objects.get(pk=obj['ladder'])
         red = Team.objects.get(pk=obj['red'])
         blu = Team.objects.get(pk=obj['blu'])
         games = []
         for n in xrange(obj['red_wins']):
             g = Game(ladder=ladder, red=red, blu=blu)
             g.save()
             g.update(red)
             games.append(g)
         for n in xrange(obj['blu_wins']):
             g = Game(ladder=ladder, red=red, blu=blu)
             g.save()
             g.update(blu)
             games.append(g)
         
         res.isSuccess = True    
         res.append([g.json() for g in games])
     else:
         res.isError = True
         res.message = "No query provided"
     
     return JsonResponse(res)
示例#5
0
文件: views.py 项目: theiviaxx/ladder
    def view(self, request, obj_id):
        #self._processRequest(request, obj_id)

        res = Result()
        res.isSuccess = True
        res.append(userToJson(context['object']))

        return JsonResponse(res)
示例#6
0
文件: views.py 项目: theiviaxx/ladder
    def validateName(self, request):
        #self._processRequest(request)
        t = Team.objects.filter(name=request.GET.get('name', None))

        res = Result()
        res.isSuccess = True
        res.append(not bool(len(t)))

        return JsonResponse(res)
示例#7
0
文件: views.py 项目: theiviaxx/ladder
    def query(self, request):
        q = request.POST.get('search', '')
        results = []
        res = Result()
        if q:
            users = User.objects.filter(Q(username__icontains=q) | Q(first_name__icontains=q) | Q(last_name__icontains=q))
            for n in users:
                results.append([n.id, n.username])
            res.isSuccess = True
            res.append(results)
        else:
            res.isError = True
            res.message = 'No search query provided'

        return JsonResponse(res)
示例#8
0
文件: views.py 项目: theiviaxx/ladder
    def getTeams(self, request):
        userID = request.GET.get('id', None)
        teamSize = request.GET.get('team_size', None)
        data = False
        if userID:
            obj = User.objects.get(pk=userID)
            teams = obj.teams.all()
            if teamSize:
                teams = teams.filter(laddermembership__ladder__team_size=int(teamSize))

            data = [team.json() for team in teams]
        
        res = Result()
        res.isSuccess = True
        res.append(data)

        return JsonResponse(res)
示例#9
0
文件: views.py 项目: theiviaxx/ladder
    def history(self, request, obj_id):
        team = Team.objects.get(pk=obj_id)
        limit = request.GET.get('limit', None)

        redGames = Game.objects.filter(red__exact=team.id, status=Game.Closed)
        bluGames = Game.objects.filter(blu__exact=team.id, status=Game.Closed)
        games = redGames | bluGames

        if limit:
            games = games[:int(limit)]
        
        res = Result()
        res.isSuccess = True
        for game in games:
            res.append(game.json())

        return JsonResponse(res)
示例#10
0
文件: views.py 项目: theiviaxx/ladder
    def history(self, request, obj_id, returnType=None):
        context = self._processRequest(request, obj_id)
        res = Result()
        limit = request.GET.get('limit', None)

        teams = context['object'].teams.values_list('id', flat=True).order_by('id')
        games = Game.objects.filter(Q(red__in=teams) | Q(blu__in=teams))
        if limit:
            games = games[:int(limit)]
        
        if returnType == 'object':
            return games
        elif returnType == 'json':
            return [game.json() for game in games]
        else:
            res.isSuccess = True
            res.append([game.json() for game in games])
            return JsonResponse(res)
示例#11
0
文件: views.py 项目: theiviaxx/ladder
    def join(self, request, obj_id, context):
        """ Joins a team to a ladder """
        res = Result()
        teamId = context['request'].POST.get('team', None)

        if teamId:
            try:
                team = Team.objects.get(pk=teamId)
            except ObjectDoesNotExist:
                res.isError = True
                res.message = "Team not found"

                return JsonResponse(res)
            
            if context['object'].laddermembership_set.filter(team=team).count() > 0:
                res.isError = True
                res.message = ALREADY_MEMBER

                return JsonResponse(res)
            
            if len(team) != context['object'].team_size:
                res.isError = True
                res.message = L_INCORRECT_SIZE % context['object'].team_size

                return JsonResponse(res)
            
            # Get a new rating object
            rating = RatingHistory(team=team,ladder=context['object'])
            rating.save()

            lm = LadderMembership(team=team, ladder=context['object'], rating=rating)
            lm.save()

            res.isSuccess = True
            res.append(team.json())

            #self.mail_join(team)

            return JsonResponse(res)
        else:
            res.isError = True
            res.message = "No team provided"

            return JsonResponse(res)
示例#12
0
文件: views.py 项目: theiviaxx/ladder
    def update(self, request, obj_id, context):
        """
        Does the maths for the result of the game and closes it out
        """
        
        updatePending()
        res = Result()
        request.POST
        
        if context['object'].status != 0:
            res.isError = True
            res.message = "This game is not open"
            
            return JsonResponse(res)

        if context['request'].user in context['object'].red.members.all() or context['request'].user in context['object'].blu.members.all():
            result = request.POST.get('result', None)
            if not result:
                res.isError = True
                res.message = "Incorrect result type, int required"
                
                return JsonResponse(res)

            context['object'].update(Team.objects.get(pk=result))

            # Send the emails of the results
            red = [user.email for user in context['object'].red.members.all()]
            blu = [user.email for user in context['object'].blu.members.all()]
            #mail('Game has ended', 'ladder/email/game.html', {'game': context['object'], 'user': context['request'].user}, red + blu)
            res.isSuccess = True
            res.message = "Game is now closed"
            res.append(context['object'].json())
        else:
            res.isError = True
            res.message = 'You are not a member of either team for this game.'

        return JsonResponse(res)