voxel51 / fiftyone

The open-source tool for building high-quality datasets and computer vision models
https://fiftyone.ai
Apache License 2.0
7.93k stars 521 forks source link

Add new permission flags for tagging, changing sidebar groups, creating new field for similarity search #4379

Closed lanzhenw closed 2 months ago

lanzhenw commented 2 months ago

What changes are proposed in this pull request?

(Please fill in changes proposed in this fix)

How is this patch tested? If it is not, please explain why.

(Details)

Release Notes

Is this a user-facing change that should be mentioned in the release notes?

(Details in 1-2 sentences. You can just refer to another PR with a description if this PR is part of a larger change.)

What areas of FiftyOne does this PR affect?

Summary by CodeRabbit

coderabbitai[bot] commented 2 months ago

Walkthrough

The updates enhance the permission system by introducing new permission types for various actions, such as modifying sidebar groups, creating new fields, tagging samples or labels, and editing custom colors and saved views. These permissions are now managed using objects with enabled and message properties, replacing the previous boolean flags. This change affects multiple components and ensures a more granular control over user actions.

Changes

Files Change Summaries
app/packages/app/src/useWriters/registerWriter.ts Added new permissions to WriterKeys type, including modifying sidebar groups, creating fields, etc.
app/packages/core/src/components/Actions/ActionsRow.tsx Replaced readOnly with canTagSamplesOrLabels for tagging logic.
app/packages/core/src/components/Actions/similar/Similar.tsx Replaced isReadOnly with canCreateNewField for field creation logic.
app/packages/core/src/components/ColorModal/ColorFooter.tsx Updated logic for canEditCustomColors, affecting button states and titles.
app/packages/core/src/components/Sidebar/Entries/AddGroupEntry.tsx Replaced readOnly with canModifySidebarGroup, introduced disabled state.
app/packages/core/src/components/Sidebar/Entries/Draggable.tsx Adjusted imports and logic for sidebar group modification permissions.
app/packages/core/src/components/Sidebar/Entries/GroupEntries.tsx Added canModifySidebarGroup state for determining sidebar group modification permissions.
app/packages/core/src/components/Sidebar/ViewSelection/index.tsx Used disabled and disabledMsg instead of canEdit for editing views and handling keyboard events.
app/packages/spaces/src/components/Workspaces/Workspace.tsx Refactored workspace editing permissions handling, using canEditWorkspaces state.
app/packages/spaces/src/components/Workspaces/hooks.ts Removed references to canEditWorkspaces, readOnly, and useWorkspacePermission function.
app/packages/spaces/src/components/Workspaces/index.tsx Adjusted workspace editing functionality based on canEditWorkspaces permissions.
app/packages/state/src/recoil/atoms.ts Updated default values for session atoms to objects with enabled and message properties.
app/packages/state/src/session.ts Restructured Session interface, added new fields, and updated SESSION_DEFAULT and SetterKeys.

πŸ‡ Permissions dance in fields anew, With colors bright and tasks to do. Sidebar groups and fields we mold, In code, new stories now unfold. Tagging samples, views to save, A rabbit's joy in changes brave. 🌼


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger a review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
lanzhenw commented 2 months ago

@coderabbitai review

coderabbitai[bot] commented 2 months ago
Actions Performed Review triggered. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
lanzhenw commented 2 months ago

Outside of the scope of this PR, so feel free to follow-up or defer:

I updated the flag name to canModifySidebarGroups to encapsulate the permission to change sidebar groups, including renaming, creating and deleting. Thanks for catching that. I will add the permission check there.

lanzhenw commented 2 months ago

Can we move the business logic to the internal App?

The below doesn't need to be in OSS. The fos.canTagSamplesOrLabels session atom can capture the condition

const isReadOnly = readOnly || !canTag;

This is still following the same pattern as before. We decoupled "!canEdit" from readOnly, so readOnly right now refers to "isSnapshot" (but will likely expend in future per @imanjra ).

codecov[bot] commented 2 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 99.27%. Comparing base (2753171) to head (68ec461). Report is 63 commits behind head on develop.

:exclamation: Current head 68ec461 differs from pull request most recent head 99dc2cf

Please upload reports for the commit 99dc2cf to get more accurate results.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## develop #4379 +/- ## ============================================ + Coverage 16.02% 99.27% +83.24% ============================================ Files 804 47 -757 Lines 89221 16155 -73066 Branches 1340 0 -1340 ============================================ + Hits 14300 16038 +1738 + Misses 74921 117 -74804 ``` | [Flag](https://app.codecov.io/gh/voxel51/fiftyone/pull/4379/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=voxel51) | Coverage Ξ” | | |---|---|---| | [app](https://app.codecov.io/gh/voxel51/fiftyone/pull/4379/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=voxel51) | `?` | | | [python](https://app.codecov.io/gh/voxel51/fiftyone/pull/4379/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=voxel51) | `99.27% <ΓΈ> (?)` | | Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=voxel51#carryforward-flags-in-the-pull-request-comment) to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.