diff --git a/pkg/models/tasks.go b/pkg/models/tasks.go index 7dd15daf8..05b8d505f 100644 --- a/pkg/models/tasks.go +++ b/pkg/models/tasks.go @@ -762,15 +762,19 @@ func (t *Task) Update() (err error) { "repeat_from_current_date", } - // If the task is being moved between lists, make sure to move the bucket + index as well - if t.ListID != 0 && ot.ListID != t.ListID { - b, err := getDefaultBucket(s, t.ListID) + // Make sure we have a bucket + var bucket *Bucket + if t.BucketID == 0 || (t.ListID != 0 && ot.ListID != t.ListID) { + bucket, err = getDefaultBucket(s, t.ListID) if err != nil { _ = s.Rollback() return err } - t.BucketID = b.ID + t.BucketID = bucket.ID + } + // If the task is being moved between lists, make sure to move the bucket + index as well + if t.ListID != 0 && ot.ListID != t.ListID { latestTask := &Task{} _, err = s.Where("list_id = ?", t.ListID).OrderBy("id desc").Get(latestTask) if err != nil { @@ -782,6 +786,12 @@ func (t *Task) Update() (err error) { colsToUpdate = append(colsToUpdate, "index") } + // Check the bucket limit + if err := checkBucketLimit(s, t, bucket); err != nil { + _ = s.Rollback() + return err + } + // Update the labels // // Maybe FIXME: