Commit 8d4c410d authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

respect public_only in search

parent e8b47815
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -906,15 +906,20 @@ def simple_search(
    project = Project.objects.filter(pk=project_id).first()
    _check_project_permission(user, project, PERM_COLLECTION_READ)
    _check_project_permission(user, project, PERM_RESOURCE_READ)
    public_only = _user_has_permission(user, project, PERM_COLLECTION_PUBLIC_ONLY)
    results = {"collections": [], "resources": []}
    collections_set: Union[Iterator[Collection], QuerySet] = Collection.objects.filter(
        title__icontains=query, deleted_at__isnull=True, project=project
    )
    if public_only:
        collections_set = collections_set.filter(public_access=True)
    for collection_instance in collections_set.distinct():
        results["collections"].append(serializers.collection(collection_instance))
    resources_set: Union[Iterator[Resource], QuerySet] = Resource.objects.filter(
        title__icontains=query, deleted_at__isnull=True, ptr_project=project
    )
    if public_only:
        resources_set = resources_set.filter(collection__public_access=True)
    for resource_instance in resources_set.distinct()[limit_from:limit_to]:
        results["resources"].append(
            serializers.resource(resource_instance, include_metas=False)
@@ -994,6 +999,7 @@ def advanced_search(
    project = Project.objects.filter(pk=project_id).first()
    _check_project_permission(user, project, PERM_COLLECTION_READ)
    _check_project_permission(user, project, PERM_RESOURCE_READ)
    public_only = _user_has_permission(user, project, PERM_COLLECTION_PUBLIC_ONLY)
    # TODO: add tags search
    results = {"collections": [], "resources": []}

@@ -1003,6 +1009,8 @@ def advanced_search(
    )
    if collection_id:
        resources_set = resources_set.filter(collection_id=collection_id)
    if public_only:
        resources_set = resources_set.filter(collection__public_access=True)

    for search_term in search_terms:
        if (
@@ -1058,7 +1066,8 @@ def advanced_search(
    collections_set = Collection.objects.filter(
        project=project, deleted_at__isnull=True
    )

    if public_only:
        collections_set = collections_set.filter(public_access=True)
    if collection_id:
        collections_set = collections_set.filter(parent_id=collection_id)