From 919fda3637df941d5799d8c8a4ec8a91ae5e9247 Mon Sep 17 00:00:00 2001 From: Andrea Fazzi Date: Sat, 2 Jan 2021 17:30:39 +0100 Subject: [PATCH] Remove debug statements and improve contest's timing information --- orm/contest.go | 8 ++++---- orm/response.go | 7 +++++-- templates/responses_show.html.tpl | 27 ++++++++++++++++++++++----- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/orm/contest.go b/orm/contest.go index b7786a1f..f9dcc2ef 100644 --- a/orm/contest.go +++ b/orm/contest.go @@ -94,10 +94,10 @@ func (c *Contest) Read(db *Database, args map[string]string, w http.ResponseWrit Preload("Participants"). Preload("Responses"). Preload("StartedResponses", func(tx *gorm.DB) *gorm.DB { - return db.DB().Debug().Where("start_time <> ?", time.Time{}) + return db.DB().Where("start_time <> ?", time.Time{}) }). Preload("SavedResponses", func(tx *gorm.DB) *gorm.DB { - return db.DB().Debug().Where("end_time <> ?", time.Time{}) + return db.DB().Where("end_time <> ?", time.Time{}) }). Preload("Questions"). First(&contest, id).Error; err != nil { @@ -182,7 +182,7 @@ func (c *Contest) Update(db *Database, args map[string]string, w http.ResponseWr // Optionally reset participant start time if contest.(*Contest).ResetStartTime { - err := db._db.Debug().Model(&Response{}).Where("contest_id=?", contest.(*Contest).ID).Update("start_time", time.Time{}).Error + err := db._db.Model(&Response{}).Where("contest_id=?", contest.(*Contest).ID).Update("start_time", time.Time{}).Error if err != nil { return nil, err } @@ -218,7 +218,7 @@ func SaveContest(db *Database, contest interface{}) (interface{}, error) { return contest, nil } -func (c *Contest) isAlwaysActive() bool { +func (c *Contest) IsAlwaysActive() bool { return c.StartTime.IsZero() || c.EndTime.IsZero() || c.Duration == 0 } diff --git a/orm/response.go b/orm/response.go index 3325d824..1c1e223c 100644 --- a/orm/response.go +++ b/orm/response.go @@ -60,7 +60,10 @@ func (model *Response) String() string { } func (model *Response) IsActive() bool { - return (!time.Now().Before(model.Contest.StartTime) && !time.Now().After(model.Contest.EndTime)) || model.Contest.isAlwaysActive() + if !model.StartTime.IsZero() { + return !time.Now().After(model.EndTime) || model.Contest.IsAlwaysActive() + } + return (!time.Now().Before(model.Contest.StartTime) && !time.Now().After(model.Contest.EndTime)) || model.Contest.IsAlwaysActive() } func (model *Response) SetCreatorID(id uint) { @@ -216,7 +219,7 @@ func (model *Response) Update(db *Database, args map[string]string, w http.Respo // Write StartTime for the first time if user is a participant - if isParticipant(r) && !response.Contest.isAlwaysActive() { + if isParticipant(r) && !response.Contest.IsAlwaysActive() { if !response.IsActive() { return nil, errors.OutOfTime } diff --git a/templates/responses_show.html.tpl b/templates/responses_show.html.tpl index 312a6ea2..aaf7cdeb 100644 --- a/templates/responses_show.html.tpl +++ b/templates/responses_show.html.tpl @@ -19,24 +19,41 @@

Informazioni generali

-
Periodo di attività
+
Finestra di prima visualizzazione
{{if not (.Data.Contest.Date|zeroTime)}} - Giorno {{.Data.Contest.Date|prettyDate}} dalle ore {{.Data.Contest.StartTime|convertTime}} alle ore {{.Data.Contest.EndTime|convertTime}} - {{- if not .Data.IsActive -}} [Scaduta o non ancora attiva]{{- end -}} + E' possibile visualizzare la prova di gara per la prima volta il giorno {{.Data.Contest.Date|prettyDate}} dalle ore {{.Data.Contest.StartTime|convertTime}} alle ore {{.Data.Contest.EndTime|convertTime}} + {{- if not .Data.IsActive -}} [La gara è scaduta o non ancora attiva]{{- end -}} {{else}} La gara è sempre attiva. {{end}}
{{if not (.Data.Contest.Date|zeroTime)}} -
Prima visualizzazione
+
Data e ora della prima visualizzazione
{{if not (.Data.StartTime|zeroTime)}} - Giorno {{.Data.StartTime|prettyDate}} alle ore {{.Data.StartTime|convertTime}} + La prova di gara è stata visualizzata per la prima volta il giorno {{.Data.StartTime|prettyDate}} alle ore {{.Data.StartTime|convertTime}} {{else}} Il partecipante non ha ancora visualizzato la prova. {{end}}
+
Durata della gara
+
+ {{if not .Data.Contest.IsAlwaysActive}} + {{.Data.Contest.Duration}} min + {{else}} + La gara ha una durata illimitata. + {{end}} +
+
Finestra di consegna
+
+ {{if not (.Data.Contest.Date|zeroTime)}} + E' possibile consegnare la prova entro il giorno {{.Data.Contest.Date|prettyDate}} fino alle ore {{.Data.EndTime|convertTime}} + {{- if not .Data.IsActive -}} [Termini per la consegna scaduti]{{- end -}} + {{else}} + La gara è sempre attiva. + {{end}} +
{{end}} {{if $isAdmin}}
Ordine delle domande