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)
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)
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)
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)
def view(self, request, obj_id): #self._processRequest(request, obj_id) res = Result() res.isSuccess = True res.append(userToJson(context['object'])) return JsonResponse(res)
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)
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)
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)
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)
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)
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)
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)