Initial commit from ZIP

This commit is contained in:
kusz committed 2024-11-27 13:18:16 +01:00
commit 378d4692a9
454 files changed
+40367

No files matched your search

+42
View File
@@ -0,0 +1,42 @@
from typing import TYPE_CHECKING
from rules import predicate, always_deny
from outbo.apps.core.rules import is_supplier, is_agency, is_client
if TYPE_CHECKING:
from outbo.apps.projects.models import Project, Member
@predicate
def _project_published(_, project: "Project"):
return project.published
can_publish_project = is_supplier & ~_project_published
can_create_project = is_supplier
can_read_project = is_supplier | is_agency | (is_client & _project_published)
can_update_project = can_publish_project
can_delete_project = always_deny
@predicate
def _can_remove_this_member(user: "User", member: "Member"):
project = member.project
all_memberships = project.members
current_user_membership = all_memberships.filter(user=user).first()
if current_user_membership is None:
return False
current_role_memberships = all_memberships.filter(role=current_user_membership.role)
return (
member.role == current_user_membership.role
and current_role_memberships.count() > 1
)
can_create_project_member = is_supplier
can_read_project_member = always_deny
can_update_project_member = always_deny
can_delete_project_member = _can_remove_this_member