pub struct Action { /* private fields */ }Expand description
A row or bulk admin action.
Build with Action::new; chain .danger(), .scope(), .confirm(),
.permission() to configure. Use Action::delete_selected for the
built-in bulk-delete.
Implementations§
Source§impl Action
impl Action
Sourcepub fn new<F, Fut>(
key: impl Into<String>,
label: impl Into<String>,
icon: impl Into<String>,
f: F,
) -> Selfwhere
F: Fn(ActionInvocation) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<ActionResult, String>> + Send + 'static,
pub fn new<F, Fut>(
key: impl Into<String>,
label: impl Into<String>,
icon: impl Into<String>,
f: F,
) -> Selfwhere
F: Fn(ActionInvocation) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<ActionResult, String>> + Send + 'static,
Create a new action.
key must be ASCII lowercase/digits/underscores/hyphens.
Sourcepub fn scope(self, scope: ActionScope) -> Self
pub fn scope(self, scope: ActionScope) -> Self
Restrict this action to row-only or bulk-only scope.
Sourcepub fn confirm(self, message: impl Into<String>) -> Self
pub fn confirm(self, message: impl Into<String>) -> Self
Require a confirm dialog before firing. message is shown in the dialog.
Sourcepub fn permission(self, codename: impl Into<String>) -> Self
pub fn permission(self, codename: impl Into<String>) -> Self
Require a permission codename before this action can run (gaps2 #79).
When set, the admin checks that the acting user holds codename
(directly or via a group) before invoking the handler. Superusers
bypass the check. If umbral-permissions is not installed, the check
is a no-op and any staff user can run the action.
codename should be the full composite key your permissions plugin
uses, e.g. "blog.publish_post".
Sourcepub fn delete_selected() -> Self
pub fn delete_selected() -> Self
Built-in bulk-delete. The built-in “Delete selected” action.
Sourcepub fn restore_selected() -> Self
pub fn restore_selected() -> Self
Built-in “Restore selected” for soft-delete models (gaps2 #35).
Clears deleted_at for the selected rows via
[DynQuerySet::restore], moving them back out of the trash into
the live changelist. Auto-injected for soft_delete models (see
[effective_actions]); a non-soft-delete model never sees it.
Sourcepub fn delete_permanently() -> Self
pub fn delete_permanently() -> Self
Built-in “Delete permanently” for soft-delete models (gaps2 #35).
Issues a real DELETE via [DynQuerySet::hard_delete], bypassing
the soft-delete stamp so the row leaves the table entirely (gone
even from with_deleted()). Behind a confirm interstitial.
Auto-injected for soft_delete models; a non-soft-delete model
never sees it (its delete_selected already deletes for real).
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Action
impl !UnwindSafe for Action
impl Freeze for Action
impl Send for Action
impl Sync for Action
impl Unpin for Action
impl UnsafeUnpin for Action
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);