فهرست منبع

Add H,DSA,BES and tutor fields in student add/update form

Andrea Fazzi 6 سال پیش
والد
کامیت
d672561acb
5فایلهای تغییر یافته به همراه63 افزوده شده و 17 حذف شده
  1. 3 2
      orm/orm_test.go
  2. 27 4
      orm/student.go
  3. 0 9
      orm/teacher.go
  4. 0 2
      renderer/renderer.go
  5. 33 0
      templates/students_add_update.html.tpl

+ 3 - 2
orm/orm_test.go

@@ -169,13 +169,14 @@ func (t *testSuite) TestGetTeachersAll() {
 	t.Equal("1 A", teachers.([]*Teacher)[0].Classes[0].Name)
 	t.Equal("1 A", teachers.([]*Teacher)[0].Classes[0].Name)
 	t.Equal("SCIENZE", teachers.([]*Teacher)[0].Subjects[0].Name)
 	t.Equal("SCIENZE", teachers.([]*Teacher)[0].Subjects[0].Name)
 
 
+	t.Equal(1, len(teachers.([]*Teacher)[0].SubjectsByClass[1]))
+}
 
 
 func (t *testSuite) TestGetTeachersFast() {
 func (t *testSuite) TestGetTeachersFast() {
 	teachers, err := GetTeachersFast(map[string]string{})
 	teachers, err := GetTeachersFast(map[string]string{})
 	t.Nil(err)
 	t.Nil(err)
-	t.Equal(11, len(teachers.([]*Teacher)))
 
 
-	t.Equal(1, len(teachers.([]*Teacher)[0].SubjectsByClass[1]))
+	t.Equal(11, len(teachers.([]*Teacher)))
 }
 }
 
 
 func (t *testSuite) TestGetTeacherActByClass() {
 func (t *testSuite) TestGetTeacherActByClass() {

+ 27 - 4
orm/student.go

@@ -16,22 +16,27 @@ type Student struct {
 	DSA      bool
 	DSA      bool
 	BES      bool
 	BES      bool
 
 
+	TutorID uint `schema:"tutor_id"`
 	ClassID uint `schema:"class_id"`
 	ClassID uint `schema:"class_id"`
 
 
 	Class      *Class
 	Class      *Class
+	Tutor      *Teacher
 	Teachers   []*Teacher
 	Teachers   []*Teacher
 	Activities []*Activity
 	Activities []*Activity
 }
 }
 
 
 type StudentForUpdate struct {
 type StudentForUpdate struct {
-	Student    Student
-	AllClasses []*Class
+	Student     Student
+	AllClasses  []*Class
+	AllTeachers []*Teacher
 
 
-	SelectedClass map[uint]string
+	SelectedClass   map[uint]string
+	SelectedTeacher map[uint]string
 }
 }
 
 
 type StudentForAdd struct {
 type StudentForAdd struct {
-	AllClasses []*Class
+	AllClasses  []*Class
+	AllTeachers []*Teacher
 }
 }
 
 
 var (
 var (
@@ -109,6 +114,12 @@ func UpdateStudent(args map[string]string, r *http.Request) (IDer, error) {
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
+
+	// FIXME: Should not be hard set.
+	student.(*Student).Handicap = false
+	student.(*Student).DSA = false
+	student.(*Student).BES = false
+
 	err = renderer.Decode(student, r)
 	err = renderer.Decode(student, r)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
@@ -169,9 +180,16 @@ func GetStudentForUpdate(args map[string]string) (interface{}, error) {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
+	if err := DB().Find(&data.AllTeachers).Error; err != nil {
+		return nil, err
+	}
+
 	data.SelectedClass = make(map[uint]string)
 	data.SelectedClass = make(map[uint]string)
 	data.SelectedClass[data.Student.ClassID] = "selected"
 	data.SelectedClass[data.Student.ClassID] = "selected"
 
 
+	data.SelectedTeacher = make(map[uint]string)
+	data.SelectedTeacher[data.Student.TutorID] = "selected"
+
 	return data, nil
 	return data, nil
 }
 }
 
 
@@ -181,6 +199,11 @@ func GetStudentForAdd(args map[string]string) (interface{}, error) {
 	if err := DB().Find(&data.AllClasses).Error; err != nil {
 	if err := DB().Find(&data.AllClasses).Error; err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
+
+	if err := DB().Find(&data.AllTeachers).Error; err != nil {
+		return nil, err
+	}
+
 	return data, nil
 	return data, nil
 }
 }
 
 

+ 0 - 9
orm/teacher.go

@@ -135,15 +135,6 @@ func GetTeachersAll(args map[string]string) (interface{}, error) {
 func GetTeachersFast(args map[string]string) (interface{}, error) {
 func GetTeachersFast(args map[string]string) (interface{}, error) {
 	var teachers []*Teacher
 	var teachers []*Teacher
 
 
-	// 	selectTeachers := `
-	// SELECT DISTINCT teachers.*,(activities.supply_teacher_id > 0) as supply FROM activities
-	// INNER JOIN teachers on teachers.id=activities.teacher_id ORDER BY surname,name
-	// `
-
-	// if err := DB().Raw(selectTeachers).Scan(&teachers).Error; err != nil {
-	// 	return nil, err
-	// }
-
 	if err := DB().Order("surname,name").Find(&teachers).Error; err != nil {
 	if err := DB().Order("surname,name").Find(&teachers).Error; err != nil {
 		return nil, err
 		return nil, err
 	}
 	}

+ 0 - 2
renderer/renderer.go

@@ -4,7 +4,6 @@ import (
 	"encoding/json"
 	"encoding/json"
 	"fmt"
 	"fmt"
 	"html/template"
 	"html/template"
-	"log"
 	"mime"
 	"mime"
 	"net/http"
 	"net/http"
 	"net/url"
 	"net/url"
@@ -271,7 +270,6 @@ func Decode(dst interface{}, r *http.Request) error {
 		decoder := schema.NewDecoder()
 		decoder := schema.NewDecoder()
 		decoder.RegisterConverter(time.Time{}, timeConverter)
 		decoder.RegisterConverter(time.Time{}, timeConverter)
 
 
-		log.Println(r.PostForm)
 		if err := decoder.Decode(dst, r.PostForm); err != nil {
 		if err := decoder.Decode(dst, r.PostForm); err != nil {
 			return err
 			return err
 		}
 		}

+ 33 - 0
templates/students_add_update.html.tpl

@@ -60,6 +60,39 @@
       </select>
       </select>
     </div>
     </div>
 
 
+    <div class="form-group form-check">
+      <input type="checkbox" name="Handicap" class="form-check-input" id="student_handicap" {{if .Options.Get "update"}}{{if .Data.Student.Handicap}}checked{{end}}{{end}}>
+      <label class="form-check-label has-feedback" for="student_handicap">Handicap (L. 104/92)</label>
+    </div>
+
+    <div class="form-group form-check">
+      <input type="checkbox" name="DSA" class="form-check-input" id="student_dsa" {{if .Options.Get "update"}}{{if .Data.Student.DSA}}checked{{end}}{{end}}>
+      <label class="form-check-label has-feedback" for="student_dsa">DSA (L. 170/10)</label>
+    </div>
+
+    <div class="form-group form-check">
+      <input type="checkbox" name="BES" class="form-check-input" id="student_bes" {{if .Options.Get "update"}}{{if .Data.Student.BES}}checked{{end}}{{end}}>
+      <label class="form-check-label has-feedback" for="student_bes">BES (L. 104/92)</label>
+    </div>
+
+    <div class="form-group">
+      <label class="control-label" for="class_id">Docente tutor</label>
+      <select name="tutor_id" class="form-control selectpicker" id="tutor_id" placeholder="Docente tutor" data-live-search="true" form="form_students_add_update" title="Seleziona il docente tutor" data-dropup-auto="false" required>
+    	<option value="0"></option>
+    	{{range $teacher := .Data.AllTeachers}}
+    	{{if $.Options.Get "update"}}
+    	<option
+    	   value="{{$teacher.ID}}"
+    	   {{index $.Data.SelectedTeacher $teacher.ID}}>{{$teacher.Surname}} {{$teacher.Name}}
+    	</option>
+    	{{else}}
+    	<option value="{{$teacher.ID}}">{{$teacher.Surname}} {{$teacher.Name}}</option>
+    	{{end}}
+    	{{end}}
+      </select>
+    </div>
+
+    
     <div class="form-group">
     <div class="form-group">
       <button type="submit" class="btn btn-primary">Salva</button>
       <button type="submit" class="btn btn-primary">Salva</button>
       {{if .Options.Get "update"}}
       {{if .Options.Get "update"}}