submissions: change up status ids in preparation of submission validation #109

Merged
Quaternions merged 4 commits from submitting into staging 2025-04-07 22:30:04 +00:00
7 changed files with 67 additions and 54 deletions

View File

@@ -5,20 +5,23 @@ import "time"
type MapfixStatus int32
const (
// Phase: Final MapfixStatus
MapfixStatusRejected MapfixStatus = 8
MapfixStatusUploaded MapfixStatus = 7 // uploaded to the group, final status for mapfixes
// Phase: Creation
MapfixStatusUnderConstruction MapfixStatus = 0
MapfixStatusChangesRequested MapfixStatus = 1
// Phase: Review
MapfixStatusSubmitting MapfixStatus = 2
MapfixStatusSubmitted MapfixStatus = 3
// Phase: Testing
MapfixStatusUploading MapfixStatus = 6
MapfixStatusValidated MapfixStatus = 5
MapfixStatusValidating MapfixStatus = 4
MapfixStatusAccepted MapfixStatus = 3 // pending script review, can re-trigger validation
MapfixStatusAcceptedUnvalidated MapfixStatus = 4 // pending script review, can re-trigger validation
MapfixStatusValidating MapfixStatus = 5
MapfixStatusValidated MapfixStatus = 6
MapfixStatusUploading MapfixStatus = 7
// Phase: Creation
MapfixStatusChangesRequested MapfixStatus = 2
MapfixStatusSubmitted MapfixStatus = 1
MapfixStatusUnderConstruction MapfixStatus = 0
// Phase: Final MapfixStatus
MapfixStatusUploaded MapfixStatus = 8 // uploaded to the group, but pending release
MapfixStatusRejected MapfixStatus = 9
)
type Mapfix struct {

View File

@@ -5,21 +5,24 @@ import "time"
type SubmissionStatus int32
const (
// Phase: Final SubmissionStatus
SubmissionStatusReleased SubmissionStatus = 9
SubmissionStatusRejected SubmissionStatus = 8
// Phase: Creation
SubmissionStatusUnderConstruction SubmissionStatus = 0
SubmissionStatusChangesRequested SubmissionStatus = 1
// Phase: Review
SubmissionStatusSubmitting SubmissionStatus = 2
SubmissionStatusSubmitted SubmissionStatus = 3
// Phase: Testing
SubmissionStatusUploaded SubmissionStatus = 7 // uploaded to the group, but pending release
SubmissionStatusUploading SubmissionStatus = 6
SubmissionStatusValidated SubmissionStatus = 5
SubmissionStatusValidating SubmissionStatus = 4
SubmissionStatusAcceptedUnvalidated SubmissionStatus = 3 // pending script review, can re-trigger validation
SubmissionStatusAcceptedUnvalidated SubmissionStatus = 4 // pending script review, can re-trigger validation
SubmissionStatusValidating SubmissionStatus = 5
SubmissionStatusValidated SubmissionStatus = 6
SubmissionStatusUploading SubmissionStatus = 7
SubmissionStatusUploaded SubmissionStatus = 8 // uploaded to the group, but pending release
// Phase: Creation
SubmissionStatusChangesRequested SubmissionStatus = 2
SubmissionStatusSubmitted SubmissionStatus = 1
SubmissionStatusUnderConstruction SubmissionStatus = 0
// Phase: Final SubmissionStatus
SubmissionStatusRejected SubmissionStatus = 9
SubmissionStatusReleased SubmissionStatus = 10
)
type Submission struct {

View File

@@ -25,7 +25,7 @@ var(
model.MapfixStatusUploading,
model.MapfixStatusValidated,
model.MapfixStatusValidating,
model.MapfixStatusAccepted,
model.MapfixStatusAcceptedUnvalidated,
}
// Allow 5 mapfixes every 10 minutes
CreateMapfixRateLimit int64 = 5
@@ -326,7 +326,7 @@ func (svc *Service) ActionMapfixRequestChanges(ctx context.Context, params api.A
// transaction
smap := datastore.Optional()
smap.Add("status_id", model.MapfixStatusChangesRequested)
return svc.DB.Mapfixes().IfStatusThenUpdate(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusValidated, model.MapfixStatusAccepted, model.MapfixStatusSubmitted}, smap)
return svc.DB.Mapfixes().IfStatusThenUpdate(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusValidated, model.MapfixStatusAcceptedUnvalidated, model.MapfixStatusSubmitted}, smap)
}
// ActionMapfixRevoke invokes actionMapfixRevoke operation.
@@ -580,7 +580,7 @@ func (svc *Service) ActionMapfixRetryValidate(ctx context.Context, params api.Ac
// transaction
smap := datastore.Optional()
smap.Add("status_id", model.MapfixStatusValidating)
mapfix, err := svc.DB.Mapfixes().IfStatusThenUpdateAndGet(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusAccepted}, smap)
mapfix, err := svc.DB.Mapfixes().IfStatusThenUpdateAndGet(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusAcceptedUnvalidated}, smap)
if err != nil {
return err
}
@@ -639,7 +639,7 @@ func (svc *Service) ActionMapfixAccepted(ctx context.Context, params api.ActionM
// transaction
smap := datastore.Optional()
smap.Add("status_id", model.MapfixStatusAccepted)
smap.Add("status_id", model.MapfixStatusAcceptedUnvalidated)
smap.Add("status_message", "Manually forced reset")
return svc.DB.Mapfixes().IfStatusThenUpdate(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusValidating}, smap)
}

View File

@@ -16,7 +16,7 @@ var(
model.MapfixStatusUploading,
model.MapfixStatusValidated,
model.MapfixStatusValidating,
model.MapfixStatusAccepted,
model.MapfixStatusAcceptedUnvalidated,
model.MapfixStatusChangesRequested,
model.MapfixStatusSubmitted,
model.MapfixStatusUnderConstruction,
@@ -63,7 +63,7 @@ func (svc *Service) ActionMapfixValidated(ctx context.Context, params internal.A
func (svc *Service) ActionMapfixAccepted(ctx context.Context, params internal.ActionMapfixAcceptedParams) error {
// transaction
smap := datastore.Optional()
smap.Add("status_id", model.MapfixStatusAccepted)
smap.Add("status_id", model.MapfixStatusAcceptedUnvalidated)
smap.Add("status_message", params.StatusMessage)
return svc.DB.Mapfixes().IfStatusThenUpdate(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusValidating}, smap)
}

View File

@@ -129,6 +129,7 @@ export default function ReviewButtons(props: ReviewId) {
if (submissionStatus === SubmissionStatus.Validated) {
visibleButtons.push({ name: "Upload", action: "trigger-upload", color: "info", submissionId });
}
// TODO: hide Reset buttons for 10 seconds
if (submissionStatus === SubmissionStatus.Uploading) {
visibleButtons.push({ name: "Reset Uploading (fix softlocked status)", action: "reset-uploading", color: "error", submissionId });
}

View File

@@ -1,13 +1,14 @@
const enum MapfixStatus {
UnderConstruction = 0,
Submitted = 1,
ChangesRequested = 2,
AcceptedUnvalidated = 3,
Validating = 4,
Validated = 5,
Uploading = 6,
Uploaded = 7,
Rejected = 8,
UnderConstruction = 0,
ChangesRequested = 1,
Submitting = 2,
Submitted = 3,
AcceptedUnvalidated = 4,
Validating = 5,
Validated = 6,
Uploading = 7,
Uploaded = 8,
Rejected = 9,
// MapfixStatus does not have a Released state
}
@@ -35,8 +36,8 @@ interface MapfixList {
function MapfixStatusToString(mapfix_status: MapfixStatus): string {
switch (mapfix_status) {
case MapfixStatus.Rejected:
return "REJECTED"
case MapfixStatus.Rejected:
return "REJECTED"
case MapfixStatus.Uploading:
return "UPLOADING"
case MapfixStatus.Uploaded:
@@ -51,6 +52,8 @@ function MapfixStatusToString(mapfix_status: MapfixStatus): string {
return "CHANGES REQUESTED"
case MapfixStatus.Submitted:
return "SUBMITTED"
case MapfixStatus.Submitting:
return "SUBMITTING"
case MapfixStatus.UnderConstruction:
return "UNDER CONSTRUCTION"
default:

View File

@@ -1,14 +1,15 @@
const enum SubmissionStatus {
UnderConstruction = 0,
Submitted = 1,
ChangesRequested = 2,
AcceptedUnvalidated = 3,
Validating = 4,
Validated = 5,
Uploading = 6,
Uploaded = 7,
Rejected = 8,
Released = 9,
UnderConstruction = 0,
ChangesRequested = 1,
Submitting = 2,
Submitted = 3,
AcceptedUnvalidated = 4,
Validating = 5,
Validated = 6,
Uploading = 7,
Uploaded = 8,
Rejected = 9,
Released = 10,
}
interface SubmissionInfo {
@@ -35,10 +36,10 @@ interface SubmissionList {
function SubmissionStatusToString(submission_status: SubmissionStatus): string {
switch (submission_status) {
case SubmissionStatus.Released:
return "RELEASED"
case SubmissionStatus.Rejected:
return "REJECTED"
case SubmissionStatus.Released:
return "RELEASED"
case SubmissionStatus.Rejected:
return "REJECTED"
case SubmissionStatus.Uploading:
return "UPLOADING"
case SubmissionStatus.Uploaded:
@@ -53,6 +54,8 @@ function SubmissionStatusToString(submission_status: SubmissionStatus): string {
return "CHANGES REQUESTED"
case SubmissionStatus.Submitted:
return "SUBMITTED"
case SubmissionStatus.Submitting:
return "SUBMITTING"
case SubmissionStatus.UnderConstruction:
return "UNDER CONSTRUCTION"
default: