Initial commit from ZIP
This commit is contained in:
commit
378d4692a9
454 files changed
+40367
No files matched your search
+63
@@ -0,0 +1,63 @@
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from rules import always_deny, predicate
|
||||
|
||||
from outbo.apps.core.rules import is_agency
|
||||
from outbo.apps.products.rules import can_read_product
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from outbo.apps.authentication.models import User
|
||||
from outbo.apps.photobriefing.models import Brief, BriefItem
|
||||
|
||||
|
||||
# Brief
|
||||
@predicate
|
||||
def _has_readable_product(user: "User", brief: "Brief"):
|
||||
return can_read_product.test(user, brief.product)
|
||||
|
||||
|
||||
@predicate
|
||||
def can_edit_brief(user: "User", brief: "Brief"):
|
||||
return brief.editable_for_user(user=user)
|
||||
|
||||
|
||||
@predicate
|
||||
def can_publish_brief(user: "User", brief: "Brief"):
|
||||
return brief.publishable_for_user(user=user)
|
||||
|
||||
|
||||
@predicate
|
||||
def can_complete_brief(user: "User", brief: "Brief"):
|
||||
return brief.completable_for_user(user=user)
|
||||
|
||||
|
||||
@predicate
|
||||
def can_accept_brief(user: "User", brief: "Brief"):
|
||||
return brief.acceptable_for_user(user=user)
|
||||
|
||||
|
||||
# CRUD
|
||||
can_create_brief = always_deny
|
||||
can_read_brief = _has_readable_product
|
||||
can_update_brief = (
|
||||
can_edit_brief | can_publish_brief | can_accept_brief | can_complete_brief
|
||||
)
|
||||
can_delete_brief = always_deny
|
||||
|
||||
|
||||
# BriefItem
|
||||
@predicate
|
||||
def _has_readable_brief(user: "User", brief_item: "BriefItem"):
|
||||
return can_read_brief.test(user, brief_item.brief)
|
||||
|
||||
|
||||
@predicate
|
||||
def _has_editable_brief(user: "User", brief_item: "BriefItem"):
|
||||
return can_edit_brief.test(user, brief_item.brief)
|
||||
|
||||
|
||||
# CRUD
|
||||
can_create_brief_item = is_agency
|
||||
can_read_brief_item = _has_readable_brief
|
||||
can_update_brief_item = always_deny
|
||||
can_delete_brief_item = _has_editable_brief
|
||||
Reference in new issue
Block a user