Beispiel #1
0
    def all_viewable(self, user):
        """
        Return all videos that a user has view permissions for.

        Args:
            user (django.contrib.auth.User): the Django user.

        Returns:
            A list of videos the user has view access to.
        """
        if user.is_superuser:
            return self.all()
        if user.is_anonymous:
            return self.filter(is_public=True)
        moira_list_qset = MoiraList.objects.filter(
            name__in=utils.user_moira_lists(user))
        return self.filter(
            (models.Q(collection__owner=user)
             | models.Q(collection__admin_lists__in=moira_list_qset))
            | (models.Q(is_private=False)
               & (models.Q(is_public=True)
                  | models.Q(is_logged_in_only=True)
                  | models.Q(collection__is_logged_in_only=True)
                  | models.Q(view_lists__in=moira_list_qset)
                  | models.Q(collection__view_lists__in=moira_list_qset)))
        ).distinct()
Beispiel #2
0
def test_user_moira_lists_cache_hit(mocker):
    """
    Test that returns from cache if cache has lists.
    """
    mock_cache = mocker.patch("ui.utils.cache")
    mock_query_moira_lists = mocker.patch("ui.utils.query_moira_lists")
    cached_list_names = set(["some_list"])
    mock_cache.get.return_value = cached_list_names
    result = user_moira_lists(factories.UserFactory())
    assert result == cached_list_names
    assert not mock_query_moira_lists.called
Beispiel #3
0
    def all_admin(self, user):
        """
        Return all collections that a user has admin permissions for.

        Args:
            user (django.contrib.auth.User): the Django user.

        Returns:
            A list of collections the user has admin access to.

        """
        if user.is_superuser:
            return self.all()
        return self.filter(
            models.Q(admin_lists__in=MoiraList.objects.filter(
                name__in=utils.user_moira_lists(user)))
            | models.Q(owner=user)).distinct()
Beispiel #4
0
def test_user_moira_lists_cache_miss(mocker, settings):
    """
    Test that queries and caches lists if not already in cache.
    """
    mock_cache = mocker.patch("ui.utils.cache")
    mock_query_moira_lists = mocker.patch("ui.utils.query_moira_lists")
    mock_cache.get.return_value = None
    user = factories.UserFactory()
    assert not mock_query_moira_lists.called
    assert not mock_cache.set.called
    result = user_moira_lists(user)
    expected_result = set(mock_query_moira_lists.return_value)
    assert result == expected_result
    assert mock_query_moira_lists.called_once_with(user)
    assert mock_cache.set.called_once_with(
        MOIRA_CACHE_KEY.format(user_id=user.id),
        expected_result,
        settings.MOIRA_CACHE_TIMEOUT,
    )
Beispiel #5
0
    def all_viewable(self, user):
        """
        Return all collections that a user has view permissions for.  Currently not used. Only
        users who are admins can see a list of collections (via `get_collections_editable`).

        Args:
            user (django.contrib.auth.User): the Django user.

        Returns:
            A list of collections the user has view access to.
        """
        if user.is_superuser:
            return self.all()
        if user.is_anonymous:
            return self.none()
        moira_list_qset = MoiraList.objects.filter(
            name__in=utils.user_moira_lists(user))
        return self.filter(
            models.Q(view_lists__in=moira_list_qset)
            | models.Q(admin_lists__in=moira_list_qset)
            | models.Q(owner=user)).distinct()
Beispiel #6
0
def test_user_moira_lists_anonymous():
    """
    Test that empty set is returned for anonymous user
    """
    assert user_moira_lists(AnonymousUser()) == set()