pub enum ResubmissionRefusal {
Superseded,
AlreadySucceeded,
SubmissionUncertain,
SubmissionUncertainTooRecent,
NotFailedPermanent,
StillInPipeline,
SubmissionPending,
AlreadySubmitted,
AwaitingConfirmation,
AlreadyCancelled,
NothingToCheck,
}Expand description
Why ResubmissionFacts refuses a hand action on a row.
Rendered by the teacher and admin surfaces, which decide from it which buttons a row gets, so it travels to them as it is rather than being re-mapped per surface.
Variants§
Superseded
A later attempt replaced this one; act on that.
AlreadySucceeded
The study registry already holds an outcome for this attempt, so there is nothing to submit again.
SubmissionUncertain
The submission may have landed, so only a human looking at this one row may move it.
SubmissionUncertainTooRecent
The submission may have landed, and Suotar may still hold it as pending, so a resend could
slip past its duplicate check. Lifts at SUOTAR_PENDING_WINDOW after sending.
NotFailedPermanent
Not a failure at all: ResubmissionStrictness::OnlyFailedPermanent only.
StillInPipeline
The pipeline moves the row on by itself once what it waits for is met, so sending it again changes nothing.
SubmissionPending
Suotar still holds the earlier submission open, and may yet turn it into an attainment.
AlreadySubmitted
Already sent to Suotar with no final answer on this row: acting again risks a second Sisu attainment before the first is resolved.
AwaitingConfirmation
Cancelling only: verify is waiting for Sisu to record the attainment.
AlreadyCancelled
Cancelling only: the row is cancelled already.
NothingToCheck
Checking now only: no phase looks the row up sooner for being due.
Trait Implementations§
Source§impl Clone for ResubmissionRefusal
impl Clone for ResubmissionRefusal
Source§fn clone(&self) -> ResubmissionRefusal
fn clone(&self) -> ResubmissionRefusal
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl ComposeSchema for ResubmissionRefusal
impl ComposeSchema for ResubmissionRefusal
Source§impl Debug for ResubmissionRefusal
impl Debug for ResubmissionRefusal
Source§impl<'de> Deserialize<'de> for ResubmissionRefusal
impl<'de> Deserialize<'de> for ResubmissionRefusal
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Hash for ResubmissionRefusal
impl Hash for ResubmissionRefusal
Source§impl PartialEq for ResubmissionRefusal
impl PartialEq for ResubmissionRefusal
Source§impl Serialize for ResubmissionRefusal
impl Serialize for ResubmissionRefusal
Source§impl ToSchema for ResubmissionRefusal
impl ToSchema for ResubmissionRefusal
impl Copy for ResubmissionRefusal
impl Eq for ResubmissionRefusal
impl StructuralPartialEq for ResubmissionRefusal
Auto Trait Implementations§
impl Freeze for ResubmissionRefusal
impl RefUnwindSafe for ResubmissionRefusal
impl Send for ResubmissionRefusal
impl Sync for ResubmissionRefusal
impl Unpin for ResubmissionRefusal
impl UnsafeUnpin for ResubmissionRefusal
impl UnwindSafe for ResubmissionRefusal
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].