channel-folders: Order by order field in GET method.

This commit is contained in:
Shubham Padia
2025-08-06 08:42:35 +00:00
committed by Tim Abbott
parent 22b231ab6f
commit c4cb75979a
4 changed files with 31 additions and 3 deletions

View File

@@ -7,3 +7,5 @@
* [`PATCH /channel_folders`](/api/patch-channel-folders): Added a new
endpoint for reordering channel folders. It accepts an array of channel
folder IDs arranged in the order the user desires it to be in.
* [`GET /channel_folders`](/api/get-channel-folders): Channel folders will
be ordered by the `order` field instead of `id` field when being returned.

View File

@@ -65,7 +65,7 @@ def get_channel_folders_in_realm(
folders = folders.exclude(is_archived=True)
channel_folders = [get_channel_folder_dict(channel_folder) for channel_folder in folders]
return sorted(channel_folders, key=lambda folder: folder["id"])
return sorted(channel_folders, key=lambda folder: folder["order"])
def get_channel_folder_by_id(channel_folder_id: int, realm: Realm) -> ChannelFolder:

View File

@@ -24453,8 +24453,12 @@ paths:
tags: ["channels"]
description: |
Fetches all of the channel folders in the organization.
The folders are sorted by the `order` field.
**Changes**: New in Zulip 11.0 (feature level 389).
**Changes**: Before Zulip 11.0 (feature level ZF-fcae8c),
these were sorted by ID. (The `order` field didn't exist).
New in Zulip 11.0 (feature level 389).
requestBody:
required: false
content:

View File

@@ -3,7 +3,11 @@ from typing import Any
import orjson
from typing_extensions import override
from zerver.actions.channel_folders import check_add_channel_folder, do_archive_channel_folder
from zerver.actions.channel_folders import (
check_add_channel_folder,
do_archive_channel_folder,
try_reorder_realm_channel_folders,
)
from zerver.actions.streams import do_change_stream_folder, do_deactivate_stream
from zerver.lib.test_classes import ZulipTestCase
from zerver.models import ChannelFolder
@@ -215,6 +219,24 @@ class GetChannelFoldersTest(ChannelFoldersTestCase):
channel_folders_data = orjson.loads(result.content)["channel_folders"]
check_channel_folders_in_zulip_realm(channel_folders_data)
def test_get_channel_folders_according_to_order(self) -> None:
iago = self.example_user("iago")
realm = iago.realm
self.login_user(iago)
result = self.client_get("/json/channel_folders")
channel_folders_data = orjson.loads(result.content)["channel_folders"]
channel_folders_names = [item["name"] for item in channel_folders_data]
self.assertEqual(channel_folders_names, ["Frontend", "Backend", "Marketing"])
try_reorder_realm_channel_folders(
realm, reversed([item["id"] for item in channel_folders_data])
)
result = self.client_get("/json/channel_folders")
channel_folders_data = orjson.loads(result.content)["channel_folders"]
channel_folders_names = [item["name"] for item in channel_folders_data]
self.assertEqual(channel_folders_names, ["Marketing", "Backend", "Frontend"])
class UpdateChannelFoldersTest(ChannelFoldersTestCase):
def test_updating_channel_folder_name(self) -> None: