コード例 #1
0
def test_get_m2m_changes_no_change(user_a):
    assert get_m2m_changes(get_user_model().objects.none(),
                           get_user_model().objects.none()) == ([], [])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk=user_a.pk),
        get_user_model().objects.filter(pk=user_a.pk),
    ) == ([], [])
コード例 #2
0
def test_get_m2m_added(user_a, user_b):
    assert get_m2m_changes(
        get_user_model().objects.none(),
        get_user_model().objects.filter(pk=user_b.pk)) == ([user_b], [])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk=user_a.pk),
        get_user_model().objects.filter(pk__in=[user_a.pk, user_b.pk]),
    ) == ([user_b], [])
コード例 #3
0
ファイル: test_utils.py プロジェクト: Pike/pontoon
def test_get_m2m_removed(user_a, user_b):
    assert get_m2m_changes(
        get_user_model().objects.filter(pk=user_b.pk),
        get_user_model().objects.none(),
    ) == ([], [user_b])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user_a.pk, user_b.pk]),
        get_user_model().objects.filter(pk=user_a.pk),
    ) == ([], [user_b])
コード例 #4
0
ファイル: test_utils.py プロジェクト: Pike/pontoon
def test_get_m2m_changes_no_change(user_a):
    assert get_m2m_changes(
        get_user_model().objects.none(),
        get_user_model().objects.none()
    ) == ([], [])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk=user_a.pk),
        get_user_model().objects.filter(pk=user_a.pk),
    ) == ([], [])
コード例 #5
0
def test_get_m2m_removed(user_a, user_b):
    assert (get_m2m_changes(
        get_user_model().objects.filter(pk=user_b.pk),
        get_user_model().objects.none(),
    ) == ([], [user_b]))

    assert (get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user_a.pk, user_b.pk]),
        get_user_model().objects.filter(pk=user_a.pk),
    ) == ([], [user_b]))
コード例 #6
0
def test_get_m2m_removed(user0, user1):
    assert get_m2m_changes(
        get_user_model().objects.filter(pk=user1.pk),
        get_user_model().objects.none(),
    ) == ([], [user1])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user0.pk, user1.pk]),
        get_user_model().objects.filter(pk=user0.pk),
    ) == ([], [user1])
コード例 #7
0
def test_get_m2m_mixed(user_a, user_b, user_c):
    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user_b.pk, user_c.pk]),
        get_user_model().objects.filter(pk__in=[user_a.pk, user_b.pk]),
    ) == ([user_a], [user_c])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user_a.pk, user_b.pk]),
        get_user_model().objects.filter(pk__in=[user_c.pk]),
    ) == ([user_c], [user_a, user_b])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user_b.pk]),
        get_user_model().objects.filter(pk__in=[user_c.pk, user_a.pk]),
    ) == ([user_a, user_c], [user_b])
コード例 #8
0
ファイル: test_utils.py プロジェクト: Pike/pontoon
def test_get_m2m_mixed(user_a, user_b, user_c):
    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user_b.pk, user_c.pk]),
        get_user_model().objects.filter(pk__in=[user_a.pk, user_b.pk]),
    ) == ([user_a], [user_c])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user_a.pk, user_b.pk]),
        get_user_model().objects.filter(pk__in=[user_c.pk]),
    ) == ([user_c], [user_a, user_b])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user_b.pk]),
        get_user_model().objects.filter(pk__in=[user_c.pk, user_a.pk]),
    ) == ([user_a, user_c], [user_b])
コード例 #9
0
def test_get_m2m_mixed(user0, user1, userX):
    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user1.pk, userX.pk]),
        get_user_model().objects.filter(pk__in=[user0.pk, user1.pk]),
    ) == ([user0], [userX])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user0.pk, user1.pk]),
        get_user_model().objects.filter(pk__in=[userX.pk]),
    ) == ([userX], [user0, user1])

    assert get_m2m_changes(
        get_user_model().objects.filter(pk__in=[user1.pk]),
        get_user_model().objects.filter(pk__in=[userX.pk, user0.pk]),
    ) == ([user0, userX], [user1])
コード例 #10
0
ファイル: admin.py プロジェクト: wchu108/pontoon
    def save_model(self, request, obj, form, change):
        """
        Save a user and log changes in its roles.
        """
        add_groups, remove_groups = utils.get_m2m_changes(
            obj.groups, form.cleaned_data['groups'])

        super(UserAdmin, self).save_model(request, obj, form, change)

        log_user_groups(request.user, obj, (add_groups, remove_groups))
コード例 #11
0
    def save_model(self, request, obj, form, change):
        """
        Save a user and log changes in its roles.
        """
        super().save_model(request, obj, form, change)

        # Users can only be moved between groups upon editing, not creation
        if "groups" in form.cleaned_data:
            add_groups, remove_groups = utils.get_m2m_changes(
                obj.groups, form.cleaned_data["groups"])

            log_user_groups(request.user, obj, (add_groups, remove_groups))
コード例 #12
0
    def assign_users_to_groups(self, group_name, users):
        """
        Clear group membership and assign a set of users to a given group of users.
        """
        group = getattr(self.instance, "{}_group".format(group_name))

        add_users, remove_users = utils.get_m2m_changes(group.user_set.all(), users)

        group.user_set.clear()

        if users:
            group.user_set.add(*users)

        log_group_members(self.user, group, (add_users, remove_users))
コード例 #13
0
ファイル: admin.py プロジェクト: Pike/pontoon
    def save_model(self, request, obj, form, change):
        """
        Save a user and log changes in its roles.
        """
        add_groups, remove_groups = utils.get_m2m_changes(
            obj.groups,
            form.cleaned_data['groups']
        )

        super(UserAdmin, self).save_model(request, obj, form, change)

        log_user_groups(
            request.user,
            obj,
            (add_groups, remove_groups)
        )