-
Notifications
You must be signed in to change notification settings - Fork 441
New Watchlist
We can watch Projects, Packages and BsRequests.
Polymorphic association: watchable.
Table watched_items
- watchable_id
- watchable_type
- user_id
Project
has_many :watched_items, as: :watchable
Package
has_many :watched_items, as: :watchable
BsRequest
has_many :watched_items, as: :watchable
WatchedItem
belongs_to :watchable, polymorphic: true
belongs_to :user
The action Webui::WatchedItemsController#toggle
is in charge of adding or removing an item from the watchlist.
There are three routes (one per each type of object: project, package, request) that end up in this controller action.
'watched_items/package/:project/:package/toggle'
'watched_items/project/:project/toggle'
'watched_items/request/:number/toggle'
This feature is behind the new_watchlist
feature toggle. The watchlist replaces the old one allowing users to watch packages and requests in addition to projects.
Those operations should be behind the feature toggle.
We could:
- a user watches a project/package/bs_request
- a user stops watching a project/package/bs_request
- list projects/packages/bs_requests a user is watching
Checking permissions to
- anyone can watch items for themselves
- nobody can watch items for anyone else, but admins can
- nobody can stop watching items from someone else's watchlist, but admins can
- only the user can see their own watchlist
- Create the migration
- Update models
- Create the feature flag
- Implement the controllers to manage watchables
- Implement the new UI behind the feature flag
Once the feature is rolled out, we'll need to sync the data with data migration. Adding the projects the user had in the old watched_projects
table to the new watched_items
table.
Bookmark a project, package or request by clicking on an icon near the project name, package name or request name (:fa-bookmark)
- Development Environment Overview
- Development Environment Tips & Tricks
- Spec-Tips
- Code Style
- Rubocop
- Testing with VCR
- Authentication
- Authorization
- Autocomplete
- BS Requests
- Events
- ProjectLog
- Notifications
- Feature Toggles
- Build Results
- Attrib classes
- Flags
- The BackendPackage Cache
- Maintenance classes
- Cloud uploader
- Delayed Jobs
- Staging Workflow
- StatusHistory
- OBS API
- Owner Search
- Search
- Links
- Distributions
- Repository
- Data Migrations
- next_rails
- Ruby Update
- Rails Profiling
- Installing a local LDAP-server
- Remote Pairing Setup Guide
- Factory Dashboard
- osc
- Setup an OBS Development Environment on macOS
- Run OpenQA smoketest locally
- Responsive Guidelines
- Importing database dumps
- Problem Statement & Solution
- Kickoff New Stuff
- New Swagger API doc
- Documentation and Communication
- GitHub Actions
- How to Introduce Software Design Patterns
- Query Objects
- Services
- View Components
- RFC: Core Components
- RFC: Decorator Pattern
- RFC: Backend models