Remove the old Quick Access action machinery.

Review Request #14695 — Created Nov. 14, 2025 and updated

Information

Review Board
release-7.1.x

Reviewers

Early in Review Board 7.1's development, a Quick Access feature for
actions was created in order to give people control over actions they
wanted in their hot bar. This was implemented as special, duplicated
actions that used a mixin to indicate they should appear in the hot bar,
and settings that managed the list of configured actions.

That work set the stage for much of the new action infrastructure,
separating out rendering/placement from core functionality, since we
didn't have any easy way to put the action in both places when that
feature was implemented.

This change tears out much of the custom code for Quick Access actions.
The mixin, custom JS-side attributes, and custom view handling have all
been removed.

Now, actions can simply be placed in the Quick Access attachment point,
which will render them as buttons by default. Any action placed there
will activate the action's behavior.

The Unified Banner builds new menu items for each available action and
simultaneously ties its enabled state to the visibility of the
particular action view, keeping that code all consolidated.

Since we're now reusing core action IDs and not using special subclasses
with their own quickaccess- ID prefixes, we need to migrate legacy
actions over for RBCommons customers. This is done by moving to an
all-new per-user setting, quick_access_action_ids. If set, this is
returned directly. If not set, but the previous quick_access_actions
is set, those actions will be moved over, In time, we can get rid of
this logic entirely.

Unit tests pass.

Tested that all Quick Access actions migrated over.

Tested enabling, disabling, and re-enabling all actions.

Verified the resulting settings were correct.

Summary ID
Remove the old Quick Access action machinery.
Early in Review Board 7.1's development, a Quick Access feature for actions was created in order to give people control over actions they wanted in their hot bar. This was implemented as special, duplicated actions that used a mixin to indicate they should appear in the hot bar, and settings that managed the list of configured actions. That work set the stage for much of the new action infrastructure, separating out rendering/placement from core functionality, since we didn't have any easy way to put the action in both places when that feature was implemented. This change tears out much of the custom code for Quick Access actions. The mixin, custom JS-side attributes, and custom view handling have all been removed. Now, actions can simply be placed in the Quick Access attachment point, which will render them as buttons by default. Any action placed there will activate the action's behavior. The Unified Banner builds new menu items for each available action and simultaneously ties its enabled state to the visibility of the particular action view, keeping that code all consolidated. Since we're now reusing core action IDs and not using special subclasses with their own `quickaccess-` ID prefixes, we need to migrate legacy actions over for RBCommons customers. This is done by moving to an all-new per-user setting, `quick_access_action_ids`. If set, this is returned directly. If not set, but the previous `quick_access_actions` is set, those actions will be moved over, In time, we can get rid of this logic entirely.
41398f7b807b987f07856cad770e125dd3926965
Description From Last Updated

Can we add a log statement in here indicating that we're doing the migration?

daviddavid

Should we change this to use this.listenTo?

daviddavid

It looks like everything else that's using this class has been removed. Do we still need it?

daviddavid
Checks run (2 succeeded)
flake8 passed.
JSHint passed.
david
  1. 
      
  2. reviewboard/accounts/models.py (Diff revision 1)
     
     
     
    Show all issues

    Can we add a log statement in here indicating that we're doing the migration?

  3. Show all issues

    Should we change this to use this.listenTo?

  4. Show all issues

    It looks like everything else that's using this class has been removed. Do we still need it?

  5.