|
@@ -3,12 +3,10 @@ package api
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
- "html/template"
|
|
|
"io/ioutil"
|
|
|
"net/http"
|
|
|
|
|
|
"github.com/gorilla/mux"
|
|
|
- "github.com/gorilla/schema"
|
|
|
"gogs.carducci-dante.gov.it/karmen/core/orm"
|
|
|
"gogs.carducci-dante.gov.it/karmen/core/renderer"
|
|
|
"gogs.carducci-dante.gov.it/karmen/datasource/edt"
|
|
@@ -40,7 +38,7 @@ func teachersHandler() http.Handler {
|
|
|
|
|
|
func teacherShowHandler() http.Handler {
|
|
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
|
- teacher, err := orm.GetTeacher(mux.Vars(r)["id"])
|
|
|
+ teacher, err := orm.GetTeacherAll(mux.Vars(r)["id"])
|
|
|
if err != nil {
|
|
|
renderer.Render[r.URL.Query()["format"][0]](w, r, err)
|
|
|
} else {
|
|
@@ -53,37 +51,23 @@ func teacherShowHandler() http.Handler {
|
|
|
func teachersAddHandler() http.Handler {
|
|
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
|
if r.Method == "GET" {
|
|
|
- var data struct {
|
|
|
- Update bool
|
|
|
- SubmitUrl template.URL
|
|
|
+ teacher, err := orm.GetTeacher(mux.Vars(r)["id"])
|
|
|
+ if err != nil {
|
|
|
+ renderer.Render[r.URL.Query()["format"][0]](w, r, err)
|
|
|
+ } else {
|
|
|
+ renderer.Render[r.URL.Query()["format"][0]](w, r, teacher, r.URL.Query())
|
|
|
}
|
|
|
- data.SubmitUrl = template.URL(fmt.Sprintf("/teachers/add"))
|
|
|
- // if err := renderer.Render(w, "base", "teachers_add_update", data); err != nil {
|
|
|
- // panic(err)
|
|
|
- // }
|
|
|
} else if r.Method == "POST" {
|
|
|
- var teacher orm.Teacher
|
|
|
- if err := r.ParseForm(); err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
-
|
|
|
- decoder := schema.NewDecoder()
|
|
|
- if err := decoder.Decode(&teacher, r.PostForm); err != nil {
|
|
|
+ teacher := new(orm.Teacher)
|
|
|
+ err := renderer.Decode(teacher, r)
|
|
|
+ if err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
-
|
|
|
- // Generate username and initial password
|
|
|
-
|
|
|
- teacher.Username = teacher.GenerateUsername()
|
|
|
- teacher.Password = teacher.GenerateSaltedPassword(teacher.Username)
|
|
|
-
|
|
|
- orm.DB().NewRecord(teacher)
|
|
|
-
|
|
|
- if err := orm.DB().Create(&teacher).Error; err != nil {
|
|
|
+ _, err = orm.SaveTeacher(teacher)
|
|
|
+ if err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
-
|
|
|
- http.Redirect(w, r, fmt.Sprintf("/teachers/%d", teacher.ID), http.StatusSeeOther)
|
|
|
+ http.Redirect(w, r, fmt.Sprintf("/teachers/%d?format=html&tpl_layout=base&tpl_content=teachers_show", teacher.ID), http.StatusSeeOther)
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -127,14 +111,15 @@ func teacherUpdateHandler() http.Handler {
|
|
|
if err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
- newTeacher, err := renderer.Decode(&orm.Teacher{}, r)
|
|
|
+ err = renderer.Decode(teacher, r)
|
|
|
if err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
- _, err = SaveTeacher(mux.Vars(r)["id"], newTeacher.(*orm.Teacher))
|
|
|
+ _, err = orm.SaveTeacher(teacher)
|
|
|
if err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
+ http.Redirect(w, r, fmt.Sprintf("/teachers/%d?format=html&tpl_layout=base&tpl_content=teachers_show", teacher.ID), http.StatusSeeOther)
|
|
|
}
|
|
|
|
|
|
}
|