Andrea Fazzi преди 5 години
родител
ревизия
9e4a96e0da
променени са 6 файла, в които са добавени 135 реда и са изтрити 12 реда
  1. 2 0
      documents/generators/list/list.go
  2. 20 8
      orm/document.go
  3. 17 2
      orm/job.go
  4. 2 0
      orm/mappings.go
  5. 23 2
      templates/documents_show.html.tpl
  6. 71 0
      templates/jobs_show.html.tpl

+ 2 - 0
documents/generators/list/list.go

@@ -162,6 +162,8 @@ func (generator *ListGenerator) Run(jobId uint) {
 
 	generate(teachers, funcMap)
 
+	time.Sleep(10 * time.Second)
+
 	job.End = time.Now()
 
 	err = client.UpdateJob(job)

+ 20 - 8
orm/document.go

@@ -11,19 +11,25 @@ import (
 	"gogs.carducci-dante.gov.it/karmen/core/renderer"
 )
 
-type FilePath struct {
+type Document struct {
 	gorm.Model
 
-	Path       string
-	DocumentID uint
-}
+	Name       string
+	InputPath  string
+	OutputPath string
 
-type Document struct {
-	gorm.Model
+	CloudUrl      string
+	CloudUsername string
+	CloudPassword string
 
-	Name string
+	LimeSurveyUrl      string
+	LimeSurveyUsername string
+	LimeSurveyPassword string
 
 	Jobs []*Job
+
+	RunningJobs   []*Job
+	CompletedJobs []*Job
 }
 
 type DocumentForUpdate struct {
@@ -47,7 +53,13 @@ func GetDocumentAll(args map[string]string) (interface{}, error) {
 
 	id := args["id"]
 
-	if err := DB().Preload("Jobs", "end <> ?", time.Time{}).Where("id = ?", id).Find(&document).Error; err != nil {
+	if err := DB().Preload("RunningJobs", "end = ?", time.Time{}).Where("id = ?", id).Find(&document).Error; err != nil {
+		return nil, err
+	}
+
+	if err := DB().Preload("CompletedJobs", func(db *gorm.DB) *gorm.DB {
+		return db.Where("end<>?", time.Time{}).Limit(10).Order("end DESC")
+	}).Where("id = ?", id).Find(&document).Error; err != nil {
 		return nil, err
 	}
 

+ 17 - 2
orm/job.go

@@ -1,6 +1,7 @@
 package orm
 
 import (
+	"log"
 	"net/http"
 	"time"
 
@@ -8,12 +9,24 @@ import (
 	"gogs.carducci-dante.gov.it/karmen/core/renderer"
 )
 
+type File struct {
+	gorm.Model
+
+	Path string
+
+	JobID uint
+}
+
 type Job struct {
 	gorm.Model
 
-	Name       string
+	Name     string
+	Document *Document
+
 	DocumentID uint
 
+	Files []*File
+
 	Start time.Time
 	End   time.Time
 }
@@ -22,9 +35,11 @@ func (s *Job) GetID() uint { return s.ID }
 
 func GetJob(args map[string]string) (interface{}, error) {
 	var job Job
-	if err := DB().First(&job, args["id"]).Error; err != nil {
+	if err := DB().Debug().Preload("Document").First(&job, args["id"]).Error; err != nil {
 		return nil, err
 	}
+	log.Println("Document NAME", job.Document.Name)
+
 	return &job, nil
 }
 

+ 2 - 0
orm/mappings.go

@@ -104,6 +104,8 @@ var (
 
 		// Jobs
 
+		"/jobs/{id}": GetJob,
+
 		"/api/jobs/{id}": GetJob,
 		"/api/jobs/add/": GetNothing,
 	}

+ 23 - 2
templates/documents_show.html.tpl

@@ -48,9 +48,9 @@
     <div class="col-md-12">
       
       <h2 class="karmen-relation-header">Lavori in esecuzione</h2>
-      {{if .Data.Jobs}}
+      {{if .Data.RunningJobs}}
       <div class="list-group" id="jobs_list_group">
-    	{{range $job := .Data.Jobs}}
+    	{{range $job := .Data.RunningJobs}}
     	<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.
@@ -64,6 +64,27 @@
     
   </div>
 
+  <div class="row">
+    <div class="col-md-12">
+      
+      <h2 class="karmen-relation-header">Lavori terminati di recente</h2>
+      {{if .Data.CompletedJobs}}
+      <div class="list-group" id="jobs_list_group">
+    	{{range $job := .Data.CompletedJobs}}
+    	<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}} è stato completato in data {{$job.End}}.
+    	  {{end}}
+    	</a>
+      </div>
+      {{else}}
+      <p>Nessun lavoro è attualmente in esecuzione.</p>
+      {{end}}
+    </div>
+    
+  </div>
+  
+
 </div>    
 
 {{ end }}

+ 71 - 0
templates/jobs_show.html.tpl

@@ -0,0 +1,71 @@
+{{ 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"}}">Documenti</a></li>
+      <li class="breadcrumb-item"><a href="/documents/{{.Data.DocumentID}}?{{query "tpl_layout" "base" "tpl_content" "documents_show"}}">{{.Data.Document.Name}}</a></li>
+      <li class="breadcrumb-item active"><a href="#">Lavoro ID {{.Data.ID}}</a></li>
+    </ol>
+  </nav>
+
+  <div class="karmen-info-header">
+    <div class="row">
+      <div class="col-md-8">
+	<h1>{{.Data.Name}}</h1>
+      </div>
+      <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">
+            <span class="fa fa-trash" aria-hidden="true"></span>
+	    Elimina
+	  </button>
+	</div>
+
+      </div>
+    </div>
+  </div>
+  
+  <div class="row">
+    <div class="col-md-12">
+      
+      <h2 class="karmen-relation-header">Documenti prodotti</h2>
+      {{if .Data.Files}}
+      <div class="list-group" id="files_list_group">
+    	{{range $file := .Data.Files}}
+    	<a href="/jobs/{{$file.JobID}}/files/{{$file.Path}}" class="list-group-item list-group-item-action">
+    	  <span class="fa fa-file-alt"></span>
+    	  {{$file.Name}}
+    	  {{end}}
+    	</a>
+      </div>
+      {{else}}
+      <p>Non è stato prodotto nessun file..</p>
+      {{end}}
+    </div>
+    
+  </div>
+
+
+</div>    
+
+{{ end }}