コード例 #1
0
ファイル: community.py プロジェクト: countable-web/maps
    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"
        })
コード例 #2
0
ファイル: community.py プロジェクト: countable-web/fplm
    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"})
コード例 #3
0
ファイル: community.py プロジェクト: countable-web/maps
    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"
        })
コード例 #4
0
ファイル: community.py プロジェクト: countable-web/fplm
    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"})
コード例 #5
0
ファイル: tests_community.py プロジェクト: countable-web/maps
    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)
コード例 #6
0
ファイル: tests_community.py プロジェクト: countable-web/maps
    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