Replace magic numbers with constants

- use strconv.Atoi and strconv.Itoa where appropriate
- use constants for number base and size
- use constant for reminder job interval
main
Jan Dittberner 2 years ago
parent 63c748bb1d
commit 623bdf6d56

@ -185,7 +185,7 @@ type motionParameters struct {
} }
type motionListParameters struct { type motionListParameters struct {
Page int64 Page int
Flags struct { Flags struct {
Confirmed, Withdraw, Unvoted bool Confirmed, Withdraw, Unvoted bool
} }
@ -200,7 +200,7 @@ func parseMotionParameters(r *http.Request) motionParameters {
func parseMotionListParameters(r *http.Request) motionListParameters { func parseMotionListParameters(r *http.Request) motionListParameters {
var m = motionListParameters{} var m = motionListParameters{}
if page, err := strconv.ParseInt(r.URL.Query().Get("page"), 10, 0); err != nil { if page, err := strconv.Atoi(r.URL.Query().Get("page")); err != nil {
m.Page = 1 m.Page = 1
} else { } else {
m.Page = page m.Page = page
@ -230,7 +230,7 @@ func motionListHandler(w http.ResponseWriter, r *http.Request) {
Decisions []*DecisionForDisplay Decisions []*DecisionForDisplay
Voter *Voter Voter *Voter
Params *motionListParameters Params *motionListParameters
PrevPage, NextPage int64 PrevPage, NextPage int
PageTitle string PageTitle string
Flashes interface{} Flashes interface{}
} }
@ -513,7 +513,7 @@ func (h *newMotionHandler) Handle(w http.ResponseWriter, r *http.Request) {
default: default:
templateContext.Voter = voter templateContext.Voter = voter
templateContext.Form = NewDecisionForm{ templateContext.Form = NewDecisionForm{
VoteType: strconv.FormatInt(voteTypeMotion, 10), VoteType: strconv.Itoa(voteTypeMotion),
} }
renderTemplate(w, r, templates, templateContext) renderTemplate(w, r, templates, templateContext)
} }

@ -26,6 +26,9 @@ import (
const ( const (
minimumContentLen = 3 minimumContentLen = 3
minimumTitleLen = 3 minimumTitleLen = 3
base10 = 10
size8Bit = 8
size64Bit = 64
) )
const ( const (
@ -66,7 +69,7 @@ func (f *NewDecisionForm) Validate() (bool, *Decision) {
f.Errors["Content"] = fmt.Sprintf("Please enter at least %d words as Text.", minimumContentLen) f.Errors["Content"] = fmt.Sprintf("Please enter at least %d words as Text.", minimumContentLen)
} }
if voteType, err := strconv.ParseUint(f.VoteType, 10, 8); err != nil || (voteType != 0 && voteType != 1) { if voteType, err := strconv.ParseUint(f.VoteType, base10, size8Bit); err != nil || (voteType != 0 && voteType != 1) {
f.Errors["VoteType"] = fmt.Sprint("Please choose a valid vote type.", err) f.Errors["VoteType"] = fmt.Sprint("Please choose a valid vote type.", err)
} else { } else {
data.VoteType = VoteType(uint8(voteType)) data.VoteType = VoteType(uint8(voteType))
@ -106,7 +109,7 @@ func (f *EditDecisionForm) Validate() (bool, *Decision) {
f.Errors["Content"] = fmt.Sprintf("Please enter at least %d words as Text.", minimumContentLen) f.Errors["Content"] = fmt.Sprintf("Please enter at least %d words as Text.", minimumContentLen)
} }
if voteType, err := strconv.ParseUint(f.VoteType, 10, 8); err != nil || (voteType != 0 && voteType != 1) { if voteType, err := strconv.ParseUint(f.VoteType, base10, size8Bit); err != nil || (voteType != 0 && voteType != 1) {
f.Errors["VoteType"] = fmt.Sprint("Please choose a valid vote type.", err) f.Errors["VoteType"] = fmt.Sprint("Please choose a valid vote type.", err)
} else { } else {
data.VoteType = VoteType(uint8(voteType)) data.VoteType = VoteType(uint8(voteType))
@ -142,7 +145,7 @@ func (f *ProxyVoteForm) Validate() (bool, *Voter, *Vote, string) {
data := &Vote{} data := &Vote{}
if voterID, err = strconv.ParseInt(f.Voter, 10, 64); err != nil { if voterID, err = strconv.ParseInt(f.Voter, base10, size64Bit); err != nil {
f.Errors["Voter"] = fmt.Sprintf("Please choose a valid voter: %v.", err) f.Errors["Voter"] = fmt.Sprintf("Please choose a valid voter: %v.", err)
} else if voter, err = GetVoterByID(voterID); err != nil { } else if voter, err = GetVoterByID(voterID); err != nil {
f.Errors["Voter"] = fmt.Sprintf("Please choose a valid voter: %v.", err) f.Errors["Voter"] = fmt.Sprintf("Please choose a valid voter: %v.", err)
@ -150,7 +153,7 @@ func (f *ProxyVoteForm) Validate() (bool, *Voter, *Vote, string) {
data.VoterID = voter.ID data.VoterID = voter.ID
} }
if vote, err = strconv.ParseInt(f.Vote, 10, 8); err != nil { if vote, err = strconv.ParseInt(f.Vote, base10, size8Bit); err != nil {
f.Errors["Vote"] = fmt.Sprintf("Please choose a valid vote: %v.", err) f.Errors["Vote"] = fmt.Sprintf("Please choose a valid vote: %v.", err)
} else if voteChoice, ok := VoteChoices[vote]; !ok { } else if voteChoice, ok := VoteChoices[vote]; !ok {
f.Errors["Vote"] = "Please choose a valid vote." f.Errors["Vote"] = "Please choose a valid vote."

@ -33,6 +33,7 @@ type jobIdentifier int
const ( const (
JobIDCloseDecisions jobIdentifier = iota JobIDCloseDecisions jobIdentifier = iota
JobIDRemindVotersJob JobIDRemindVotersJob
reminderDays = 3
) )
var rescheduleChannel = make(chan jobIdentifier, 1) var rescheduleChannel = make(chan jobIdentifier, 1)
@ -143,7 +144,7 @@ func NewRemindVotersJob() *RemindVotersJob {
func (j *RemindVotersJob) Schedule() { func (j *RemindVotersJob) Schedule() {
year, month, day := time.Now().UTC().Date() year, month, day := time.Now().UTC().Date()
nextExecution := time.Date(year, month, day, 0, 0, 0, 0, time.UTC).AddDate(0, 0, 3) nextExecution := time.Date(year, month, day, 0, 0, 0, 0, time.UTC).AddDate(0, 0, reminderDays)
log.Infof("scheduling RemindVotersJob for %s", nextExecution) log.Infof("scheduling RemindVotersJob for %s", nextExecution)

@ -472,7 +472,7 @@ func FindDecisionForDisplayByTag(tag string) (*DecisionForDisplay, error) {
// This function uses OFFSET for pagination which is not a good idea for larger data sets. // This function uses OFFSET for pagination which is not a good idea for larger data sets.
// //
// TODO: migrate to timestamp base pagination // TODO: migrate to timestamp base pagination
func FindDecisionsForDisplayOnPage(page int64, unVoted bool, voter *Voter) ([]*DecisionForDisplay, error) { func FindDecisionsForDisplayOnPage(page int, unVoted bool, voter *Voter) ([]*DecisionForDisplay, error) {
var decisionsStmt *sqlx.Stmt var decisionsStmt *sqlx.Stmt
if unVoted && voter != nil { if unVoted && voter != nil {

Loading…
Cancel
Save