|
|
@ -100,7 +100,7 @@ func (app *application) motionList(w http.ResponseWriter, r *http.Request) {
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
templateData := app.newTemplateData(r, "motions", "all-motions")
|
|
|
|
templateData := app.newTemplateData(r.Context(), r, "motions", "all-motions")
|
|
|
|
|
|
|
|
|
|
|
|
if listOptions.UnvotedOnly {
|
|
|
|
if listOptions.UnvotedOnly {
|
|
|
|
templateData.ActiveSubNav = subLevelNavMotionsUnvoted
|
|
|
|
templateData.ActiveSubNav = subLevelNavMotionsUnvoted
|
|
|
@ -163,12 +163,12 @@ func (app *application) calculateMotionListOptions(r *http.Request) (*models.Mot
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) motionDetails(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) motionDetails(w http.ResponseWriter, r *http.Request) {
|
|
|
|
motion := app.motionFromRequestParam(w, r)
|
|
|
|
motion := app.motionFromRequestParam(r.Context(), w, r)
|
|
|
|
if motion == nil {
|
|
|
|
if motion == nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
|
|
|
|
|
|
|
|
data.Motion = motion
|
|
|
|
data.Motion = motion
|
|
|
|
|
|
|
|
|
|
|
@ -176,7 +176,7 @@ func (app *application) motionDetails(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) newMotionForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) newMotionForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := app.newTemplateData(r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data.Form = &forms.EditMotionForm{
|
|
|
|
data.Form = &forms.EditMotionForm{
|
|
|
|
Type: models.VoteTypeMotion,
|
|
|
|
Type: models.VoteTypeMotion,
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -201,7 +201,7 @@ func (app *application) newMotionSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if !form.Valid() {
|
|
|
|
if !form.Valid() {
|
|
|
|
data := app.newTemplateData(r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data.Form = &form
|
|
|
|
data.Form = &form
|
|
|
|
|
|
|
|
|
|
|
|
app.render(w, http.StatusUnprocessableEntity, "create_motion.html", data)
|
|
|
|
app.render(w, http.StatusUnprocessableEntity, "create_motion.html", data)
|
|
|
@ -246,7 +246,7 @@ func (app *application) newMotionSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
|
|
|
|
|
|
|
|
app.jobScheduler.Reschedule(JobIDCloseDecisions, JobIDRemindVoters)
|
|
|
|
app.jobScheduler.Reschedule(JobIDCloseDecisions, JobIDRemindVoters)
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Title: "New motion started",
|
|
|
|
Title: "New motion started",
|
|
|
|
Message: fmt.Sprintf("Started new motion %s: %s", decision.Tag, decision.Title),
|
|
|
|
Message: fmt.Sprintf("Started new motion %s: %s", decision.Tag, decision.Title),
|
|
|
@ -256,12 +256,12 @@ func (app *application) newMotionSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) editMotionForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) editMotionForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
motion := app.motionFromRequestParam(w, r)
|
|
|
|
motion := app.motionFromRequestParam(r.Context(), w, r)
|
|
|
|
if motion == nil {
|
|
|
|
if motion == nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
|
|
|
|
|
|
|
|
data.Motion = motion
|
|
|
|
data.Motion = motion
|
|
|
|
|
|
|
|
|
|
|
@ -275,7 +275,7 @@ func (app *application) editMotionForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) editMotionSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) editMotionSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
motion := app.motionFromRequestParam(w, r)
|
|
|
|
motion := app.motionFromRequestParam(r.Context(), w, r)
|
|
|
|
if motion == nil {
|
|
|
|
if motion == nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -294,7 +294,7 @@ func (app *application) editMotionSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if !form.Valid() {
|
|
|
|
if !form.Valid() {
|
|
|
|
data := app.newTemplateData(r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data.Form = &form
|
|
|
|
data.Form = &form
|
|
|
|
|
|
|
|
|
|
|
|
app.render(w, http.StatusUnprocessableEntity, "edit_motion.html", data)
|
|
|
|
app.render(w, http.StatusUnprocessableEntity, "edit_motion.html", data)
|
|
|
@ -340,7 +340,7 @@ func (app *application) editMotionSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
|
|
|
|
|
|
|
|
app.jobScheduler.Reschedule(JobIDCloseDecisions, JobIDRemindVoters)
|
|
|
|
app.jobScheduler.Reschedule(JobIDCloseDecisions, JobIDRemindVoters)
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashInfo,
|
|
|
|
Variant: flashInfo,
|
|
|
|
Title: "Motion modified",
|
|
|
|
Title: "Motion modified",
|
|
|
|
Message: fmt.Sprintf("The motion %s has been modified!", decision.Tag),
|
|
|
|
Message: fmt.Sprintf("The motion %s has been modified!", decision.Tag),
|
|
|
@ -350,14 +350,14 @@ func (app *application) editMotionSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) withdrawMotionForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) withdrawMotionForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
motion := app.motionFromRequestParam(w, r)
|
|
|
|
motion := app.motionFromRequestParam(r.Context(), w, r)
|
|
|
|
if motion == nil {
|
|
|
|
if motion == nil {
|
|
|
|
app.notFound(w)
|
|
|
|
app.notFound(w)
|
|
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
|
|
|
|
|
|
|
|
data.Motion = motion
|
|
|
|
data.Motion = motion
|
|
|
|
|
|
|
|
|
|
|
@ -365,7 +365,7 @@ func (app *application) withdrawMotionForm(w http.ResponseWriter, r *http.Reques
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) withdrawMotionSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) withdrawMotionSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
motion := app.motionFromRequestParam(w, r)
|
|
|
|
motion := app.motionFromRequestParam(r.Context(), w, r)
|
|
|
|
if motion == nil {
|
|
|
|
if motion == nil {
|
|
|
|
app.notFound(w)
|
|
|
|
app.notFound(w)
|
|
|
|
|
|
|
|
|
|
|
@ -389,7 +389,7 @@ func (app *application) withdrawMotionSubmit(w http.ResponseWriter, r *http.Requ
|
|
|
|
|
|
|
|
|
|
|
|
app.jobScheduler.Reschedule(JobIDCloseDecisions, JobIDRemindVoters)
|
|
|
|
app.jobScheduler.Reschedule(JobIDCloseDecisions, JobIDRemindVoters)
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashWarning,
|
|
|
|
Variant: flashWarning,
|
|
|
|
Title: "Motion withdrawn",
|
|
|
|
Title: "Motion withdrawn",
|
|
|
|
Message: fmt.Sprintf("The motion %s has been withdrawn!", motion.Tag),
|
|
|
|
Message: fmt.Sprintf("The motion %s has been withdrawn!", motion.Tag),
|
|
|
@ -399,7 +399,7 @@ func (app *application) withdrawMotionSubmit(w http.ResponseWriter, r *http.Requ
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) voteForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) voteForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
motion := app.motionFromRequestParam(w, r)
|
|
|
|
motion := app.motionFromRequestParam(r.Context(), w, r)
|
|
|
|
if motion == nil {
|
|
|
|
if motion == nil {
|
|
|
|
app.notFound(w)
|
|
|
|
app.notFound(w)
|
|
|
|
|
|
|
|
|
|
|
@ -413,7 +413,7 @@ func (app *application) voteForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
|
|
|
|
|
|
|
|
data.Motion = motion
|
|
|
|
data.Motion = motion
|
|
|
|
|
|
|
|
|
|
|
@ -425,7 +425,7 @@ func (app *application) voteForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) voteSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) voteSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
motion := app.motionFromRequestParam(w, r)
|
|
|
|
motion := app.motionFromRequestParam(r.Context(), w, r)
|
|
|
|
if motion == nil {
|
|
|
|
if motion == nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -459,7 +459,7 @@ func (app *application) voteSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
Decision: motion, User: user, Choice: choice,
|
|
|
|
Decision: motion, User: user, Choice: choice,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Title: "Vote registered",
|
|
|
|
Title: "Vote registered",
|
|
|
|
Message: fmt.Sprintf("Your vote for motion %s has been registered.", motion.Tag),
|
|
|
|
Message: fmt.Sprintf("Your vote for motion %s has been registered.", motion.Tag),
|
|
|
@ -469,12 +469,12 @@ func (app *application) voteSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) proxyVoteForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) proxyVoteForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
motion := app.motionFromRequestParam(w, r)
|
|
|
|
motion := app.motionFromRequestParam(r.Context(), w, r)
|
|
|
|
if motion == nil {
|
|
|
|
if motion == nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
|
|
|
|
|
|
|
|
data.Motion = motion
|
|
|
|
data.Motion = motion
|
|
|
|
|
|
|
|
|
|
|
@ -491,7 +491,7 @@ func (app *application) proxyVoteForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) proxyVoteSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) proxyVoteSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
motion := app.motionFromRequestParam(w, r)
|
|
|
|
motion := app.motionFromRequestParam(r.Context(), w, r)
|
|
|
|
if motion == nil {
|
|
|
|
if motion == nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -510,7 +510,7 @@ func (app *application) proxyVoteSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if !form.Valid() {
|
|
|
|
if !form.Valid() {
|
|
|
|
data := app.newTemplateData(r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavMotions, subLevelNavMotionsAll)
|
|
|
|
data.Motion = motion
|
|
|
|
data.Motion = motion
|
|
|
|
|
|
|
|
|
|
|
|
potentialVoters, err := app.users.Voters(r.Context())
|
|
|
|
potentialVoters, err := app.users.Voters(r.Context())
|
|
|
@ -540,7 +540,7 @@ func (app *application) proxyVoteSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
voter := app.getVoter(w, r, form.Voter.ID)
|
|
|
|
voter := app.getVoter(r.Context(), w, form.Voter.ID)
|
|
|
|
if voter == nil {
|
|
|
|
if voter == nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -557,7 +557,7 @@ func (app *application) proxyVoteSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
Decision: motion, User: user, Voter: voter, Choice: form.Choice, Justification: form.Justification,
|
|
|
|
Decision: motion, User: user, Voter: voter, Choice: form.Choice, Justification: form.Justification,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Title: "Proxy vote registered",
|
|
|
|
Title: "Proxy vote registered",
|
|
|
|
Message: fmt.Sprintf(
|
|
|
|
Message: fmt.Sprintf(
|
|
|
@ -571,7 +571,7 @@ func (app *application) proxyVoteSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) userList(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) userList(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
users, err := app.users.List(
|
|
|
|
users, err := app.users.List(
|
|
|
|
r.Context(),
|
|
|
|
r.Context(),
|
|
|
@ -588,7 +588,7 @@ func (app *application) userList(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) editUserForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) editUserForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
userToEdit := app.userFromRequestParam(w, r, app.users.WithRoles(), app.users.WithEmailAddresses())
|
|
|
|
userToEdit := app.userFromRequestParam(r.Context(), w, r, app.users.WithRoles(), app.users.WithEmailAddresses())
|
|
|
|
if userToEdit == nil {
|
|
|
|
if userToEdit == nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -608,7 +608,7 @@ func (app *application) editUserForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
roleNames[i] = roles[i].Name
|
|
|
|
roleNames[i] = roles[i].Name
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
data.Form = &forms.EditUserForm{
|
|
|
|
data.Form = &forms.EditUserForm{
|
|
|
|
User: userToEdit,
|
|
|
|
User: userToEdit,
|
|
|
@ -623,7 +623,7 @@ func (app *application) editUserForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) editUserSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) editUserSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
userToEdit := app.userFromRequestParam(w, r, app.users.WithRoles(), app.users.WithEmailAddresses())
|
|
|
|
userToEdit := app.userFromRequestParam(r.Context(), w, r, app.users.WithRoles(), app.users.WithEmailAddresses())
|
|
|
|
if userToEdit == nil {
|
|
|
|
if userToEdit == nil {
|
|
|
|
app.notFound(w)
|
|
|
|
app.notFound(w)
|
|
|
|
|
|
|
|
|
|
|
@ -645,7 +645,7 @@ func (app *application) editUserSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
if !form.Valid() {
|
|
|
|
if !form.Valid() {
|
|
|
|
roles, err := userToEdit.Roles()
|
|
|
|
roles, err := userToEdit.Roles()
|
|
|
@ -680,7 +680,7 @@ func (app *application) editUserSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashInfo,
|
|
|
|
Variant: flashInfo,
|
|
|
|
Title: "User modified",
|
|
|
|
Title: "User modified",
|
|
|
|
Message: fmt.Sprintf("User %s has been modified.", userToEdit.Name),
|
|
|
|
Message: fmt.Sprintf("User %s has been modified.", userToEdit.Name),
|
|
|
@ -690,7 +690,7 @@ func (app *application) editUserSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) userAddEmailForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) userAddEmailForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
userToEdit := app.userFromRequestParam(w, r, app.users.WithEmailAddresses())
|
|
|
|
userToEdit := app.userFromRequestParam(r.Context(), w, r, app.users.WithEmailAddresses())
|
|
|
|
if userToEdit == nil {
|
|
|
|
if userToEdit == nil {
|
|
|
|
app.notFound(w)
|
|
|
|
app.notFound(w)
|
|
|
|
|
|
|
|
|
|
|
@ -702,7 +702,7 @@ func (app *application) userAddEmailForm(w http.ResponseWriter, r *http.Request)
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
data.Form = &forms.AddEmailForm{
|
|
|
|
data.Form = &forms.AddEmailForm{
|
|
|
|
User: userToEdit,
|
|
|
|
User: userToEdit,
|
|
|
@ -713,7 +713,7 @@ func (app *application) userAddEmailForm(w http.ResponseWriter, r *http.Request)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) userAddEmailSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) userAddEmailSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
userToEdit := app.userFromRequestParam(w, r, app.users.WithEmailAddresses())
|
|
|
|
userToEdit := app.userFromRequestParam(r.Context(), w, r, app.users.WithEmailAddresses())
|
|
|
|
if userToEdit == nil {
|
|
|
|
if userToEdit == nil {
|
|
|
|
app.notFound(w)
|
|
|
|
app.notFound(w)
|
|
|
|
|
|
|
|
|
|
|
@ -734,7 +734,7 @@ func (app *application) userAddEmailSubmit(w http.ResponseWriter, r *http.Reques
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
if form.Valid() {
|
|
|
|
if form.Valid() {
|
|
|
|
emailExists, err := app.users.EmailExists(r.Context(), form.EmailAddress)
|
|
|
|
emailExists, err := app.users.EmailExists(r.Context(), form.EmailAddress)
|
|
|
@ -770,7 +770,7 @@ func (app *application) userAddEmailSubmit(w http.ResponseWriter, r *http.Reques
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Title: "Email address added",
|
|
|
|
Title: "Email address added",
|
|
|
|
Message: fmt.Sprintf(
|
|
|
|
Message: fmt.Sprintf(
|
|
|
@ -784,7 +784,7 @@ func (app *application) userAddEmailSubmit(w http.ResponseWriter, r *http.Reques
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) userDeleteEmailForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) userDeleteEmailForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
userToEdit, emailAddress, err := app.deleteEmailParams(w, r)
|
|
|
|
userToEdit, emailAddress, err := app.deleteEmailParams(r.Context(), w, r)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -802,7 +802,7 @@ func (app *application) userDeleteEmailForm(w http.ResponseWriter, r *http.Reque
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
data.Form = &forms.DeleteEmailForm{
|
|
|
|
data.Form = &forms.DeleteEmailForm{
|
|
|
|
User: userToEdit,
|
|
|
|
User: userToEdit,
|
|
|
@ -813,7 +813,7 @@ func (app *application) userDeleteEmailForm(w http.ResponseWriter, r *http.Reque
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) userDeleteEmailSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) userDeleteEmailSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
userToEdit, emailAddress, err := app.deleteEmailParams(w, r)
|
|
|
|
userToEdit, emailAddress, err := app.deleteEmailParams(r.Context(), w, r)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -854,7 +854,7 @@ func (app *application) userDeleteEmailSubmit(w http.ResponseWriter, r *http.Req
|
|
|
|
form.EmailAddress = emailAddress
|
|
|
|
form.EmailAddress = emailAddress
|
|
|
|
form.User = userToEdit
|
|
|
|
form.User = userToEdit
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
data.Form = &form
|
|
|
|
data.Form = &form
|
|
|
|
|
|
|
|
|
|
|
@ -869,7 +869,7 @@ func (app *application) userDeleteEmailSubmit(w http.ResponseWriter, r *http.Req
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashWarning,
|
|
|
|
Variant: flashWarning,
|
|
|
|
Title: "Email address deleted",
|
|
|
|
Title: "Email address deleted",
|
|
|
|
Message: fmt.Sprintf(
|
|
|
|
Message: fmt.Sprintf(
|
|
|
@ -883,7 +883,7 @@ func (app *application) userDeleteEmailSubmit(w http.ResponseWriter, r *http.Req
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) newUserForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) newUserForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
data.Form = &forms.NewUserForm{}
|
|
|
|
data.Form = &forms.NewUserForm{}
|
|
|
|
|
|
|
|
|
|
|
@ -911,7 +911,7 @@ func (app *application) newUserSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if !form.Valid() {
|
|
|
|
if !form.Valid() {
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
data.Form = &form
|
|
|
|
data.Form = &form
|
|
|
|
|
|
|
|
|
|
|
@ -935,7 +935,7 @@ func (app *application) newUserSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Title: "User created",
|
|
|
|
Title: "User created",
|
|
|
|
Message: fmt.Sprintf("Created new user %s", form.Name),
|
|
|
|
Message: fmt.Sprintf("Created new user %s", form.Name),
|
|
|
@ -945,7 +945,7 @@ func (app *application) newUserSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) deleteUserForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) deleteUserForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
userToDelete := app.userFromRequestParam(w, r, app.users.CanDelete())
|
|
|
|
userToDelete := app.userFromRequestParam(r.Context(), w, r, app.users.CanDelete())
|
|
|
|
if userToDelete == nil {
|
|
|
|
if userToDelete == nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -956,7 +956,7 @@ func (app *application) deleteUserForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
data.Form = &forms.DeleteUserForm{
|
|
|
|
data.Form = &forms.DeleteUserForm{
|
|
|
|
User: userToDelete,
|
|
|
|
User: userToDelete,
|
|
|
@ -966,7 +966,7 @@ func (app *application) deleteUserForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) deleteUserSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) deleteUserSubmit(w http.ResponseWriter, r *http.Request) {
|
|
|
|
userToDelete := app.userFromRequestParam(w, r, app.users.CanDelete())
|
|
|
|
userToDelete := app.userFromRequestParam(r.Context(), w, r, app.users.CanDelete())
|
|
|
|
if userToDelete == nil {
|
|
|
|
if userToDelete == nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -992,7 +992,7 @@ func (app *application) deleteUserSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavUsers)
|
|
|
|
|
|
|
|
|
|
|
|
if !form.Valid() {
|
|
|
|
if !form.Valid() {
|
|
|
|
data.Form = &form
|
|
|
|
data.Form = &form
|
|
|
@ -1008,7 +1008,7 @@ func (app *application) deleteUserSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashWarning,
|
|
|
|
Variant: flashWarning,
|
|
|
|
Title: "User deleted",
|
|
|
|
Title: "User deleted",
|
|
|
|
Message: fmt.Sprintf("User %s has been deleted.", userToDelete.Name),
|
|
|
|
Message: fmt.Sprintf("User %s has been deleted.", userToDelete.Name),
|
|
|
@ -1018,7 +1018,7 @@ func (app *application) deleteUserSubmit(w http.ResponseWriter, r *http.Request)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (app *application) chooseVotersForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
func (app *application) chooseVotersForm(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavVoters)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavVoters)
|
|
|
|
|
|
|
|
|
|
|
|
allUsers, err := app.users.List(r.Context(), app.users.WithRoles())
|
|
|
|
allUsers, err := app.users.List(r.Context(), app.users.WithRoles())
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
@ -1069,7 +1069,7 @@ func (app *application) chooseVotersSubmit(w http.ResponseWriter, r *http.Reques
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if !form.Valid() {
|
|
|
|
if !form.Valid() {
|
|
|
|
data := app.newTemplateData(r, topLevelNavUsers, subLevelNavVoters)
|
|
|
|
data := app.newTemplateData(r.Context(), r, topLevelNavUsers, subLevelNavVoters)
|
|
|
|
|
|
|
|
|
|
|
|
allUsers, err := app.users.List(r.Context(), app.users.WithRoles())
|
|
|
|
allUsers, err := app.users.List(r.Context(), app.users.WithRoles())
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
@ -1091,7 +1091,7 @@ func (app *application) chooseVotersSubmit(w http.ResponseWriter, r *http.Reques
|
|
|
|
panic(err)
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
app.addFlash(r, &FlashMessage{
|
|
|
|
app.addFlash(r.Context(), &FlashMessage{
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Variant: flashSuccess,
|
|
|
|
Title: "Voters selected",
|
|
|
|
Title: "Voters selected",
|
|
|
|
Message: "A new list of voters has been selected",
|
|
|
|
Message: "A new list of voters has been selected",
|
|
|
|