def verify_member(self, request): if request and hasattr(request, "user"): if request.user.is_authenticated: user_id = int(request.data["user_id"]) community_id = request.data["community_id"] # Check if the current user is an admin for this community admin_communities = list( Administrator.objects.filter( user=request.user.id).values_list('community', flat=True)) if community_id in admin_communities: if CommunityMember.member_exists(user_id, community_id): member = CommunityMember.objects.filter( user__id=user_id).filter( community__id=community_id) CommunityMember.verify_member(member[0].id) return Response({"message": "Verified!"}) else: return Response( {"message", "User is already a community member"}) else: return Response({ "message", "Only Administrators can verify community members" }) return Response({ "message", "You need to be logged in to verify community members" })
def reject_member(self, request): if request and hasattr(request, "user"): if request.user.is_authenticated: if 'user_id' not in request.data.keys(): return Response( {"message": "No User was sent in the request"}) if 'community_id' not in request.data.keys(): return Response( {"message": "No Community was sent in the request"}) user_id = int(request.data["user_id"]) community_id = int(request.data["community_id"]) try: if CommunityMember.member_exists(user_id, community_id): member = CommunityMember.objects.filter( user__id=user_id).filter( community__id=community_id) CommunityMember.reject_member(member[0].id) return Response({"message": "Rejected!"}) else: return Response({"message", "Membership not found"}) except User.DoesNotExist: return Response( {"message": "No User with the given id was found"}) except Community.DoesNotExist: return Response({ "message": "No Community with the given id was found" }) return Response( {"message", "Only Administrators can reject community members"})
def reject_member(self, request): if request and hasattr(request, "user"): if request.user.is_authenticated: if 'user_id' not in request.data.keys(): return Response( {"message": "No User was sent in the request"}) if 'community_id' not in request.data.keys(): return Response( {"message": "No Community was sent in the request"}) user_id = int(request.data["user_id"]) community_id = int(request.data["community_id"]) # Check if the current user is an admin for this community admin_communities = list( Administrator.objects.filter( user=request.user.id).values_list('community', flat=True)) if community_id in admin_communities: try: if CommunityMember.member_exists( user_id, community_id): member = CommunityMember.objects.filter( user__id=user_id).filter( community__id=community_id) CommunityMember.reject_member(member[0].id) return Response({"message": "Rejected!"}) else: return Response( {"message", "Membership not found"}) except User.DoesNotExist: return Response( {"message": "No User with the given id was found"}) except Community.DoesNotExist: return Response({ "message": "No Community with the given id was found" }) else: return Response({ "message", "Only Administrators can reject community members" }) return Response({ "message", "You need to be logged in to reject community members" })
def verify_member(self, request): if request and hasattr(request, "user"): if request.user.is_authenticated: user_id = int(request.data["user_id"]) community_id = int(request.data["community_id"]) if CommunityMember.member_exists(user_id, community_id): member = CommunityMember.objects.filter( user__id=user_id).filter(community__id=community_id) CommunityMember.verify_member(member[0].id) return Response({"message": "Verified!"}) else: return Response( {"message", "User is already a community member"}) return Response( {"message", "Only Administrators can verify community members"})
def test_member_reject(self): """ Ensure that CommunityMember can be REJECTED """ admin = Administrator.objects.create( user=self.user, language=self.language, community=self.community1 ) user_member01 = User.objects.create( username="******", first_name="Test", last_name="member 001", email="*****@*****.**", ) # Must be logged in to verify a CommunityMember. self.assertTrue(self.client.login( username="******", password="******")) # Check we're logged in response = self.client.get("/api/user/auth/") self.assertEqual(response.json()["is_authenticated"], True) # UNVERIFIED CommunityMember MATCHING admin's community. It MUST be returned by the route member_same01 = CommunityMember.create_member( user_member01.id, self.community1.id) response = self.client.get( "/api/community/list_member_to_verify/", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 1) # VERIFYING CommunityMember response = self.client.post( "/api/community/reject_member/", { "user_id": user_member01.id, "community_id": self.community1.id, }, format="json", ) self.assertEqual(response.status_code, status.HTTP_200_OK) member = CommunityMember.objects.get(pk=member_same01.id) self.assertEqual(member.status, CommunityMember.REJECTED) # AFTER VERIFYING CommunityMember MATCHING admin's community. It MUST NOT be returned by the route response = self.client.get( "/api/community/list_member_to_verify/", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 0)
def test_member_list_to_verify(self): """ Ensure CommunityMember list API brings newly created data which needs to be verified """ admin = Administrator.objects.create( user=self.user, language=self.language, community=self.community1 ) user_member01 = User.objects.create( username="******", first_name="Test", last_name="member 001", email="*****@*****.**", ) user_member02 = User.objects.create( username="******", first_name="Test", last_name="member 002", email="*****@*****.**", ) user_member03 = User.objects.create( username="******", first_name="Test", last_name="member 003", email="*****@*****.**", ) # Must be logged in to verify a CommunityMember. self.assertTrue(self.client.login( username="******", password="******")) # Check we're logged in response = self.client.get("/api/user/auth/") self.assertEqual(response.json()["is_authenticated"], True) # VERIFIED CommunityMember MATCHING admin's community. It MUST NOT be returned by the route member_same01 = CommunityMember.objects.create( user=user_member01, community=self.community1, status=CommunityMember.VERIFIED ) response = self.client.get( "/api/community/list_member_to_verify/", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) assert len(response.data) == 0 # UNVERIFIED CommunityMember MATCHING admin's community. It MUST be returned by the route member_same02 = CommunityMember.create_member( user_member02.id, self.community1.id) response = self.client.get( "/api/community/list_member_to_verify/", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) assert len(response.data) == 1 # UNVERIFIED CommunityMember MATCHING admin's community. It MUST be returned by the route member_same03 = CommunityMember.create_member( user_member03.id, self.community1.id) response = self.client.get( "/api/community/list_member_to_verify/", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) assert len(response.data) == 2 # AFTER REJECTED CommunityMember MATCHING admin's community. It MUST NOT be returned by the route CommunityMember.reject_member(member_same02.id) response = self.client.get( "/api/community/list_member_to_verify/", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) assert len(response.data) == 1 # AFTER VERIFYING CommunityMember MATCHING admin's community. It MUST NOT be returned by the route CommunityMember.verify_member(member_same03.id) response = self.client.get( "/api/community/list_member_to_verify/", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) assert len(response.data) == 0 # UNVERIFIED CommunityMember NOT MATCHING admin's community. It MUST NOT be returned by the route member_diff = CommunityMember.create_member( user_member01.id, self.community2.id) response = self.client.get( "/api/community/list_member_to_verify/", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) assert len(response.data) == 0 # ADDING ANOTHER ADMIN, previously UNVERIFIED CommunityMember now MATCHES admin's community. # It MUST be returned by the route admin = Administrator.objects.create( user=self.user, language=self.language, community=self.community2 ) response = self.client.get( "/api/community/list_member_to_verify/", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) assert len(response.data) == 1