Skip to content

Why is there a difference? #1159

Open
Open

Description

@c-rei

When I get a folder information with "client.folders.get_folder_by_id(folder_id, fields=['name', 'path_collection'])", I can get a path_collection that is a FolderPathCollectionField object.

But when I get a subfolder information with "client.folders.get_folder_items(folder_id, fields=['name', 'path_collection'])", I got a path_collection that is a dict type. I known the subfolder is a FolderMini type.

So, when I treat a path_collection, I must distinct the folder type (FolderFull or FolderMini).
Or have any good way to treat them no need to judge them?

Thanks.

Versions Used

Python SDK: 1.7.0
Python: 3.10.12

Activity

  1. lukaszsocha2 commented on Nov 5, 2024

    @lukaszsocha2
    Contributor

    Hi,
    the reason for this happening is that FolderMini doesn't have defined path_collection field and therefore when it arrives in the response from get_folder_items method, it is not deserialised to any object, but returned as a dict. We will make our effort to change the type of entries field in Items (https://developer.box.com/reference/resources/items/) to be either Folder or FolderFull. Both of them contain path_collection field.
    In the meantime I advice you to make another get_folder_by_id call to get path_collection field - that way it will be always an object. Alternatively you can use raw_data field ro access full response as a dict.
    Best,
    @lukaszsocha2

  2. c-rei commented on Nov 5, 2024

    @c-rei
    Author

    Hi, @lukaszsocha2
    Thanks for your response and advise.
    Because I hove to treat a lot of items, so I want to reduce API calls as much as possible.
    Then I still need to judge them when I use them.

    Best,
    @c-rei

  3. lukaszsocha2 commented on Nov 5, 2024

    @lukaszsocha2
    Contributor

    Hi @c-rei,
    did you consider using raw_data as a temporary workaround? There it will be always a dict.

        root_folder: FolderFull = client.folders.get_folder_by_id('0')
        folder_items: Items = client.folders.get_folder_items(root_folder.id, fields=['path_collection'])
        for i, item in enumerate(folder_items.entries):
            print(folder_items.raw_data['entries'][i]['path_collection'])
    

    Best,
    @lukaszsocha2

  4. c-rei commented on Nov 6, 2024

    @c-rei
    Author

    Hi, @lukaszsocha2,
    Surely, I should use raw_data, because not only path_collection, but also other fields, for example created_at etc.
    The date type fields all are different (Datetime or ISO string).

    Thanks a lot.
    Best,
    @c-rei

  5. added
    dontstaleMark issues not to be removed by stalebot
    and removed on Nov 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugdontstaleMark issues not to be removed by stalebot

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions