diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index ba1871d..4c6ecd0 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -574,7 +574,7 @@ class ServiceInstance(ServalaModelMixin, models.Model): unique_together = [("name", "organization", "context")] rules_permissions = { "view": rules.is_staff | perms.is_organization_member, - "change": rules.is_staff | perms.is_organization_admin, + "change": rules.is_staff | perms.is_organization_member, "delete": rules.is_staff | perms.is_organization_admin, "add": rules.is_authenticated, } diff --git a/src/servala/core/rules.py b/src/servala/core/rules.py index cf4dc1c..5ead2c3 100644 --- a/src/servala/core/rules.py +++ b/src/servala/core/rules.py @@ -13,30 +13,15 @@ def has_organization_role(user, org, roles): @rules.predicate -def is_organization_owner(user, obj): - if hasattr(obj, "organization"): - org = obj.organization - else: - org = obj +def is_organization_owner(user, org): return has_organization_role(user, org, ["owner"]) @rules.predicate -def is_organization_admin(user, obj): - if hasattr(obj, "organization"): - org = obj.organization - else: - org = obj +def is_organization_admin(user, org): return has_organization_role(user, org, ["owner", "admin"]) @rules.predicate -def is_organization_member(user, obj): - if hasattr(obj, "organization"): - org = obj.organization - else: - org = obj +def is_organization_member(user, org): return has_organization_role(user, org, None) - - -rules.add_perm("core", rules.is_staff)