From b4fbdf7820e671997ddf0d55bf4c7152dda67333 Mon Sep 17 00:00:00 2001 From: Michael Wittig Date: Tue, 4 Oct 2016 09:15:39 +0200 Subject: [PATCH] awp boundaries shown in player detail view --- core/admin.py | 2 +- core/models.py | 6 ------ core/ofm_views.py | 12 ++++++++++-- core/tests/unit/test_ofm_player_detail_view.py | 17 ++++++++++++++--- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/core/admin.py b/core/admin.py index 1f9c9df..7b915cd 100644 --- a/core/admin.py +++ b/core/admin.py @@ -50,7 +50,7 @@ class PlayerStatisticsAdmin(admin.ModelAdmin): class AwpBoundariesAdmin(admin.ModelAdmin): list_filter = ['name', 'matchday'] list_display = ['name', 'matchday'] - fields = ['name', 'matchday', 'keys', 'values'] + fields = ['name', 'matchday'] search_fields = ['matchday'] diff --git a/core/models.py b/core/models.py index 390bbe9..955a6d3 100644 --- a/core/models.py +++ b/core/models.py @@ -673,12 +673,6 @@ def clear(self): """ self.keyvaluepair_set.all().delete() - # def __unicode__(self): - # """Returns a unicode representation of the Dictionary. - # - # """ - # return unicode(self.asPyDict()) - def as_py_dict(self): """Get a python dictionary that represents this Dictionary object. This object is read-only. diff --git a/core/ofm_views.py b/core/ofm_views.py index ba740db..31735e7 100644 --- a/core/ofm_views.py +++ b/core/ofm_views.py @@ -1,7 +1,7 @@ from braces.views import CsrfExemptMixin, JsonRequestResponseMixin from chartit import DataPool, Chart from core.models import Player, Contract, PlayerStatistics, Finance, Matchday, Match, MatchStadiumStatistics, \ - StadiumStandStatistics + StadiumStandStatistics, AwpBoundaries from django.contrib.auth.decorators import login_required from django.core.exceptions import MultipleObjectsReturned from django.utils.decorators import method_decorator @@ -155,15 +155,23 @@ def get(self, request, *args, **kwargs): player_id = self.request.GET.get('player_id') player = Player.objects.filter(id=player_id) data_source = PlayerStatistics.objects.filter(player=player, matchday__season__number=season_number) + awps = [player_stat.awp for player_stat in data_source] chart_json = { "series": [{ "name": 'AWP', - "data": [player_stat.awp for player_stat in data_source] + "data": awps }], "categories": [player_stat.matchday.number for player_stat in data_source] } + awp_boundaries = AwpBoundaries.get_from_matchday(Matchday.objects.all()[0]) + bound_displayed = False + for strength in awp_boundaries: + if awp_boundaries[strength] >= max(awps) and not bound_displayed: + chart_json['series'].append({'name': 'AWP-Grenze: %s' % strength, 'data': [awp_boundaries[strength]] * len(data_source)}) + bound_displayed = True + return self.render_json_response(chart_json) diff --git a/core/tests/unit/test_ofm_player_detail_view.py b/core/tests/unit/test_ofm_player_detail_view.py index 4f1a9e7..025d8c3 100644 --- a/core/tests/unit/test_ofm_player_detail_view.py +++ b/core/tests/unit/test_ofm_player_detail_view.py @@ -1,10 +1,9 @@ import json +from core.factories.core_factories import MatchdayFactory, PlayerFactory, PlayerStatisticsFactory +from core.models import Contract, AwpBoundaries from django.core.urlresolvers import reverse from django.test import TestCase - -from core.factories.core_factories import MatchdayFactory, PlayerFactory -from core.models import Contract from users.models import OFMUser @@ -30,10 +29,22 @@ def test_user_cannot_see_other_users_players(self): self.assertFalse('player' in response.context_data) def test_player_chart_json(self): + + PlayerStatisticsFactory.create(player=self.player, matchday=self.matchday) + + awp_boundaries = AwpBoundaries.create_from_matchday(self.matchday) + awp_boundaries[2] = 1000 + response = self.client.get(reverse('core:ofm:players_chart_json'), {'player_id': self.player.id}) self.assertEqual(response.status_code, 200) returned_json_data = json.loads(response.content.decode('utf-8')) self.assertTrue('series' in returned_json_data) + self.assertEquals('AWP', returned_json_data['series'][0]['name']) self.assertTrue('data' in returned_json_data['series'][0]) + + self.assertEquals('AWP-Grenze: 2', returned_json_data['series'][1]['name']) + self.assertTrue('data' in returned_json_data['series'][1]) + self.assertEquals([1000], returned_json_data['series'][1]['data']) + self.assertTrue('categories' in returned_json_data)