From f1eaf497aa8ae888566c030a71255f7b7475c22f Mon Sep 17 00:00:00 2001 From: mr Date: Wed, 4 Mar 2026 13:31:05 +0100 Subject: [PATCH] resource as draft for update --- models/resources/resource.go | 5 +---- models/resources/resource_accessor.go | 6 +----- models/utils/common.go | 5 ++++- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/models/resources/resource.go b/models/resources/resource.go index 8cc58f3..b001059 100755 --- a/models/resources/resource.go +++ b/models/resources/resource.go @@ -56,10 +56,7 @@ func (r *AbstractResource) StoreDraftDefault() { } func (r *AbstractResource) CanUpdate(set utils.DBObject) (bool, utils.DBObject) { - if r.IsDraft != set.IsDrafted() && set.IsDrafted() { - return true, set // only state can be updated - } - return r.IsDraft != set.IsDrafted() && set.IsDrafted(), set + return r.IsDraft, set } func (r *AbstractResource) CanDelete() bool { diff --git a/models/resources/resource_accessor.go b/models/resources/resource_accessor.go index 8cf7406..59a8400 100755 --- a/models/resources/resource_accessor.go +++ b/models/resources/resource_accessor.go @@ -59,11 +59,7 @@ func (dca *ResourceMongoAccessor[T]) UpdateOne(set map[string]interface{}, id st if dca.GetType() == tools.COMPUTE_RESOURCE { return nil, 404, errors.New("can't update a non existing computing units resource not reported onto compute units catalog") } - if d, c, err := utils.GenericUpdateOne(set, id, dca, dca.generateData()); err != nil { - return d, c, err - } else { - return utils.GenericUpdateOne(set, id, dca, dca.generateData()) - } + return utils.GenericUpdateOne(set, id, dca, dca.generateData()) } func (dca *ResourceMongoAccessor[T]) ShouldVerifyAuth() bool { diff --git a/models/utils/common.go b/models/utils/common.go index b8a7f42..1666153 100755 --- a/models/utils/common.go +++ b/models/utils/common.go @@ -93,7 +93,7 @@ func ModelGenericUpdateOne(change map[string]interface{}, id string, a Accessor) } ok, r := r.CanUpdate(r) if !ok { - return nil, 403, errors.New("you are not allowed to delete :" + a.GetType().String()) + return nil, 403, errors.New("you are not allowed to update :" + a.GetType().String()) } r.UpToDate(a.GetUser(), a.GetPeerID(), false) if a.GetPeerID() == r.GetCreatorID() { @@ -114,6 +114,9 @@ func ModelGenericUpdateOne(change map[string]interface{}, id string, a Accessor) // GenericLoadOne loads one object from the database (generic) // json expected in entry is a flatted object no need to respect the inheritance hierarchy func GenericUpdateOne(change map[string]interface{}, id string, a Accessor, new DBObject) (DBObject, int, error) { + if change["is_draft"] == nil { + change["is_draft"] = false + } loaded, c, err := ModelGenericUpdateOne(change, id, a) if err != nil { return nil, c, err