moving ActionedViewMixin here so other apps can use it (beyond the dashboard)