Skip to content

Commit a863567

Browse files
Copied final commits from old broken branch into new branch. (#224)
1 parent 88aba8c commit a863567

6 files changed

Lines changed: 115 additions & 6 deletions

File tree

dao.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import os
66
import pymongo
77
import re
8+
from itertools import groupby
89

910
from config.config import Config
1011

@@ -189,6 +190,40 @@ def update_player_name(self, player, name):
189190
player.name = name
190191
return self.update_player(player)
191192

193+
def get_all_player_tournaments_by_id(self, id):
194+
result = self.players_col.find({"_id": id})
195+
if result.count() == 0:
196+
return None
197+
tournaments = \
198+
[ M.Tournament.load(t, context='db') for t in self.tournaments_col.find({'players': {'$in': [id] }}) ]
199+
return tournaments
200+
201+
def sort_player_tournaments_by_region(self, id):
202+
result = self.players_col.find({"_id": id})
203+
if result.count() == 0:
204+
return None
205+
tournaments = self.get_all_player_tournaments_by_id(id)
206+
207+
region_count = {}
208+
for tournament in tournaments:
209+
if not tournament.regions[0]: pass
210+
211+
region = tournament.regions[0]
212+
if region_count.get(region, None) is None:
213+
region_count[region] = 0
214+
region_count[region] = region_count[region] + 1
215+
216+
counts = []
217+
for region, count in region_count.iteritems():
218+
r = {
219+
'name': region,
220+
'count': count
221+
}
222+
counts.append(r)
223+
counts = sorted(counts, key=lambda x: x['count'], reverse=True)
224+
return counts
225+
226+
192227
def insert_pending_tournament(self, pending_tournament):
193228
return self.pending_tournaments_col.insert(pending_tournament.dump(context='db'))
194229

@@ -566,7 +601,7 @@ def get_region_ranking_criteria(self, region_id):
566601
result = self.regions_col.find_one({'_id': region_id})
567602
if result:
568603
region = M.Region.load(result, context='db')
569-
return region.dump(context='web')
604+
return region.dump(context='web')
570605

571606
# throws an exception, which is okay because this is called from just create_user
572607
def insert_user(self, user):

server.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,36 @@ def put(self, region, id):
245245

246246
return player.dump(context='web')
247247

248+
class PlayerTournamentResource(restful.Resource):
249+
def get(self, region, id):
250+
dao = get_dao(None)
251+
252+
try:
253+
tournament_objects = dao.get_all_player_tournaments_by_id(ObjectId(id))
254+
tournaments = []
255+
for t in tournament_objects:
256+
t = t.dump(context='web')
257+
tournaments.append(t)
258+
259+
return tournaments
260+
except Exception as e:
261+
print e
262+
return 400
263+
264+
class PlayerSortedTournamentResource(restful.Resource):
265+
def get(self, region, id):
266+
dao = get_dao(None)
267+
268+
try:
269+
region_sorted_tournament_counts = dao.sort_player_tournaments_by_region(ObjectId(id))
270+
return region_sorted_tournament_counts
271+
except Exception as e:
272+
import traceback
273+
traceback.print_exc(file=sys.stdout)
274+
print 'errrrrrrrror'
275+
print e
276+
return 400
277+
248278

249279
class TournamentSeedResource(restful.Resource):
250280

@@ -1243,6 +1273,8 @@ def add_cors(resp):
12431273

12441274
api.add_resource(PlayerListResource, '/<string:region>/players')
12451275
api.add_resource(PlayerResource, '/<string:region>/players/<string:id>')
1276+
api.add_resource(PlayerTournamentResource, '/<string:region>/players/<string:id>/tournaments')
1277+
api.add_resource(PlayerSortedTournamentResource, '/<string:region>/players/<string:id>/sortedtournaments')
12461278

12471279
api.add_resource(TournamentSeedResource, '/<string:region>/tournamentseed')
12481280

webapp/app/players/controllers/playerDetail.controller.js

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,31 @@ angular.module('app.players').controller("PlayerDetailController", function($sco
5151

5252
$scope.postParams = {name: $scope.player.name}
5353
$scope.playerRegionCheckbox = {}
54+
$scope.isSuperAdmin = $scope.sessionService.isSuperAdmin();
5455

5556
$scope.sessionService.getAdminRegions().forEach(
5657
function(regionId){
57-
if($scope.isPlayerInRegion(regionId)){
58+
if ($scope.isPlayerInRegion(regionId)) {
5859
$scope.playerRegionCheckbox[regionId] = "IN_REGION";
59-
}else{
60+
} else if (!$scope.isPlayerInRegion(regionId)) {
6061
$scope.playerRegionCheckbox[regionId] = "NOT_IN_REGION";
62+
}
63+
}
64+
);
65+
66+
$scope.getRemainingRegions = function() {
67+
retRegions = []
68+
adminRegions = $scope.sessionService.getAdminRegions();
69+
$scope.regionService.regions.forEach(
70+
function(region) {
71+
if (!adminRegions.includes(region.id)) {
72+
retRegions.push(region);
73+
}
6174
}
62-
});
63-
75+
)
76+
return retRegions;
77+
}
78+
6479
$scope.disableButtons = false;
6580
$scope.errorMessage = false;
6681
};

webapp/app/players/views/player_detail.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ <h1 class="text-right"><button type="button" class="btn btn-danger mobile" ng-cl
1212
<h2><em>This player has been merged into player <a href="#/{{regionService.region.id}}/players/{{player.merge_parent}}">{{mergeParent.name}}</a>.</em></h2>
1313
</div>
1414
</div>
15+
<!-- Insert Player Region -->
16+
<div class="row">
17+
<!-- Will need to change the formatting if worldwide use is implemented -->
18+
<p class="player-region">{{regionService.region.display_name}}</p>
19+
</div>
1520
<div ng-show="!player.merged">
1621
<div class="row">
1722
<div class="player-rating col-md-12">

webapp/app/players/views/player_details_modal.html

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,19 @@ <h4>
1616
class="mobile"
1717
ng-model="playerRegionCheckbox[regionId]"
1818
ng-true-value="'IN_REGION'"
19-
ng-false-value="'NOT_IN_REGION'">
19+
>
2020
{{regionService.getRegionDisplayNameFromRegionId(regionId)}}
2121
</label>
2222
</h4>
2323
</div>
24+
<div class="checkbox" ng-class="{readonly: !isSuperAdmin}" ng-repeat="region in getRemainingRegions()">
25+
<h4>
26+
<label>
27+
<input type="checkbox" ng-disabled="!isSuperAdmin" class="mobile">
28+
{{region.display_name}}
29+
</label>
30+
</h4>
31+
</div>
2432
</div>
2533
<button type="submit" class="btn btn-primary mobile_small" ng-disabled="disableButtons">Submit</button>
2634
<p class="text-danger" ng-show="errorMessage"><strong>There was an error. Please make sure everything is spelled correctly and try again.</strong></p>

webapp/styles/style.css

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,20 @@ table{
146146
background-color: rgba(0, 0, 0, 0.3);
147147
}
148148

149+
.player-region {
150+
margin-left: 15px;
151+
font-size: 16pt;
152+
color: #777777;
153+
transform: translateY(-30%);
154+
}
155+
156+
.readonly {
157+
opacity: .50;
158+
font-style: italic;
159+
filter: alpha(opacity=50);
160+
cursor: auto;
161+
}
162+
149163

150164

151165
/*END application-wide styling */

0 commit comments

Comments
 (0)