From 89258476ebf8f11183fa7ef07540313be0d7925d Mon Sep 17 00:00:00 2001 From: kolaente Date: Sun, 6 Sep 2020 22:11:19 +0200 Subject: [PATCH] Add method to get a saved filter from the lists endpoint --- pkg/models/list.go | 13 +++++++++++++ pkg/models/list_rights.go | 6 ++++++ pkg/models/saved_filters.go | 10 ++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/pkg/models/list.go b/pkg/models/list.go index 49ebbcb6c..4c6515d28 100644 --- a/pkg/models/list.go +++ b/pkg/models/list.go @@ -185,6 +185,19 @@ func (l *List) ReadOne() (err error) { return nil } + // Check for saved filters + if getSavedFilterIDFromListID(l.ID) > 0 { + sf, err := getSavedFilterSimpleByID(getSavedFilterIDFromListID(l.ID)) + if err != nil { + return err + } + l.Title = sf.Title + l.Description = sf.Description + l.Created = sf.Created + l.Updated = sf.Updated + l.OwnerID = sf.OwnerID + } + // Get list owner l.Owner, err = user.GetUserByID(l.OwnerID) if err != nil { diff --git a/pkg/models/list_rights.go b/pkg/models/list_rights.go index 875409e8c..fddcbf8de 100644 --- a/pkg/models/list_rights.go +++ b/pkg/models/list_rights.go @@ -81,6 +81,12 @@ func (l *List) CanRead(a web.Auth) (bool, int, error) { return true, int(RightRead), nil } + // Saved Filter Lists need a special case + if getSavedFilterIDFromListID(l.ID) > 0 { + sf := &SavedFilter{ID: getSavedFilterIDFromListID(l.ID)} + return sf.CanRead(a) + } + // Check if the user is either owner or can read if err := l.GetSimpleByID(); err != nil { return false, 0, err diff --git a/pkg/models/saved_filters.go b/pkg/models/saved_filters.go index 07c950f9f..1d5653523 100644 --- a/pkg/models/saved_filters.go +++ b/pkg/models/saved_filters.go @@ -57,9 +57,15 @@ func (s *SavedFilter) getTaskCollection() *TaskCollection { return s.Filters } -func getSavedFilterIDFromListID(listID int64) int64 { +// Returns the saved filter ID from a list ID. Will not check if the filter actually exists. +// If the returned ID is zero, means that it is probably invalid. +func getSavedFilterIDFromListID(listID int64) (filterID int64) { // We get the id of the saved filter by multiplying the ListID with -1 and subtracting one - return listID*-1 - 1 + filterID = listID*-1 - 1 + if filterID > 0 { + filterID = 0 + } + return } func (s *SavedFilter) Create(auth web.Auth) error {