Browse Source

Refactor Listgenerator

Andrea Fazzi 5 years ago
parent
commit
d1b50f7f7a

+ 2 - 2
Makefile

@@ -5,7 +5,7 @@ run:
 	docker-compose -f compose/karmen/docker-compose.yml up --build -d
 	echo "Uploading files to the cloud..."
 	sleep 15
-	curl -u admin:password http://localhost:8080/remote.php/webdav/Documents/list.tpl.md -X PUT --data-binary @"./generator/generators/list/list.tpl.md"
-	curl -u admin:password http://localhost:8080/remote.php/webdav/Documents/reference.odt -X PUT --data-binary @"./generator/generators/list/reference.odt"
+	curl -u admin:password http://localhost:8080/remote.php/webdav/Documents/list.tpl.md -X PUT --data-binary @"./generator/generators/list/example_1/resources/list.tpl.md"
+	curl -u admin:password http://localhost:8080/remote.php/webdav/Documents/reference.odt -X PUT --data-binary @"./generator/generators/list/example_1/resources/reference.odt"
 
 all: run

+ 11 - 5
generator/funcmap/funcmap.go

@@ -34,13 +34,19 @@ func comma(classes []*orm.Class) string {
 func abbrev(name string) string {
 	var result string
 	splits := strings.Split(name, " ")
-	for i := len(splits) - 1; i >= 0; i-- {
-		if i == len(splits)-1 {
-			result += splits[i] + " "
-			continue
+
+	if len(splits) > 1 {
+		for i := len(splits) - 1; i >= 0; i-- {
+			if i == len(splits)-1 {
+				result += splits[i] + " "
+				continue
+			}
+			result += strings.ToUpper(string(splits[i][0]) + ".")
 		}
-		result += strings.ToUpper(string(splits[i][0]) + ".")
+	} else {
+		result += strings.ToUpper(string(name[0]) + ".")
 	}
+
 	return result
 }
 

BIN
generator/generators/list/example_1/example_1


+ 33 - 0
generator/generators/list/example_1/main.go

@@ -1,6 +1,9 @@
 package main
 
 import (
+	"log"
+
+	"github.com/remogatto/cloud"
 	"gogs.carducci-dante.gov.it/karmen/core/config"
 	"gogs.carducci-dante.gov.it/karmen/core/generator/generators/list"
 )
@@ -18,6 +21,36 @@ func main() {
 	if err != nil {
 		panic(err)
 	}
+
+	log.Printf("Connecting to the cloud...")
+	client, err := cloud.Dial(
+		conf.Cloud.Url,
+		conf.Cloud.Username,
+		conf.Cloud.Password,
+	)
+	if err != nil {
+		log.Println(err)
+	}
+
+	err = client.Mkdir("Documents/Example 1")
+	if err != nil {
+		panic(err)
+
+	}
+
+	// Upload resources on the cloud
+
+	if files, err := client.UploadDir("resources/*", "Documents/Example 1"); err != nil {
+		panic(err)
+	} else {
+		for _, file := range files {
+			log.Println(file, " was uploaded.")
+		}
+	}
+
 	gen := list.NewListGenerator(&conf.ConfigT)
+
+	gen.CloudPath = "Documents/Example 1"
+
 	gen.Run()
 }

+ 2 - 2
generator/generators/list/list.tpl.md → generator/generators/list/example_1/resources/list.tpl.md

@@ -8,9 +8,9 @@
 
 Docente|Classi
 -------|-----------------------------
-{{range $teacher := . -}}
+{{range $teacher := .Teachers -}}
 {{if not $teacher.Exclude -}}
-{{$teacher.CompleteName|abbrev}}|{{$teacher.Classes|groupClasses}}
+{{$teacher.Surname}} {{$teacher.Name|abbrev}}|{{$teacher.Classes|groupClasses}}
 {{end}}
 {{- end}}
 

+ 0 - 0
generator/generators/list/reference.odt → generator/generators/list/example_1/resources/reference.odt


+ 2 - 2
generator/generators/list/example_2/resources/list.tpl.md

@@ -8,9 +8,9 @@
 
 Docente|Classi
 -------|-----------------------------
-{{range $teacher := . -}}
+{{range $teacher := .Teachers -}}
 {{if not $teacher.Exclude -}}
-{{if $teacher.CompleteName|globFilter "[A-M]*"}}{{$teacher.CompleteName|abbrev}}|{{$teacher.Classes|groupClasses}}{{end}}
+{{if $teacher.Surname|globFilter "[A-M]*"}}{{$teacher.Surname}} {{$teacher.Name|abbrev}}|{{$teacher.Classes|groupClasses}}{{end}}
 {{end}}
 {{- end}}
 

+ 20 - 5
generator/generators/list/list.go

@@ -22,6 +22,11 @@ import (
 	tpl_util "gogs.carducci-dante.gov.it/karmen/util/template"
 )
 
+type Data struct {
+	Teachers []*orm.Teacher
+	Classes  []*orm.Class
+}
+
 type ListGenerator struct {
 	sync.Mutex
 	Config *config.ConfigT
@@ -29,6 +34,8 @@ type ListGenerator struct {
 	CloudPath string
 	JobID     uint
 
+	Data *Data
+
 	ncClient *cloud.Client
 	kaClient *karmen_client.Client
 	logger   *JobLogger
@@ -53,7 +60,7 @@ func (l *JobLogger) Write(p []byte) (n int, err error) {
 	return origLen, nil
 }
 
-func (generator *ListGenerator) generate(outputPath string, cloudPath string, teachers []*orm.Teacher, funcMap template.FuncMap) {
+func (generator *ListGenerator) generate(outputPath string, cloudPath string, funcMap template.FuncMap) {
 	filename := filepath.Join(outputPath, "elenco_docenti")
 
 	tplFilename := filepath.Join(cloudPath, "list.tpl.md")
@@ -89,7 +96,7 @@ func (generator *ListGenerator) generate(outputPath string, cloudPath string, te
 	}
 	defer f.Close()
 
-	err = tpl.Execute(f, teachers)
+	err = tpl.Execute(f, generator.Data)
 	if err != nil {
 		log.Println(err)
 	}
@@ -109,7 +116,10 @@ func (generator *ListGenerator) generate(outputPath string, cloudPath string, te
 }
 
 func NewListGenerator(config *config.ConfigT) *ListGenerator {
-	return &ListGenerator{Config: config}
+	return &ListGenerator{
+		Config: config,
+		Data:   new(Data),
+	}
 }
 
 func (generator *ListGenerator) SetJobId(id uint) {
@@ -159,7 +169,12 @@ func (generator *ListGenerator) Run() {
 		}
 	}
 
-	teachers, err := generator.kaClient.GetTeachers()
+	generator.Data.Teachers, err = generator.kaClient.GetTeachers()
+	if err != nil {
+		log.Println(err)
+	}
+
+	generator.Data.Classes, err = generator.kaClient.GetClasses()
 	if err != nil {
 		log.Println(err)
 	}
@@ -181,7 +196,7 @@ func (generator *ListGenerator) Run() {
 		log.Println(err)
 	}
 
-	generator.generate(outputPath, cloudPath, teachers, funcmap.FuncMap)
+	generator.generate(outputPath, cloudPath, funcmap.FuncMap)
 
 	if generator.JobID > 0 {
 		job.End = time.Now()