def get(self, request, team_id, nonmember=None, format=None): """Get the membership information for the specified team.""" # if query param "nonmember" is set, returns users not on this team nonmember = request.query_params.get('nonmember', None) if nonmember is None else nonmember if nonmember is not None: users = User.objects.exclude(member_memberships__team_id=team_id).order_by('last_name').all() serializer = UserSerializer(users, many=True) return Response(serializer.data) team_memberships = self.get_object(team_id, request.user) serializer = TeamMembershipSerializer(team_memberships, many=True) return Response(serializer.data)
def login_otp(otp, phone): if (UserOtp.objects.checkOtp(otp, phone)): user = User.objects.get(phone=phone) if not user.is_active: user.activate() Token.objects.filter(user=user).delete() token = Token.objects.create(user=user) data = UserSerializer(user).data data['memberships'] = TeamMembershipSerializer(user.get_memberships(), many=True).data data['token'] = token.key return Response(data=data) else: return Response(data={"error": "Invalid OTP"}, status=status.HTTP_401_UNAUTHORIZED)
def post(self, request, team_id, format=None): """Add a new membership for a user.""" # add the team info to the data request.data["team"] = team_id serializer = TeamMembershipModifySerializer(data=request.data) if serializer.is_valid(): # make sure the membership doesn't already exist existing_membership = TeamMembership.objects.filter(team__id=team_id, member__id=request.data["member"]).first() if existing_membership is not None: return Response("user is already a member of this team", status=status.HTTP_400_BAD_REQUEST) membership = serializer.save() display_serializer = TeamMembershipSerializer(instance=membership) return Response(display_serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def get_chats(request, team_id, user_id, format=None): team = get_object_or_404(Team, id=team_id) user = get_object_or_404(User, id=user_id) chat_members = team.get_chat_targets(user) serializer = TeamMembershipSerializer(chat_members, many=True) return Response(serializer.data)
def get(self, request, team_id, membership_id, format=None): """Get details for the specified team.""" (membership, _current_user_can_edit) = self.get_object(membership_id, request.user) serializer = TeamMembershipSerializer(instance=membership) return Response(serializer.data)