فهرست منبع

Improve documents interface

Andrea Fazzi 5 سال پیش
والد
کامیت
a89e16ee55

+ 4 - 0
compose/karmen/docker-compose.yml

@@ -9,6 +9,8 @@ services:
     environment:
       - DB_HOST=db
       - DB_PORT=3306
+    volumes:
+      - /etc/localtime:/etc/localtime:ro
 
   db:
     image: mariadb
@@ -45,10 +47,12 @@ services:
   nextcloud_server:
     restart: always
     image: nextcloud
+    container_name: nextcloud_server
     environment:
       - SQLITE_DATABASE=nextcloud
       - NEXTCLOUD_ADMIN_USER=admin
       - NEXTCLOUD_ADMIN_PASSWORD=password
+      - NEXTCLOUD_TRUSTED_DOMAINS=nextcloud_server
     ports:
       - 8080:80
 

+ 8 - 4
generator/generators/list/list.go

@@ -38,7 +38,8 @@ var funcMap template.FuncMap = template.FuncMap{
 
 func (generator *ListGenerator) generate(outputPath string, teachers []*orm.Teacher, funcMap template.FuncMap) {
 	filename := filepath.Join(outputPath, "elenco_docenti")
-	tpl, err := tpl_util.LoadTextTemplate("./generator/generators/list/list.tpl.md", funcMap)
+	tplContent, err := ncClient.Download("")
+	tpl, err := tpl_util.LoadTextTemplateFromString("./generator/generators/list/list.tpl.md", funcMap)
 	if err != nil {
 		panic(err)
 	}
@@ -132,9 +133,9 @@ func (generator *ListGenerator) Run(jobId uint) {
 
 	log.Printf("Connecting to karmen...")
 	client, err := karmen_client.Dial(
-		"http://localhost:3000",
-		"admin",
-		"admin",
+		config.Config.Url,
+		config.Config.Admin.Username,
+		config.Config.Admin.Password,
 	)
 	if err != nil {
 		log.Println(err)
@@ -168,6 +169,8 @@ func (generator *ListGenerator) Run(jobId uint) {
 
 	job.Files = append(job.Files, &orm.File{Path: "elenco_docenti.pdf"})
 
+	time.Sleep(10 * time.Second)
+
 	err = client.UpdateJob(job)
 	if err != nil {
 		panic(err)
@@ -182,4 +185,5 @@ func (generator *ListGenerator) Run(jobId uint) {
 	if err != nil {
 		panic(err)
 	}
+	log.Println("Files were uploaded to the cloud...")
 }

+ 5 - 1
orm/document.go

@@ -30,6 +30,8 @@ type Document struct {
 
 	RunningJobs   []*Job
 	CompletedJobs []*Job
+
+	LastJob *Job `gorm:"-"`
 }
 
 type DocumentForUpdate struct {
@@ -58,7 +60,7 @@ func GetDocumentAll(args map[string]string) (interface{}, error) {
 	}
 
 	if err := DB().Preload("CompletedJobs", func(db *gorm.DB) *gorm.DB {
-		return db.Where("end<>?", time.Time{}).Limit(10).Order("end DESC")
+		return db.Where("end <> ?", time.Time{}).Limit(5).Order("end DESC")
 	}).Where("id = ?", id).Find(&document).Error; err != nil {
 		return nil, err
 	}
@@ -175,6 +177,8 @@ func GetDocumentExecute(args map[string]string) (interface{}, error) {
 		return nil, err
 	}
 
+	document.LastJob = job
+
 	log.Printf("Start concurrent job %d for generator %s", job.ID, document.Name)
 
 	go generator.Generators["list"].Run(job.ID)

+ 4 - 23
templates/documents_execute.html.tpl

@@ -12,37 +12,18 @@
 
   <div class="karmen-info-header">
     <div class="row">
-      <div class="col-md-8">
+      <div class="col-md-12">
 	<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">Lavori in esecuzione</h2>
-      {{if .Data.Jobs}}
-      <div class="list-group" id="jobs_list_group">
-    	{{range $job := .Data.Jobs}}
-    	<a href="/jobs/{{$job.ID}}?{{query "tpl_layout" "base" "tpl_content" "jobs_show"}}" class="list-group-item list-group-item-action">
-    	  <span class="fa fa-file-alt"></span>
-    	  Il lavoro con ID {{$job.ID}} è in esecuzione.
-    	  {{end}}
-    	</a>
-      </div>
+      <h2 class="karmen-relation-header">Lavoro in esecuzione</h2>
+      {{if .Data.LastJob}}
+      <p>Hai avviato l'esecuzione del <strong> Lavoro con ID {{.Data.LastJob.ID}}</strong>. Premi <a href="/jobs/{{.Data.LastJob.ID}}?{{query "tpl_layout" "base" "tpl_content" "jobs_show"}}">qui</a> per consultare lo stato di avanzamento della procedura.</p>
       {{else}}
       <p>Nessun lavoro è attualmente in esecuzione.</p>
       {{end}}

+ 3 - 8
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_generator"}}">Documenti</a></li>
+      <li class="breadcrumb-item"><a href="/documents?{{query "tpl_layout" "base" "tpl_content" "documents"}}">Documenti</a></li>
       <li class="breadcrumb-item active"><a href="#">{{.Data.Name}}</a></li>
     </ol>
   </nav>
@@ -18,11 +18,6 @@
         
 	<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>
-
 	  <a href="/documents/add/?{{query "tpl_layout" "base" "tpl_content" "documents_add_update"}}" class="btn btn-success">
             <span class="fa fa-plus-circle" aria-hidden="true"></span>
 	    Crea
@@ -58,7 +53,7 @@
     	</a>
       </div>
       {{else}}
-      <p>Nessun lavoro è attualmente in esecuzione.</p>
+      <p>Nessun lavoro è attualmente in esecuzione. Clicca <a href="/documents/{{.Data.ID}}/execute?{{query "tpl_layout" "base" "tpl_content" "documents_execute"}}">qui</a> per avviare l'esecuzione di un nuovo lavoro.</p>
       {{end}}
     </div>
     
@@ -78,7 +73,7 @@
     	</a>
       </div>
       {{else}}
-      <p>Nessun lavoro è attualmente in esecuzione.</p>
+      <p>Nessun lavoro è stato terminato di recente.</p>
       {{end}}
     </div>
     

+ 0 - 15
templates/jobs_show.html.tpl

@@ -18,21 +18,6 @@
       <div class="col-md-4">
         
 	<div class="btn-group float-right" role="group">
-          
-          <a href="/jobs/{{.Data.ID}}/execute?{{query "tpl_layout" "base" "tpl_content" "jobs_execute"}}" class="btn btn-secondary">
-            <span class="fa fa-file-alt" aria-hidden="true"></span>
-	    Genera
-	  </a>
-
-	  <a href="/jobs/add/?{{query "tpl_layout" "base" "tpl_content" "jobs_add_update"}}" class="btn btn-success">
-            <span class="fa fa-plus-circle" aria-hidden="true"></span>
-	    Crea
-	  </a>
-
-	  <a href="/jobs/{{.Data.ID}}/update?{{query "tpl_layout" "base" "tpl_content" "jobs_add_update" "update" "true"}}"  class="btn btn-primary">
-            <span class="fa fa-edit" aria-hidden="true"></span>
-	    Modifica
-	  </a>
 	  <button href="/jobs/{{.Data.ID}}/delete"
 		  data-url="/jobs/{{.Data.ID}}/delete"
 		  class="btn btn-danger karmen-ajax-delete">

+ 1 - 1
templates/layout/base.html.tpl

@@ -40,7 +40,7 @@
 	     <a class="nav-item nav-link" href="/offices?{{query "tpl_layout" "base" "tpl_content" "offices"}}">Uffici</a>
 	   </li>
            <li class="nav-item">
-	     <a class="nav-item nav-link" href="/administratives?{{query "tpl_layout" "base" "tpl_content" "administratives"}}">Amministrativi</a>
+	     <a class="nav-item nav-link" href="/administratives?{{query "tpl_layout" "base" "tpl_content" "administratives"}}">ATA</a>
 	   </li>
            <li class="nav-item">
 	     <a class="nav-item nav-link" href="/documents?{{query "tpl_layout" "base" "tpl_content" "documents"}}">Documenti</a>

+ 27 - 0
vendor/gogs.carducci-dante.gov.it/karmen/util/template/template.go

@@ -1,6 +1,8 @@
 package template
 
 import (
+	"crypto/sha1"
+	"fmt"
 	"io/ioutil"
 	"text/template"
 )
@@ -27,3 +29,28 @@ func LoadTextTemplate(filename string, funcMap ...template.FuncMap) (*template.T
 	}
 	return tpl, nil
 }
+
+func LoadTextTemplateFromString(content string, funcMap ...template.FuncMap) (*template.Template, error) {
+	var (
+		tpl *template.Template
+		err error
+	)
+
+	h := sha1.New()
+	h.Write([]byte(content))
+
+	name := fmt.Sprintf("%x", h.Sum(nil))
+
+	if len(funcMap) > 0 {
+		tpl, err = template.New(name).Funcs(funcMap[0]).Parse(content)
+		if err != nil {
+			return nil, err
+		}
+	} else {
+		tpl, err = template.New(name).Parse(content)
+		if err != nil {
+			return nil, err
+		}
+	}
+	return tpl, nil
+}