pub enum ReviewingStage {
NotStarted,
PeerReview,
SelfReview,
WaitingForPeerReviews,
WaitingForManualGrading,
ReviewedAndLocked,
}
Expand description
Tells what stage of reviewing the user is currently in. Used for for peer review, self review, and manual review. If an exercise does not involve reviewing, the value of this stage will always be NotStarted
.
Variants§
NotStarted
In this stage the user submits answers to the exercise. If the exercise allows it, the user can answer the exercise multiple times. If the exercise is not in this stage, the user cannot answer the exercise. Most exercises will never leave this stage because other stages are reseverved for situations when we cannot give the user points just based on the automatic gradings.
PeerReview
In this stage the student is instructed to give peer reviews to other students.
SelfReview
In this stage the student is instructed to review their own answer.
WaitingForPeerReviews
In this stage the student has completed the neccessary peer and self reviews but is waiting for other students to peer review their answer before we can give points for this exercise.
WaitingForManualGrading
In this stage the student has completed everything they need to do, but before we can give points for this exercise, we need a manual grading from the teacher.
Reasons for ending up in this stage may be one of these:
- The exercise is configured to require all answers to be reviewed by the teacher.
- The answer has received poor reviews from the peers, and the exercise has been configured so that the teacher has to double-check whether it is justified to not give full points to the student.
ReviewedAndLocked
In this stage the the reviews have been completed and the points have been awarded to the student. However, since the answer had to go though the review process, the student may no longer answer the exercise since because
- It is likely that we revealed the model solution to the student during the review process.
- In case of peer review, a new answer would have to be reviewed by other students again, and that would be unreasonable extra work for others.
If the teacher for some reasoon feels bad for the student and wants to give them a new chance, the answers for this exercise should be reset, the reason should be recorded somewhere in the database, and the value of this column should be set to NotStarted
. Deleting the whole user_exercise_state may also be wise. However, if we end up doing this for a teacher, we should make sure that the teacher realizes that they should not give an unfair advantage to anyone.
Trait Implementations§
source§impl Clone for ReviewingStage
impl Clone for ReviewingStage
source§fn clone(&self) -> ReviewingStage
fn clone(&self) -> ReviewingStage
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ReviewingStage
impl Debug for ReviewingStage
source§impl<'r> Decode<'r, Postgres> for ReviewingStage
impl<'r> Decode<'r, Postgres> for ReviewingStage
source§impl<'de> Deserialize<'de> for ReviewingStage
impl<'de> Deserialize<'de> for ReviewingStage
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<'q, DB: Database> Encode<'q, DB> for ReviewingStage
impl<'q, DB: Database> Encode<'q, DB> for ReviewingStage
source§fn encode_by_ref(
&self,
buf: &mut <DB as HasArguments<'q>>::ArgumentBuffer
) -> IsNull
fn encode_by_ref( &self, buf: &mut <DB as HasArguments<'q>>::ArgumentBuffer ) -> IsNull
fn size_hint(&self) -> usize
source§fn encode(self, buf: &mut <DB as HasArguments<'q>>::ArgumentBuffer) -> IsNullwhere
Self: Sized,
fn encode(self, buf: &mut <DB as HasArguments<'q>>::ArgumentBuffer) -> IsNullwhere
Self: Sized,
self
into buf
in the expected format for the database.fn produces(&self) -> Option<<DB as Database>::TypeInfo>
source§impl PartialEq for ReviewingStage
impl PartialEq for ReviewingStage
source§fn eq(&self, other: &ReviewingStage) -> bool
fn eq(&self, other: &ReviewingStage) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for ReviewingStage
impl Serialize for ReviewingStage
source§impl Type<Postgres> for ReviewingStage
impl Type<Postgres> for ReviewingStage
impl Copy for ReviewingStage
impl Eq for ReviewingStage
impl StructuralEq for ReviewingStage
impl StructuralPartialEq for ReviewingStage
Auto Trait Implementations§
impl RefUnwindSafe for ReviewingStage
impl Send for ReviewingStage
impl Sync for ReviewingStage
impl Unpin for ReviewingStage
impl UnwindSafe for ReviewingStage
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.