Photo: Update year and month whenever takenAt may change

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
This commit is contained in:
Michael Mayer 2020-05-15 16:06:32 +02:00
parent 9937304d0c
commit 7ee4d5eda5
2 changed files with 26 additions and 7 deletions

View File

@ -75,6 +75,8 @@ func SavePhotoForm(model Photo, form form.Photo, geoApi string) error {
return err
}
model.UpdateYearMonth()
if form.Description.PhotoID == model.ID {
if err := deepcopier.Copy(&model.Description).From(form.Description); err != nil {
return err
@ -122,6 +124,8 @@ func (m *Photo) Save() error {
db := Db()
labels := m.ClassifyLabels()
m.UpdateYearMonth()
if err := m.UpdateTitle(labels); err != nil {
log.Warnf("%s (%s)", err.Error(), m.PhotoUUID)
}
@ -485,6 +489,27 @@ func (m *Photo) SetTakenAt(taken, local time.Time, zone, source string) {
if zone != "" {
m.TimeZone = zone
}
m.UpdateYearMonth()
}
// UpdateYearMonth updates internal date fields.
func (m *Photo) UpdateYearMonth() {
if m.TakenAt.IsZero() || m.TakenAt.Year() < 1000 {
return
}
if m.TakenAtLocal.IsZero() || m.TakenAtLocal.Year() < 1000 {
m.TakenAtLocal = m.TakenAt
}
if m.TakenSrc == SrcAuto {
m.PhotoYear = YearUnknown
m.PhotoMonth = MonthUnknown
} else {
m.PhotoYear = m.TakenAtLocal.Year()
m.PhotoMonth = int(m.TakenAtLocal.Month())
}
}
// SetCoordinates changes the photo lat, lng and altitude if not empty and from the same source.

View File

@ -279,13 +279,7 @@ func (ind *Index) MediaFile(m *MediaFile, o IndexOptions, originalName string) (
photo.PhotoCountry = entity.UnknownPlace.CountryCode()
}
if photo.TakenSrc == entity.SrcAuto {
photo.PhotoYear = entity.YearUnknown
photo.PhotoMonth = entity.MonthUnknown
} else if !photo.TakenAtLocal.IsZero() {
photo.PhotoYear = photo.TakenAtLocal.Year()
photo.PhotoMonth = int(photo.TakenAtLocal.Month())
}
photo.UpdateYearMonth()
if originalName != "" {
file.OriginalName = originalName