|
|
@@ -2,7 +2,6 @@ package repo |
|
|
|
|
|
|
|
import ( |
|
|
|
"fmt" |
|
|
|
"io/ioutil" |
|
|
|
"net/http" |
|
|
|
"net/url" |
|
|
|
"os" |
|
|
@@ -174,7 +173,7 @@ func ServeAllProjectsPeriodStatisticsFile(ctx *context.Context) { |
|
|
|
return |
|
|
|
} |
|
|
|
var projectAnalysis = ctx.Tr("repo.repo_stat_inspect") |
|
|
|
fileName, frontName := getFileName(ctx, beginTime, endTime, projectAnalysis) |
|
|
|
fileName := getFileName(ctx, beginTime, endTime, projectAnalysis) |
|
|
|
|
|
|
|
if err := os.MkdirAll(setting.RadarMap.Path, os.ModePerm); err != nil { |
|
|
|
ctx.Error(http.StatusBadRequest, fmt.Errorf("Failed to create dir %s: %v", setting.AvatarUploadPath, err).Error()) |
|
|
@@ -207,17 +206,14 @@ func ServeAllProjectsPeriodStatisticsFile(ctx *context.Context) { |
|
|
|
f.SetActiveSheet(index) |
|
|
|
f.DeleteSheet("Sheet1") |
|
|
|
|
|
|
|
if err := f.SaveAs(fileName); err != nil { |
|
|
|
log.Error("Can not generate file.", err) |
|
|
|
ctx.Error(http.StatusBadRequest, ctx.Tr("repo.generate_statistic_file_error")) |
|
|
|
return |
|
|
|
} |
|
|
|
ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(fileName)) |
|
|
|
ctx.Resp.Header().Set("Content-Type", "application/octet-stream") |
|
|
|
|
|
|
|
ctx.ServeFile(fileName, url.QueryEscape(frontName)) |
|
|
|
f.WriteTo(ctx.Resp) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func getFileName(ctx *context.Context, beginTime time.Time, endTime time.Time, projectAnalysis string) (string, string) { |
|
|
|
func getFileName(ctx *context.Context, beginTime time.Time, endTime time.Time, projectAnalysis string) string { |
|
|
|
baseName := setting.RadarMap.Path + "/" + projectAnalysis + "_" |
|
|
|
|
|
|
|
if ctx.QueryTrim("q") != "" { |
|
|
@@ -229,23 +225,7 @@ func getFileName(ctx *context.Context, beginTime time.Time, endTime time.Time, p |
|
|
|
baseName = baseName + beginTime.AddDate(0, 0, -1).Format(EXCEL_DATE_FORMAT) + "_" + endTime.AddDate(0, 0, -1).Format(EXCEL_DATE_FORMAT) |
|
|
|
} |
|
|
|
frontName := baseName + ".xlsx" |
|
|
|
localName := baseName + "_" + strconv.FormatInt(time.Now().Unix(), 10) + ".xlsx" |
|
|
|
return localName, path.Base(frontName) |
|
|
|
} |
|
|
|
|
|
|
|
func ClearUnusedStatisticsFile() { |
|
|
|
fileInfos, err := ioutil.ReadDir(setting.RadarMap.Path) |
|
|
|
if err != nil { |
|
|
|
log.Warn("can not read dir: "+setting.RadarMap.Path, err) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
for _, fileInfo := range fileInfos { |
|
|
|
if !fileInfo.IsDir() && fileInfo.ModTime().Before(time.Now().AddDate(0, 0, -1)) { |
|
|
|
os.Remove(path.Join(setting.RadarMap.Path, fileInfo.Name())) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return path.Base(frontName) |
|
|
|
} |
|
|
|
|
|
|
|
func allProjectsPeroidHeader(ctx *context.Context) map[string]string { |
|
|
|