Bladeren bron

Working on document generator

Andrea Fazzi 5 jaren geleden
bovenliggende
commit
153b4a53f5

+ 17 - 0
documents/list/config.yaml

@@ -0,0 +1,17 @@
+url: "https://karmen.carducci-dante.gov.it"
+domain: "carducci-dante.gov.it"
+log_level: 2
+
+admin:
+  username: "admin"
+  password: "aolieVooju"
+
+smtp:
+  host: "smtps.aruba.it"
+  port: 465
+  username: "postmaster@carducci-dante.gov.it"
+  password: "8Eoda43e17"
+  from: "karmen@carducci-dante.gov.it"
+  cc: "andrea.fazzi@carducci-dante.gov.it"
+
+

BIN
documents/list/list


+ 16 - 0
documents/list/list.tpl.md

@@ -0,0 +1,16 @@
+# I.S.I.S. “GIOSUE’ CARDUCCI – DANTE ALIGHIERI”
+# Liceo Classico; Liceo Linguistico; Liceo Musicale
+# Liceo delle Scienze Umane; delle Scienze Umane opzione Economico Sociale;
+# 34133 TRIESTE - Via Giustiniano, 3
+# A.S.  2019/2020
+
+## Elenco docenti con classi a.s. 2019/2020
+
+Docente   |Classi
+----------|---------------------------
+{{range $teacher := . -}}
+{{if not $teacher.Exclude -}}
+{{$teacher.Surname}} {{$teacher.Name|abbrev}}|{{$teacher.Classes|groupClasses}}
+{{end}}
+{{- end}}
+

+ 130 - 0
documents/list/main.go

@@ -0,0 +1,130 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"os"
+	"strings"
+	"text/template"
+
+	karmen_client "gogs.carducci-dante.gov.it/karmen/client"
+	"gogs.carducci-dante.gov.it/karmen/core/orm"
+	"gogs.carducci-dante.gov.it/karmen/util/fileutil"
+	"gogs.carducci-dante.gov.it/karmen/util/libreoffice"
+	"gogs.carducci-dante.gov.it/karmen/util/pandoc"
+	tpl_util "gogs.carducci-dante.gov.it/karmen/util/template"
+)
+
+type Teacher struct {
+	Surname string
+	Name    string
+	Classes string
+	Email   string
+}
+
+var funcMap template.FuncMap = template.FuncMap{
+	"comma":        comma,
+	"groupClasses": groupClasses,
+	"abbrev":       abbrev,
+	"nbsp":         nbsp,
+}
+
+func generate(teachers []*orm.Teacher, funcMap template.FuncMap) {
+	filename := "output/elenco_docenti"
+	tpl, err := tpl_util.LoadTextTemplate("./list.tpl.md", funcMap)
+	if err != nil {
+		panic(err)
+	}
+
+	f, err := os.Create(filename + ".md")
+	if err != nil {
+		panic(err)
+	}
+	defer f.Close()
+
+	err = tpl.Execute(f, teachers)
+	if err != nil {
+		panic(err)
+	}
+
+	odtFilename := fileutil.ReplaceExt(filename, "odt")
+
+	log.Println("Generate", odtFilename)
+
+	if err := pandoc.Convert(filename+".md", odtFilename); err != nil {
+		panic(err)
+	}
+
+	if err := libreoffice.Convert(filename+".odt", "pdf", "--outdir", "output"); err != nil {
+		panic(err)
+	}
+
+}
+
+func comma(classes []*orm.Class) string {
+	var names []string
+	for _, c := range classes {
+		names = append(names, c.Name)
+	}
+	return strings.Join(names, ",")
+}
+
+func abbrev(name string) string {
+	return strings.ToUpper(string(name[0]) + ".")
+}
+
+func nbsp(num int, text string) string {
+	return text + strings.Repeat(" ", num)
+}
+
+func groupClasses(classes []*orm.Class) string {
+	var groups []string
+
+	groupByAddresses := make(map[string][]string)
+	addressesAbbrev := map[string]string{
+		"Linguistico":       "LIN",
+		"Classico":          "CLA",
+		"Musicale":          "M",
+		"Economico sociale": "ES",
+		"Scienze umane":     "SU",
+	}
+	for _, c := range classes {
+		groupByAddresses[c.Field] = append(groupByAddresses[c.Field], fmt.Sprintf("%d%s", c.Year, c.Section))
+	}
+
+	for address, classes := range groupByAddresses {
+		var group string
+		if len(classes) > 1 {
+			group = fmt.Sprintf("[%s]%s", strings.Join(classes, ","), addressesAbbrev[address])
+		} else {
+			group = fmt.Sprintf("%s %s", strings.Join(classes, ","), addressesAbbrev[address])
+		}
+		groups = append(groups, group)
+	}
+	return strings.Join(groups, ",")
+}
+
+func main() {
+	log.Printf("Connecting to karmen...")
+	client, err := karmen_client.Dial(
+		"https://karmen.carducci-dante.gov.it",
+		"admin",
+		"aolieVooju",
+	)
+	if err != nil {
+		log.Println(err)
+	}
+
+	teachers, err := client.GetTeachers()
+	if err != nil {
+		panic(err)
+	}
+
+	outputDir := "output"
+
+	if err := os.MkdirAll(outputDir, 0777); err != nil {
+		panic(err)
+	}
+
+	generate(teachers, funcMap)
+}

+ 182 - 0
documents/list/output/elenco_docenti.md

@@ -0,0 +1,182 @@
+# I.S.I.S. “GIOSUE’ CARDUCCI – DANTE ALIGHIERI”
+# Liceo Classico; Liceo Linguistico; Liceo Musicale
+# Liceo delle Scienze Umane; delle Scienze Umane opzione Economico Sociale;
+# 34133 TRIESTE - Via Giustiniano, 3
+# A.S.  2019/2020
+
+## Elenco docenti con classi a.s. 2019/2020
+
+Docente   |Classi
+----------|---------------------------
+AGOSTONI E.|[5C,1C,4C,3C]LIN,[1A,5A,2A,3A,4A]CLA
+ALZETTA D.|[2B,1B,1D]SU,1B ES
+ANTONI C.|[4D,3B,5E]SU
+ANTONIOLI M.|[2M,1M]M,[5E,5D]SU,[2B,1B]CLA,[2C,1D,2D]LIN
+ANTONUCCI R.|5A ES,5A SU,4M M,4C LIN
+AUGUSTA A.|[3C,3A,4A,5A]ES,[3A,1ALFA,2A,4E,4ALFA,5A,5E]SU
+BALSAMO C.|[3C,5B,4C,5C]SU
+BAN B.|[1D,5C,1C,3C,4C]LIN
+BARBIERI S.|[1M,2M,3M,4M,5M]M
+BARUCCA SEBASTIANI C.|[1M,4M,2M]M
+BARUFFO A.|[2M,3M,4M,5M]M
+BASSI M.|[3B,1B,2B]ES,[2D,1D,1C]LIN
+BELTRAME K.|3M M
+BETTE E.|[3B,4B,5C]ES,[5D,4D,5C]SU,5M M
+BIANCHI B.|[5M,3M]M
+BILARDO S.|2B SU,[2A,5B]ES
+BIOLO C.|[1B,2E]SU
+BOLZICCO D.|[3D,4ALFA,5E,4E]SU,3C ES
+BORDIGNON C.|[1B,2B]CLA
+BOSCARATO G.|[3D,4B]SU,1M M
+BOSCOLO A.|[3A,4B,1D,2B]SU
+BRANCACCIO V.|[1M,2M,3M,4M,5M]M
+BRANDMAYR F.|[4A,5A]CLA,[4C,5C,3C]LIN
+BRUSADELLI E.|[1E,2E]SU,2C ES
+BUOSI MONCUNILL S.|[5C,4B]ES,[2D,2C]LIN
+BURLA A.|[4C,3C,1D,5C,1C,2C]LIN,[5A,1A,2A]CLA
+CAMPOCHIARO S.|[4C,3C]SU
+CAPIZZI V.|[4ALFA,4E]SU
+CAPUANO G.|3B ES,1M M,1D SU
+CARCARINO M.|5C SU,[4A,3C]ES
+CASTELPIETRA A.|[4B,3A,5B]ES
+CASTIGLIONE G.|[2M,5M]M
+CATANESE G.|[2D,1ALFA,2C,1D,2A,1B,2B]SU,[2C,2B]ES
+CATAUDELLA M.|[5D,2A,4C,5B]SU
+CAVALIERE A.|[2D,1B]SU
+CAVICCHI E.|[3M,4M,5M]M,4C LIN,[1A,1B]CLA
+CERVA M.|[1C,4C,1D,2D,2C]LIN
+CESCHIA M.|1M M,[1D,4D,3D,4B,5B,5D]SU,[3B,4B,5B]ES
+CIAN G.|5E SU,[5C,4A]ES
+CIANCIMINO C.|[5B,4A,5C]ES
+CIPOLLONE V.|4C SU,[3C,5A,3A,4A]ES
+CIVRAN R.|2D LIN,[1A,5A]CLA
+CORDANI V.|[5C,4B]ES,[2D,2C]LIN
+CORRIERI G.|[1M,2M]M
+COSENZA E.|[1M,2M,3M,4M,5M]M
+CREAZZO F.|[3A,5A,4A]CLA
+CRISAFULLI S.|[4ALFA,5A,5B]SU,[5B,3C]ES
+CRISETIG M.|[1M,2M,3M,4M,5M]M
+CUTRONA S.|1C SU,3C ES
+D'AGNOLO L.|[5E,3D,5A,5B,3C,4B,4ALFA,4E]SU
+DAVANZO F.|[2M,3M,4M,5M]M
+DE LIO C.|[3A,4A]ES,[3C,3A]SU
+DE VECCHI L.|[1B,3A,1A]CLA
+DECLEVA E.|2A ES,[1D,2D]SU
+DI BARI M.|1B ES,[2B,2D,1D,1E,1C]SU
+DI JASIO C.|[2B,2D,3B,1B]SU,[2B,1C,2C,1B,5C]ES
+di MAJO B.|[3A,1ALFA,2A,4ALFA,5A]SU
+DIANA B.|[1A,1B]ES,[3A,3C]SU
+DONATO G.|[3C,4D]SU,4C LIN
+DORDOLO V.|[4B,3B]ES,[1A,2A,1B,3A,2B]CLA,[4M,2M,3M,1M,5M]M,[1D,2C,1C,2D]LIN,[5B,5A]SU
+ETTORRE V.|1E SU,2B ES,1D LIN
+FALCETTA A.|[1ALFA,3B,4E,3C,4D]SU
+FANNI CANELLES M.|[1M,2M,3M,4M,5M]M
+FILIPPI B.|4B ES,[4C,5C,2C,3C]LIN
+FIORI B.|4C LIN,[5A,3A,4A]CLA
+FLORA L.|2C ES,[3B,5B,5D]SU
+FRANCARLI L.|[1E,2B,3D,5E]SU,[2C,2B]ES
+FRANCESCHINI G.|[4B,5C,3D]SU,1M M
+FRATTINI S.|[3B,2B]ES,4M M
+FRISANO R.|[4M,2M,3M,1M,5M]M
+FRISENDA P.|[1M,4M]M,[1B,2D]SU
+FURLANETTO D.|[1A,2A,1B,2B]ES,2C SU
+FURLANI G.|[1B,5B,5C,3A,1C,1A,3C,4A,5A]ES,[5D,1ALFA,3A,4ALFA,5E,5C,4B]SU
+GAGLIONE A.|[1C,1D,2C,2D]SU
+GALLAS M.|[1M,2M,3M,4M,5M]M
+GALVANO E.|[4ALFA,4D,4E,5A]SU
+GAO X.|[3C,4C,5C]LIN
+GIACALONE V.|[1D,1C,1E]SU
+GIACOBBI G.|[1M,2M,3M,4M,5M]M
+GIARDINA T.|1B SU,1A ES
+GOLLO G.|[1C,1B]ES,[5D,4C,1B]SU
+GOZZOLI L.|[4C,2A,1ALFA,5C,3A,1B]SU
+GRASSI A.|[5C,2C,2D,3C,4C]LIN
+GRIFO' M.|3C ES,3C SU
+GRIMAZ C.|[1M,2M,3M,4M]M
+GROSSI F.|[2A,3B]ES,2A SU
+GUADALUPI F.|[1A,2A]ES
+HRAST F.|[1M,2M,3M,4M,5M]M
+HRELIA F.|[4A,5A,5B,5C]ES,[2C,2D]LIN
+IGNAZZI R.|[1A,3A,5A,1B,2A,2B]CLA
+INVERNIZZI T.|[5B,4E,2A,2E]SU
+JIMENO DOMINGUEZ S.|[1C,1D,2C,2D,3C,4C,5C]LIN
+KANZIAN N.|[3A,4A]ES,[3C,3A]SU
+KERVIN M.|[5M,1M,2M,4M,3M]M
+LA FACE T.|[5B,3B,4E,4B]SU,5C LIN,2M M
+LADISA A.|[5A,4B]SU,5A ES
+LOI E.|[5B,5C,5A,4E,4D,4ALFA]SU
+LOZAR L.|[2D,4C,5E]SU
+MACRì E.|3A ES,3B SU,1M M
+MACRì M.|[2M,3M,4M,5M]M
+MANETTO F.|[5C,4B]SU,5M M
+MARCHI I.|[2C,1C,1A,3A,3C,2A]ES
+MARINELLI M.|[1C,1D]LIN,2M M
+MARINUZZI G.|[2D,2C]SU,[2B,5C,4A]ES
+MARTINI N.|2D LIN,[3A,2C]ES,5E SU
+MARZI A.|[4B,3B]ES,4C LIN,[5A,5C]SU
+MASIERO M.|[1M,2M,3M,4M,5M]M
+MAURI S.|[5M,2M,3M,4M]M,[4A,3A,1B,2B]CLA,2D LIN
+MIANI M.|[1M,2M]M
+MIANI S.|[2A,2B,1B]SU
+MICHELAZZI E.|[1M,2M,3M,4M,5M]M
+MICHELI E.|[2M,5M,1M,4M]M,4A CLA
+MILANI E.|[3M,4M,1M,2M,5M]M
+MILOSSEVICH E.|[1A,2A,1C,1B]ES,2E SU
+MORAS M.|[2C,2A,1C,3C,3A]ES
+NARDI P.|2C SU,[3B,4B,2B,5C]ES
+NAVARRA E.|3M M
+OGANJAN K.|[4M,2M]M
+PALUMBO A.|[2D,5E]SU,3C ES
+PANIZON E.|[1M,2M]M
+PAOLETTI L.|3B ES,[3C,5C]LIN,4M M
+PARONUZZI G.|[5C,4B,5D]SU,[5C,5A]ES
+PAVESI M.|1C SU
+PERENZONI M.|[2C,1E,3A,4E]SU
+PETRONIO A.|[5C,5B,3C,5A,3A,4A]ES
+PETRUZZI A.|[5A,4B]SU,5A ES
+PETTENER A.|[4A,2B,2A,5A,3A]CLA,3C LIN
+PICAMUS D.|[5A,4ALFA,3D]SU
+PIGNATTI O.|[3D,5D]SU,5B ES
+PINATO G.|[1D,1C,2B,1E]SU,[1C,2C]ES
+POILLUCCI S.|[2A,1ALFA,2E]SU,[5B,5A,4A]ES
+POLITI A.|[5A,4A]CLA,2E SU
+QUARANTOTTO S.|[1M,2M,4M,5M,3M]M
+ROMANELLI M.|[5B,4B]ES,[4E,4D]SU,3A CLA
+RONDINI A.|[3B,1C,2B,1E,3D,4C,4E,2E,2D,2A,2C,3C,4D,1D,1B]SU,[2A,2B,2C]ES
+RUGGERI R.|[2E,3C,1C,2C,4C,5C,1E]SU,[2A,1A]ES
+SCATTAINI G.|[5A,3A,5B]ES
+SCHIAVON R.|[2M,3M,4M,5M]M
+SFORZINA C.|[2C,1C]SU
+SPADONI A.|[2A,4A,5C]ES,2A SU
+SPATARO M.|[1E,1ALFA,3B]SU,2C ES
+SPINA G.|1D LIN,[1ALFA,2B]SU
+TAVANO C.|[4E,5E,4D,4B,5B]SU
+TEDESCHI E.|3B ES,[3C,5C]LIN,4M M
+TIROTTA S.|[2C,5E]SU,2M M
+TOFFUL M.|[4B,3C,2D,3B]SU
+TOMASELLA P.|[3C,5C]LIN,[4M,3M]M
+TOMMASI T.|
+TOMMASONI A.|[2A,1C]ES,[1E,4B,3D,2E,3B,4C]SU
+TORREGROSSA A.|5B ES,[3B,3A]SU
+ULCIGRAI P.|2C ES,[3B,5B,5D]SU
+URDICH S.|[3C,4D,4ALFA,5D,5A]SU,3B ES
+URSICH I.|[1C,2C,2D,3C,4C,5C,1D]LIN
+VARRESE C.|1B SU,1A ES
+VENTURA R.|[3B,4B]SU,[3A,5A]ES
+VIDOTTO M.|1C ES,3D SU
+VISINTINI S.|[4A,2A,2B]CLA
+ZAMBERLAN C.|3B ES,[4M,3M]M,[1D,1C]LIN
+ZANINI ABRAM A.|[2C,1C,1ALFA]SU,2B ES
+ZERJAL E.|[2M,5M,4M]M
+ZHENG Y.|[1C,1D,2C,2D]LIN
+ZIBAI E.|[3C,5C]LIN,[4M,3M,5M]M
+ZIKOVIC S.|4B ES,1M M,[2C,1C,1D]LIN
+ZINI I.|[2M,1M]M
+ZOCCHI M.|[2A,1B]CLA
+ZONTA B.|[1M,2M,3M,5M]M
+ZOTTI D.|[1C,1ALFA,1E]SU,[2A,1A]ES
+ZULLIAN A.|[1M,2M,3M,4M]M
+ZUODAR S.|[2C,3B]ES,[3B,3D]SU
+ZUPIN D.|[1M,3M]M
+
+

BIN
documents/list/output/elenco_docenti.odt


BIN
documents/list/output/elenco_docenti.pdf


+ 182 - 0
documents/list/output/elenco_sostegno_musicale.md

@@ -0,0 +1,182 @@
+# I.S.I.S. “GIOSUE’ CARDUCCI – DANTE ALIGHIERI”
+# Liceo Classico; Liceo Linguistico; Liceo Musicale
+# Liceo delle Scienze Umane; delle Scienze Umane opzione Economico Sociale;
+# 34133 TRIESTE - Via Giustiniano, 3
+# A.S.  2019/2020
+
+## Elenco docenti con classi a.s. 2019/2020
+
+Docente|Classi
+-------|------------------------------
+AGOSTONI E.|4 A CL (I anno),5 C LIN,3 A CL (V anno),5 A CL (II anno),1 C LIN,4 C LIN,1 A CL (III anno),3 C LIN,2 A CL (IV anno)
+ALZETTA D.|2 BETA SU,1 BETA SU,1 B ES,1 DELTA SU
+ANTONI C.|4 DELTA SU,3 BETA SU,5 EPSILON SU
+ANTONIOLI M.|2 M,5 EPSILON SU,5 DELTA SU,5 B CL (II anno),2 C LIN,1 D LIN,1 M,4 B CL (I anno),2 D LIN
+ANTONUCCI R.|5 A ES,5 ALFA SU,4 M,4 C LIN
+AUGUSTA A.|3 C ES,3 ALFA SU,3 A ES,1 ALFA SU,2 ALFA SU,4 EPSILON SU,4 A ES,4 ALFA SU,5 ALFA SU,5 A ES,5 EPSILON SU
+BALSAMO C.|3 GAMMA SU,5 BETA SU,4 GAMMA SU,5 GAMMA SU
+BAN B.|1 D LIN,5 C LIN,1 C LIN,3 C LIN,4 C LIN
+BARBIERI S.|1 M,2 M,3 M,4 M,5 M
+BARUCCA SEBASTIANI C.|1 M,4 M,2 M
+BARUFFO A.|2 M,3 M,4 M,5 M
+BASSI M.|2 D LIN,3 B ES,1 D LIN,1 B ES,2 B ES,1 C LIN
+BELTRAME K.|3 M
+BETTE E.|3 B ES,4 B ES,5 DELTA SU,5 C ES,4 DELTA SU,5 M,5 GAMMA SU
+BIANCHI B.|5 M,3 M
+BILARDO S.|2 BETA SU,2 A ES,5 B ES
+BIOLO C.|1 BETA SU,2 EPSILON SU
+BOLZICCO D.|3 DELTA SU,4 ALFA SU,5 EPSILON SU,4 EPSILON SU,3 C ES
+BORDIGNON C.|4 B CL (I anno),5 B CL (II anno)
+BOSCARATO G.|3 DELTA SU,4 BETA SU,1 M
+BOSCOLO A.|3 ALFA SU,4 BETA SU,1 DELTA SU,2 BETA SU
+BRANCACCIO V.|1 M,2 M,3 M,4 M,5 M
+BRANDMAYR F.|2 A CL (IV anno),4 C LIN,3 A CL (V anno),5 C LIN,3 C LIN
+BRUSADELLI E.|1 EPSILON SU,2 EPSILON SU,2 C ES
+BUOSI MONCUNILL S.|5 C ES,2 D LIN,2 C LIN,4 B ES
+BURLA A.|4 C LIN,3 C LIN,1 D LIN,5 C LIN,3 A CL (V anno),1 C LIN,2 C LIN,4 A CL (I anno),5 A CL (II anno)
+CAMPOCHIARO S.|4 GAMMA SU,3 GAMMA SU
+CAPIZZI V.|4 ALFA SU,4 EPSILON SU
+CAPUANO G.|3 B ES,1 M,1 DELTA SU
+CARCARINO M.|5 GAMMA SU,4 A ES,3 C ES
+CASTELPIETRA A.|4 B ES,3 A ES,5 B ES
+CASTIGLIONE G.|2 M,5 M
+CATANESE G.|2 DELTA SU,2 C ES,1 ALFA SU,2 GAMMA SU,1 DELTA SU,2 ALFA SU,1 BETA SU,2 BETA SU,2 B ES
+CATAUDELLA M.|5 DELTA SU,2 ALFA SU,4 GAMMA SU,5 BETA SU
+CAVALIERE A.|2 DELTA SU,1 BETA SU
+CAVICCHI E.|3 M,4 M,4 C LIN,4 A CL (I anno),5 M,4 B CL (I anno)
+CERVA M.|1 C LIN,4 C LIN,1 D LIN,2 D LIN,2 C LIN
+CESCHIA M.|1 M,1 DELTA SU,4 DELTA SU,3 DELTA SU,3 B ES,4 B ES,4 BETA SU,5 B ES,5 BETA SU,5 DELTA SU
+CIAN G.|5 EPSILON SU,5 C ES,4 A ES
+CIANCIMINO C.|5 B ES,4 A ES,5 C ES
+CIPOLLONE V.|4 GAMMA SU,3 C ES,5 A ES,3 A ES,4 A ES
+CIVRAN R.|2 D LIN,4 A CL (I anno),3 A CL (V anno)
+CORDANI V.|5 C ES,2 D LIN,2 C LIN,4 B ES
+CORRIERI G.|1 M,2 M
+COSENZA E.|1 M,2 M,3 M,4 M,5 M
+CREAZZO F.|1 A CL (III anno),3 A CL (V anno),2 A CL (IV anno)
+CRISAFULLI S.|4 ALFA SU,5 ALFA SU,5 B ES,5 BETA SU,3 C ES
+CRISETIG M.|1 M,2 M,3 M,4 M,5 M
+CUTRONA S.|1 GAMMA SU,3 C ES
+D'AGNOLO L.|5 EPSILON SU,3 DELTA SU,5 ALFA SU,5 BETA SU,3 GAMMA SU,4 BETA SU,4 ALFA SU,4 EPSILON SU
+DAVANZO F.|2 M,3 M,4 M,5 M
+DE LIO C.|3 A ES,4 A ES,3 GAMMA SU,3 ALFA SU
+DE VECCHI L.|4 B CL (I anno),1 A CL (III anno),4 A CL (I anno)
+DECLEVA E.|1 DELTA SU,2 A ES,2 DELTA SU
+DI BARI M.|1 B ES,2 BETA SU,2 DELTA SU,1 DELTA SU,1 EPSILON SU,1 GAMMA SU
+DI JASIO C.|2 BETA SU,2 DELTA SU,3 BETA SU,2 B ES,1 C ES,2 C ES,1 B ES,5 C ES,1 BETA SU
+di MAJO B.|3 ALFA SU,1 ALFA SU,2 ALFA SU,4 ALFA SU,5 ALFA SU
+DIANA B.|1 A ES,1 B ES,3 ALFA SU,3 GAMMA SU
+DONATO G.|3 GAMMA SU,4 C LIN,4 DELTA SU
+DORDOLO V.|4 B ES,4 A CL (I anno),5 A CL (II anno),4 M,2 M,3 M,1 D LIN,2 C LIN,4 B CL (I anno),1 M,1 C LIN,5 BETA SU,5 ALFA SU,1 A CL (III anno),5 M,2 D LIN,3 B ES,5 B CL (II anno)
+ETTORRE V.|1 EPSILON SU,2 B ES,1 D LIN
+FALCETTA A.|1 ALFA SU,3 BETA SU,4 EPSILON SU,3 GAMMA SU,4 DELTA SU
+FANNI CANELLES M.|1 M,2 M,3 M,4 M,5 M
+FILIPPI B.|4 B ES,4 C LIN,5 C LIN,2 C LIN,3 C LIN
+FIORI B.|4 C LIN,3 A CL (V anno),1 A CL (III anno),2 A CL (IV anno)
+FLORA L.|2 C ES,3 BETA SU,5 BETA SU,5 DELTA SU
+FRANCARLI L.|1 EPSILON SU,2 C ES,2 BETA SU,2 B ES,3 DELTA SU,5 EPSILON SU
+FRANCESCHINI G.|4 BETA SU,5 GAMMA SU,3 DELTA SU,1 M
+FRATTINI S.|3 B ES,2 B ES,4 M
+FRISANO R.|4 M,2 M,3 M,1 M,5 M
+FRISENDA P.|1 BETA SU,1 M,4 M,2 DELTA SU
+FURLANETTO D.|1 A ES,2 A ES,1 B ES,2 GAMMA SU,2 B ES
+FURLANI G.|1 B ES,5 B ES,5 DELTA SU,5 C ES,1 ALFA SU,3 ALFA SU,3 A ES,4 ALFA SU,1 C ES,1 A ES,5 EPSILON SU,3 C ES,4 A ES,5 A ES,5 GAMMA SU,4 BETA SU
+GAGLIONE A.|1 GAMMA SU,1 DELTA SU,2 GAMMA SU,2 DELTA SU
+GALLAS M.|1 M,2 M,3 M,4 M,5 M
+GALVANO E.|4 ALFA SU,4 DELTA SU,4 EPSILON SU,5 ALFA SU
+GAO X.|3 C LIN,4 C LIN,5 C LIN
+GIACALONE V.|1 DELTA SU,1 GAMMA SU,1 EPSILON SU
+GIACOBBI G.|1 M,2 M,3 M,4 M,5 M
+GIARDINA T.|1 BETA SU,1 A ES
+GOLLO G.|1 C ES,5 DELTA SU,4 GAMMA SU,1 BETA SU,1 B ES
+GOZZOLI L.|4 GAMMA SU,2 ALFA SU,1 ALFA SU,5 GAMMA SU,3 ALFA SU,1 BETA SU
+GRASSI A.|5 C LIN,2 C LIN,2 D LIN,3 C LIN,4 C LIN
+GRIFO' M.|3 C ES,3 GAMMA SU
+GRIMAZ C.|1 M,2 M,3 M,4 M
+GROSSI F.|2 A ES,2 ALFA SU,3 B ES
+GUADALUPI F.|1 A ES,2 A ES
+HRAST F.|1 M,2 M,3 M,4 M,5 M
+HRELIA F.|4 A ES,5 A ES,5 B ES,2 C LIN,5 C ES,2 D LIN
+IGNAZZI R.|4 A CL (I anno),1 A CL (III anno),3 A CL (V anno),4 B CL (I anno),5 A CL (II anno),5 B CL (II anno)
+INVERNIZZI T.|5 BETA SU,4 EPSILON SU,2 ALFA SU,2 EPSILON SU
+JIMENO DOMINGUEZ S.|1 C LIN,1 D LIN,2 C LIN,2 D LIN,3 C LIN,4 C LIN,5 C LIN
+KANZIAN N.|3 A ES,4 A ES,3 GAMMA SU,3 ALFA SU
+KERVIN M.|5 M,1 M,2 M,4 M,3 M
+LA FACE T.|5 BETA SU,3 BETA SU,5 C LIN,2 M,4 EPSILON SU,4 BETA SU
+LADISA A.|5 ALFA SU,4 BETA SU,5 A ES
+LOI E.|5 BETA SU,5 GAMMA SU,5 ALFA SU,4 EPSILON SU,4 DELTA SU,4 ALFA SU
+LOZAR L.|2 DELTA SU,4 GAMMA SU,5 EPSILON SU
+MACRì E.|3 BETA SU,1 M,3 A ES
+MACRì M.|2 M,3 M,4 M,5 M
+MANETTO F.|5 GAMMA SU,5 M,4 BETA SU
+MARCHI I.|2 C ES,1 C ES,1 A ES,3 A ES,3 C ES,2 A ES
+MARINELLI M.|1 C LIN,1 D LIN,2 M
+MARINUZZI G.|2 DELTA SU,2 B ES,5 C ES,4 A ES,2 GAMMA SU
+MARTINI N.|2 D LIN,3 A ES,5 EPSILON SU,2 C ES
+MARZI A.|4 B ES,4 C LIN,5 ALFA SU,5 GAMMA SU,3 B ES
+MASIERO M.|1 M,2 M,3 M,4 M,5 M
+MAURI S.|5 M,2 M,2 A CL (IV anno),3 M,4 M,1 A CL (III anno),4 B CL (I anno),5 B CL (II anno),2 D LIN
+MIANI M.|1 M,2 M
+MIANI S.|2 ALFA SU,2 BETA SU,1 BETA SU
+MICHELAZZI E.|1 M,2 M,3 M,4 M,5 M
+MICHELI E.|2 M,2 A CL (IV anno),5 M,1 M,4 M
+MILANI E.|3 M,4 M,1 M,2 M,5 M
+MILOSSEVICH E.|1 A ES,2 A ES,1 C ES,2 EPSILON SU,1 B ES
+MORAS M.|2 C ES,2 A ES,1 C ES,3 C ES,3 A ES
+NARDI P.|2 GAMMA SU,3 B ES,4 B ES,2 B ES,5 C ES
+NAVARRA E.|3 M
+OGANJAN K.|4 M,2 M
+PALUMBO A.|2 DELTA SU,3 C ES,5 EPSILON SU
+PANIZON E.|1 M,2 M
+PAOLETTI L.|3 B ES,3 C LIN,5 C LIN,4 M
+PARONUZZI G.|5 GAMMA SU,5 C ES,4 BETA SU,5 DELTA SU,5 A ES
+PAVESI M.|1 GAMMA SU
+PERENZONI M.|2 GAMMA SU,1 EPSILON SU,3 ALFA SU,4 EPSILON SU
+PETRONIO A.|5 C ES,5 B ES,3 C ES,5 A ES,3 A ES,4 A ES
+PETRUZZI A.|5 ALFA SU,4 BETA SU,5 A ES
+PETTENER A.|2 A CL (IV anno),5 B CL (II anno),5 A CL (II anno),3 C LIN,3 A CL (V anno),1 A CL (III anno)
+PICAMUS D.|5 ALFA SU,4 ALFA SU,3 DELTA SU
+PIGNATTI O.|3 DELTA SU,5 DELTA SU,5 B ES
+PINATO G.|1 DELTA SU,1 C ES,1 GAMMA SU,2 C ES,2 BETA SU,1 EPSILON SU
+POILLUCCI S.|2 ALFA SU,5 B ES,5 A ES,1 ALFA SU,4 A ES,2 EPSILON SU
+POLITI A.|3 A CL (V anno),2 EPSILON SU,2 A CL (IV anno)
+QUARANTOTTO S.|1 M,2 M,4 M,5 M,3 M
+ROMANELLI M.|5 B ES,4 EPSILON SU,4 B ES,1 A CL (III anno),4 DELTA SU
+RONDINI A.|3 BETA SU,1 GAMMA SU,2 BETA SU,2 A ES,1 EPSILON SU,2 B ES,3 DELTA SU,4 GAMMA SU,4 EPSILON SU,2 EPSILON SU,2 C ES,2 DELTA SU,2 ALFA SU,2 GAMMA SU,3 GAMMA SU,4 DELTA SU,1 DELTA SU,1 BETA SU
+RUGGERI R.|2 EPSILON SU,3 GAMMA SU,1 GAMMA SU,2 A ES,2 GAMMA SU,1 A ES,4 GAMMA SU,5 GAMMA SU,1 EPSILON SU
+SCATTAINI G.|5 A ES,3 A ES,5 B ES
+SCHIAVON R.|2 M,3 M,4 M,5 M
+SFORZINA C.|2 GAMMA SU,1 GAMMA SU
+SPADONI A.|2 A ES,2 ALFA SU,4 A ES,5 C ES
+SPATARO M.|1 EPSILON SU,2 C ES,1 ALFA SU,3 BETA SU
+SPINA G.|1 D LIN,1 ALFA SU,2 BETA SU
+TAVANO C.|4 EPSILON SU,5 EPSILON SU,4 DELTA SU,4 BETA SU,5 BETA SU
+TEDESCHI E.|3 B ES,3 C LIN,5 C LIN,4 M
+TIROTTA S.|2 GAMMA SU,5 EPSILON SU,2 M
+TOFFUL M.|4 BETA SU,3 GAMMA SU,2 DELTA SU,3 BETA SU
+TOMASELLA P.|3 C LIN,4 M,5 C LIN,3 M
+TOMMASI T.|
+TOMMASONI A.|2 A ES,1 EPSILON SU,1 C ES,4 BETA SU,3 DELTA SU,2 EPSILON SU,3 BETA SU,4 GAMMA SU
+TORREGROSSA A.|5 B ES,3 BETA SU,3 ALFA SU
+ULCIGRAI P.|2 C ES,3 BETA SU,5 BETA SU,5 DELTA SU
+URDICH S.|3 GAMMA SU,3 B ES,4 DELTA SU,4 ALFA SU,5 DELTA SU,5 ALFA SU
+URSICH I.|1 C LIN,2 C LIN,2 D LIN,3 C LIN,4 C LIN,5 C LIN,1 D LIN
+VARRESE C.|1 BETA SU,1 A ES
+VENTURA R.|3 BETA SU,3 A ES,5 A ES,4 BETA SU
+VIDOTTO M.|1 C ES,3 DELTA SU
+VISINTINI S.|2 A CL (IV anno),5 A CL (II anno),5 B CL (II anno)
+ZAMBERLAN C.|4 M,1 D LIN,1 C LIN,3 M,3 B ES
+ZANINI ABRAM A.|2 B ES,2 GAMMA SU,1 GAMMA SU,1 ALFA SU
+ZERJAL E.|2 M,5 M,4 M
+ZHENG Y.|1 C LIN,1 D LIN,2 C LIN,2 D LIN
+ZIBAI E.|3 C LIN,4 M,5 C LIN,3 M,5 M
+ZIKOVIC S.|2 C LIN,1 C LIN,4 B ES,1 M,1 D LIN
+ZINI I.|2 M,1 M
+ZOCCHI M.|5 A CL (II anno),4 B CL (I anno)
+ZONTA B.|1 M,2 M,3 M,5 M
+ZOTTI D.|1 GAMMA SU,2 A ES,1 ALFA SU,1 EPSILON SU,1 A ES
+ZULLIAN A.|1 M,2 M,3 M,4 M
+ZUODAR S.|2 C ES,3 B ES,3 BETA SU,3 DELTA SU
+ZUPIN D.|1 M,3 M
+
+

BIN
documents/list/output/elenco_sostegno_musicale.odt


BIN
documents/list/output/elenco_sostegno_musicale.pdf


BIN
documents/list/reference.odt


+ 8 - 0
handlers/handlers.go

@@ -93,6 +93,10 @@ func generateHandler(r *mux.Router, model string) {
 			PathPattern{"/api/%s/{id}/update", "", []string{"GET", "POST"}},
 			PathPattern{"/api/%s/{id}/delete", "", []string{"DELETE"}},
 		}
+
+		executePatterns []PathPattern = []PathPattern{
+			PathPattern{"/%s/{id}/execute", "", []string{"GET"}},
+		}
 	)
 	for _, pattern := range patterns {
 		r.Handle(pattern.Path(model), jwtCookie.Handler(recoverHandler(modelHandler(model, pattern)))).Methods(pattern.Methods...)
@@ -102,6 +106,10 @@ func generateHandler(r *mux.Router, model string) {
 		r.Handle(pattern.Path(model), jwtHeader.Handler(recoverHandler(modelHandler(model, pattern)))).Methods(pattern.Methods...)
 	}
 
+	for _, pattern := range executePatterns {
+		r.Handle(pattern.Path(model), jwtCookie.Handler(recoverHandler(modelHandler(model, pattern)))).Methods(pattern.Methods...)
+	}
+
 }
 
 func Handlers() *mux.Router {

+ 21 - 0
orm/document.go

@@ -1,6 +1,7 @@
 package orm
 
 import (
+	"log"
 	"net/http"
 
 	"github.com/jinzhu/gorm"
@@ -149,6 +150,26 @@ func GetDocumentForAdd(args map[string]string) (interface{}, error) {
 	return data, nil
 }
 
+func GetDocumentExecute(args map[string]string) (interface{}, error) {
+	var document Document
+	if err := DB().First(&document, args["id"]).Error; err != nil {
+		return nil, err
+	}
+
+	done := make(chan bool)
+
+	go func(done chan bool) {
+		log.Println("Triggering execution!")
+		done <- true
+	}(done)
+
+	<-done
+
+	log.Println("Execution was triggered!")
+
+	return &document, nil
+}
+
 func (t *Document) RestAPIPath() string {
 	return "documents"
 }

+ 5 - 4
orm/mappings.go

@@ -91,10 +91,11 @@ var (
 		"/api/administratives/add/":        GetNothing,
 
 		// Documents
-		"/documents":             GetDocumentsAll,
-		"/documents/{id}":        GetDocumentAll,
-		"/documents/{id}/update": GetDocumentForUpdate,
-		"/documents/add/":        GetDocumentForAdd,
+		"/documents":              GetDocumentsAll,
+		"/documents/{id}":         GetDocumentAll,
+		"/documents/{id}/update":  GetDocumentForUpdate,
+		"/documents/{id}/execute": GetDocumentExecute,
+		"/documents/add/":         GetDocumentForAdd,
 
 		"/api/documents":             GetDocumentsAll,
 		"/api/documents/{id}":        GetDocumentAll,

+ 1 - 1
templates/activities_show.html.tpl

@@ -18,7 +18,7 @@
 
 	<div class="btn-group float-right" role="group">
 	  <a href="/activities/add/?{{query "tpl_layout" "base" "tpl_content" "activities_add_update"}}" class="btn btn-success">
-	    <span class="fa fa-edit" aria-hidden="true"></span>
+	    <span class="fa fa-plus-circle" aria-hidden="true"></span>
 	    Crea
 	  </a>
 

+ 44 - 0
templates/documents_execute.html.tpl

@@ -0,0 +1,44 @@
+{{ define "content" }}
+
+<div class="container">
+
+  <nav aria-label="breadcrumb">
+    <ol class="breadcrumb">
+      <li class="breadcrumb-item"><a href="/documents?{{query "tpl_layout" "base" "tpl_content" "documents_generator"}}">Documenti</a></li>
+      <li class="breadcrumb-item"><a href="/documents/{{.Data.ID}}">{{.Data.Name}}</a></li>
+      <li class="breadcrumb-item"><a href="#">Genera</a></li>
+    </ol>
+  </nav>
+
+  <div class="karmen-info-header">
+    <div class="row">
+      <div class="col-md-8">
+	<h1>Generazione di {{.Data.Name}}</h1>
+      </div>
+      <div class="col-md-4">
+        
+	<div class="btn-group float-right" role="group">
+	  <button href="/documents/{{.Data.ID}}/delete"
+		  data-url="/documents/{{.Data.ID}}/delete"
+		  class="btn btn-danger karmen-ajax-delete">
+            <span class="fa fa-stop" aria-hidden="true"></span>
+	    Ferma
+	  </button>
+	</div>
+
+      </div>
+    </div>
+  </div>
+
+  <div class="row">
+    <div class="col-md-12">
+      
+      <h2 class="karmen-relation-header">Esecuzione</h2>
+      <p>Non è stato prodotto nessun documento.</p>
+    </div>
+    
+  </div>
+
+</div>    
+
+{{ end }}

+ 13 - 18
templates/documents_show.html.tpl

@@ -4,7 +4,7 @@
 
   <nav aria-label="breadcrumb">
     <ol class="breadcrumb">
-      <li class="breadcrumb-item"><a href="/documents?{{query "tpl_layout" "base" "tpl_content" "documents"}}">Documenti</a></li>
+      <li class="breadcrumb-item"><a href="/documents?{{query "tpl_layout" "base" "tpl_content" "documents_generator"}}">Documenti</a></li>
       <li class="breadcrumb-item active"><a href="#">{{.Data.Name}}</a></li>
     </ol>
   </nav>
@@ -15,21 +15,27 @@
 	<h1>{{.Data.Name}}</h1>
       </div>
       <div class="col-md-4">
+        
+	<div class="btn-group float-right" role="group">
+          
+          <a href="/documents/{{.Data.ID}}/execute?{{query "tpl_layout" "base" "tpl_content" "documents_execute"}}" class="btn btn-secondary">
+            <span class="fa fa-file-alt" aria-hidden="true"></span>
+	    Genera
+	  </a>
 
-	<div class="btn-group pull-right" role="group">
 	  <a href="/documents/add/?{{query "tpl_layout" "base" "tpl_content" "documents_add_update"}}" class="btn btn-success">
-	    <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
+            <span class="fa fa-plus-circle" aria-hidden="true"></span>
 	    Crea
 	  </a>
 
 	  <a href="/documents/{{.Data.ID}}/update?{{query "tpl_layout" "base" "tpl_content" "documents_add_update" "update" "true"}}"  class="btn btn-primary">
-	    <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
+            <span class="fa fa-edit" aria-hidden="true"></span>
 	    Modifica
 	  </a>
 	  <button href="/documents/{{.Data.ID}}/delete"
 		  data-url="/documents/{{.Data.ID}}/delete"
 		  class="btn btn-danger karmen-ajax-delete">
-	    <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
+            <span class="fa fa-trash" aria-hidden="true"></span>
 	    Elimina
 	  </button>
 	</div>
@@ -41,19 +47,8 @@
   <div class="row">
     <div class="col-md-12">
       
-      <h2 class="karmen-relation-header">sub items</h2>
-      {{if .Data.Items}}
-      <div class="list-group" id="materie_list_group">
-    	<a href="/subjects/{{.Data.Subject.ID}}?{{query "tpl_layout" "base" "tpl_content" "subjects_show"}}" class="list-group-item clearfix">
-    	  <span class="glyphicon glyphicon-book"></span>
-    	  {{.Data.Subject.Name}}
-    	</a>
-      </div>
-      {{else}}
-      <p>All'attività non è associata alcuna materia
-    	didattica. Clicca <a href="/activities/update?{{query "tpl_layout" "base" "tpl_content" "activities_add_update"}}">qui</a> per
-    	modificare questa attività didattica.</p>
-      {{end}}
+      <h2 class="karmen-relation-header">Documenti prodotti</h2>
+      <p>Non è stato prodotto nessun documento.</p>
     </div>
     
   </div>