diff --git a/admin/sync/exercice_files.go b/admin/sync/exercice_files.go index 1e04d0aa..84cf8c61 100644 --- a/admin/sync/exercice_files.go +++ b/admin/sync/exercice_files.go @@ -112,7 +112,14 @@ func CheckExerciceFiles(i Importer, exercice *fic.Exercice, exceptions *CheckExc } else if size, err := getFileSize(i, path.Join(exercice.Path, "files", fname)); err != nil { errs = append(errs, NewFileError(exercice, fname, err)) } else { - file := exercice.NewDummyFile(path.Join(exercice.Path, "files", fname), getDestinationFilePath(path.Join(exercice.Path, "files", fname)), (*hash512).Sum(nil), size) + var digest_shown []byte + if strings.HasSuffix(fname, ".gz") { + if d, exists := digests[strings.TrimSuffix(fname, ".gz")]; exists { + digest_shown = d + } + } + + file := exercice.NewDummyFile(path.Join(exercice.Path, "files", fname), getDestinationFilePath(path.Join(exercice.Path, "files", fname)), (*hash512).Sum(nil), digest_shown, size) // Call checks hooks for _, h := range hooks.fileHooks { diff --git a/libfic/file.go b/libfic/file.go index 56cbdea4..5091398c 100644 --- a/libfic/file.go +++ b/libfic/file.go @@ -50,7 +50,7 @@ type EFile struct { // NewDummyFile creates an EFile, without any link to an actual Exercice File. // It is used to check the file validity -func (e *Exercice) NewDummyFile(origin string, dest string, checksum []byte, size int64) *EFile { +func (e *Exercice) NewDummyFile(origin string, dest string, checksum []byte, checksumShown []byte, size int64) *EFile { return &EFile{ Id: 0, origin: origin, @@ -58,7 +58,7 @@ func (e *Exercice) NewDummyFile(origin string, dest string, checksum []byte, siz IdExercice: e.Id, Name: path.Base(origin), Checksum: checksum, - ChecksumShown: nil, + ChecksumShown: checksumShown, Size: size, Published: true, }