Skip to content

Commit

Permalink
feat(Admin): Allow admins updating others profiles
Browse files Browse the repository at this point in the history
  • Loading branch information
TeoTN committed Dec 25, 2017
1 parent 3b8fddc commit b2565c8
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 30 deletions.
33 changes: 23 additions & 10 deletions api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,32 @@ class MemberSerializer(serializers.ModelSerializer):
def_ratio = serializers.SerializerMethodField()
win_ratio = serializers.SerializerMethodField()
email = serializers.CharField(source='player.email', read_only=True)
first_name = serializers.CharField(source='player.first_name', read_only=True)
last_name = serializers.CharField(source='player.last_name', read_only=True)
first_name = serializers.CharField(source='player.first_name')
last_name = serializers.CharField(source='player.last_name')
whats_new_version = serializers.IntegerField(source='player.whats_new_version', read_only=True)
user_id = serializers.IntegerField(source='player.pk', read_only=True)

class Meta:
model = Member
fields = (
'id', 'username', 'email', 'first_name', 'last_name', 'exp', 'played', 'att_ratio', 'def_ratio',
'win_ratio', 'win_streak', 'lose_streak', 'curr_lose_streak', 'curr_win_streak', 'lowest_exp',
'highest_exp', 'exp_history', 'is_accepted', 'hidden', 'whats_new_version', 'user_id', 'is_team_admin',
)

def create(self, validated_data):
validated_data.pop('first_name')
validated_data.pop('last_name')
return super(MemberSerializer, self).create(validated_data)

def update(self, instance, validated_data):
print(validated_data)
player_data = validated_data.pop('player', None)
updated = super(MemberSerializer, self).update(instance, validated_data)
if player_data:
Player.objects.filter(id=updated.player.id).update(**player_data)
return updated

def get_att_ratio(self, obj):
return obj.att_ratio

Expand All @@ -47,14 +68,6 @@ def get_exp_history(self, obj):
.annotate(amount=F('matches_played'))\
.order_by('date')

class Meta:
model = Member
fields = (
'id', 'username', 'email', 'first_name', 'last_name', 'exp', 'played', 'att_ratio', 'def_ratio',
'win_ratio', 'win_streak', 'lose_streak', 'curr_lose_streak', 'curr_win_streak', 'lowest_exp',
'highest_exp', 'exp_history', 'is_accepted', 'hidden', 'whats_new_version', 'user_id', 'is_team_admin',
)


class MatchSerializer(serializers.ModelSerializer):
red_att = serializers.SlugRelatedField(slug_field='username', queryset=Member.objects.all())
Expand Down
20 changes: 0 additions & 20 deletions api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,26 +155,6 @@ def invite(self, request, pk=None):
status=status.HTTP_201_CREATED
)

@detail_route(methods=['post'], permission_classes=[IsAdmin])
def assign_admin(self, request, pk=None):
team = Team.objects.get(pk=pk)
username = request.data.get('username')
if not team or not username:
return Response(displayable('Incorrect request'), status=status.HTTP_400_BAD_REQUEST)
try:
member = team.member_set.get(username=username)
except Member.DoesNotExist:
return Response(
displayable(f'Unable to make {username} admin'),
status=status.HTTP_400_BAD_REQUEST
)
member.is_team_admin = True
member.save()
return Response(
displayable(f'Successfully granted {username} admin privileges'),
status=status.HTTP_200_OK
)


class MemberViewSet(NestedViewSetMixin, ModelViewSet):
serializer_class = MemberSerializer
Expand Down

0 comments on commit b2565c8

Please sign in to comment.