Changeset View
Changeset View
Standalone View
Standalone View
swh/web/add_forge_now/models.py
Show All 26 Lines | class RequestStatus(enum.Enum): | ||||
WAITING_FOR_FEEDBACK = "Waiting for feedback" | WAITING_FOR_FEEDBACK = "Waiting for feedback" | ||||
FEEDBACK_TO_HANDLE = "Feedback to handle" | FEEDBACK_TO_HANDLE = "Feedback to handle" | ||||
ACCEPTED = "Accepted" | ACCEPTED = "Accepted" | ||||
SCHEDULED = "Scheduled" | SCHEDULED = "Scheduled" | ||||
FIRST_LISTING_DONE = "First listing done" | FIRST_LISTING_DONE = "First listing done" | ||||
FIRST_ORIGIN_LOADED = "First origin loaded" | FIRST_ORIGIN_LOADED = "First origin loaded" | ||||
REJECTED = "Rejected" | REJECTED = "Rejected" | ||||
SUSPENDED = "Suspended" | SUSPENDED = "Suspended" | ||||
DENIED = "Denied" | UNSUCCESSFUL = "Unsuccessful" | ||||
@classmethod | @classmethod | ||||
def choices(cls): | def choices(cls): | ||||
return tuple((variant.name, variant.value) for variant in cls) | return tuple((variant.name, variant.value) for variant in cls) | ||||
def allowed_next_statuses(self) -> List[RequestStatus]: | def allowed_next_statuses(self) -> List[RequestStatus]: | ||||
next_statuses = { | next_statuses = { | ||||
self.PENDING: [self.WAITING_FOR_FEEDBACK, self.REJECTED, self.SUSPENDED], | self.PENDING: [self.WAITING_FOR_FEEDBACK, self.REJECTED, self.SUSPENDED], | ||||
self.WAITING_FOR_FEEDBACK: [self.FEEDBACK_TO_HANDLE], | self.WAITING_FOR_FEEDBACK: [self.FEEDBACK_TO_HANDLE], | ||||
self.FEEDBACK_TO_HANDLE: [ | self.FEEDBACK_TO_HANDLE: [ | ||||
self.WAITING_FOR_FEEDBACK, | self.WAITING_FOR_FEEDBACK, | ||||
self.ACCEPTED, | self.ACCEPTED, | ||||
self.REJECTED, | self.REJECTED, | ||||
self.SUSPENDED, | self.SUSPENDED, | ||||
self.UNSUCCESSFUL, | |||||
], | ], | ||||
self.ACCEPTED: [self.SCHEDULED], | self.ACCEPTED: [self.SCHEDULED], | ||||
self.SCHEDULED: [ | self.SCHEDULED: [ | ||||
self.FIRST_LISTING_DONE, | self.FIRST_LISTING_DONE, | ||||
# in case of race condition between lister and loader: | # in case of race condition between lister and loader: | ||||
self.FIRST_ORIGIN_LOADED, | self.FIRST_ORIGIN_LOADED, | ||||
], | ], | ||||
self.FIRST_LISTING_DONE: [self.FIRST_ORIGIN_LOADED], | self.FIRST_LISTING_DONE: [self.FIRST_ORIGIN_LOADED], | ||||
self.FIRST_ORIGIN_LOADED: [], | self.FIRST_ORIGIN_LOADED: [], | ||||
self.REJECTED: [], | self.REJECTED: [], | ||||
self.SUSPENDED: [self.PENDING], | self.SUSPENDED: [self.PENDING], | ||||
self.DENIED: [], | self.UNSUCCESSFUL: [], | ||||
} | } | ||||
return next_statuses[self] # type: ignore | return next_statuses[self] # type: ignore | ||||
class RequestActorRole(enum.Enum): | class RequestActorRole(enum.Enum): | ||||
MODERATOR = "moderator" | MODERATOR = "moderator" | ||||
SUBMITTER = "submitter" | SUBMITTER = "submitter" | ||||
FORGE_ADMIN = "forge admin" | FORGE_ADMIN = "forge admin" | ||||
▲ Show 20 Lines • Show All 72 Lines • Show Last 20 Lines |