| 
														
															@@ -3,12 +3,10 @@ package api 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import ( 
														 | 
														
														 | 
														
															 import ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"encoding/json" 
														 | 
														
														 | 
														
															 	"encoding/json" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"fmt" 
														 | 
														
														 | 
														
															 	"fmt" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	"html/template" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"io/ioutil" 
														 | 
														
														 | 
														
															 	"io/ioutil" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"net/http" 
														 | 
														
														 | 
														
															 	"net/http" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"github.com/gorilla/mux" 
														 | 
														
														 | 
														
															 	"github.com/gorilla/mux" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	"github.com/gorilla/schema" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"gogs.carducci-dante.gov.it/karmen/core/orm" 
														 | 
														
														 | 
														
															 	"gogs.carducci-dante.gov.it/karmen/core/orm" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"gogs.carducci-dante.gov.it/karmen/core/renderer" 
														 | 
														
														 | 
														
															 	"gogs.carducci-dante.gov.it/karmen/core/renderer" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"gogs.carducci-dante.gov.it/karmen/datasource/edt" 
														 | 
														
														 | 
														
															 	"gogs.carducci-dante.gov.it/karmen/datasource/edt" 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -40,7 +38,7 @@ func teachersHandler() http.Handler { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func teacherShowHandler() http.Handler { 
														 | 
														
														 | 
														
															 func teacherShowHandler() http.Handler { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	fn := func(w http.ResponseWriter, r *http.Request) { 
														 | 
														
														 | 
														
															 	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 { 
														 | 
														
														 | 
														
															 		if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			renderer.Render[r.URL.Query()["format"][0]](w, r, err) 
														 | 
														
														 | 
														
															 			renderer.Render[r.URL.Query()["format"][0]](w, r, err) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} else { 
														 | 
														
														 | 
														
															 		} else { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -53,37 +51,23 @@ func teacherShowHandler() http.Handler { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func teachersAddHandler() http.Handler { 
														 | 
														
														 | 
														
															 func teachersAddHandler() http.Handler { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	fn := func(w http.ResponseWriter, r *http.Request) { 
														 | 
														
														 | 
														
															 	fn := func(w http.ResponseWriter, r *http.Request) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		if r.Method == "GET" { 
														 | 
														
														 | 
														
															 		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" { 
														 | 
														
														 | 
														
															 		} 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) 
														 | 
														
														 | 
														
															 				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) 
														 | 
														
														 | 
														
															 				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 { 
														 | 
														
														 | 
														
															 			if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				panic(err) 
														 | 
														
														 | 
														
															 				panic(err) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			newTeacher, err := renderer.Decode(&orm.Teacher{}, r) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			err = renderer.Decode(teacher, r) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			if err != nil { 
														 | 
														
														 | 
														
															 			if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				panic(err) 
														 | 
														
														 | 
														
															 				panic(err) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			_, err = SaveTeacher(mux.Vars(r)["id"], newTeacher.(*orm.Teacher)) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			_, err = orm.SaveTeacher(teacher) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			if err != nil { 
														 | 
														
														 | 
														
															 			if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				panic(err) 
														 | 
														
														 | 
														
															 				panic(err) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			http.Redirect(w, r, fmt.Sprintf("/teachers/%d?format=html&tpl_layout=base&tpl_content=teachers_show", teacher.ID), http.StatusSeeOther) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 |