1
0

fix(export): don't crash when an exported file does not exist

Related to https://github.com/go-vikunja/vikunja/issues/110
This commit is contained in:
kolaente 2024-02-10 13:45:12 +01:00
parent 25a03d1789
commit 7edb53ca12
No known key found for this signature in database
GPG Key ID: F40E70337AB24C9B

View File

@ -19,8 +19,10 @@ package models
import ( import (
"archive/zip" "archive/zip"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"io" "io"
"io/fs"
"os" "os"
"strconv" "strconv"
"time" "time"
@ -219,15 +221,20 @@ func exportTaskAttachments(s *xorm.Session, wr *zip.Writer, taskIDs []int64) (er
return err return err
} }
fs := make(map[int64]io.ReadCloser) attachmentFiles := make(map[int64]io.ReadCloser)
for _, ta := range tas { for _, ta := range tas {
if err := ta.File.LoadFileByID(); err != nil { err = ta.File.LoadFileByID()
if err != nil {
var pathError *fs.PathError
if errors.As(err, &pathError) {
continue
}
return err return err
} }
fs[ta.FileID] = ta.File.File attachmentFiles[ta.FileID] = ta.File.File
} }
return utils.WriteFilesToZip(fs, wr) return utils.WriteFilesToZip(attachmentFiles, wr)
} }
func exportSavedFilters(s *xorm.Session, u *user.User, wr *zip.Writer) (err error) { func exportSavedFilters(s *xorm.Session, u *user.User, wr *zip.Writer) (err error) {
@ -256,7 +263,7 @@ func exportProjectBackgrounds(s *xorm.Session, u *user.User, wr *zip.Writer) (er
return err return err
} }
fs := make(map[int64]io.ReadCloser) backgroundFiles := make(map[int64]io.ReadCloser)
for _, l := range projects { for _, l := range projects {
if l.BackgroundFileID == 0 { if l.BackgroundFileID == 0 {
continue continue
@ -267,13 +274,17 @@ func exportProjectBackgrounds(s *xorm.Session, u *user.User, wr *zip.Writer) (er
} }
err = bgFile.LoadFileByID() err = bgFile.LoadFileByID()
if err != nil { if err != nil {
return var pathError *fs.PathError
if errors.As(err, &pathError) {
continue
}
return err
} }
fs[l.BackgroundFileID] = bgFile.File backgroundFiles[l.BackgroundFileID] = bgFile.File
} }
return utils.WriteFilesToZip(fs, wr) return utils.WriteFilesToZip(backgroundFiles, wr)
} }
func RegisterOldExportCleanupCron() { func RegisterOldExportCleanupCron() {