rachana-data-studio / data_studio /contributors.py
KPrashanth's picture
Deploy Rachana Data Studio
14954f2 verified
Raw
History Blame Contribute Delete
1.19 kB
from __future__ import annotations
from datetime import date
from typing import Any
TEMPORARY_CONTRIBUTOR_PERMISSIONS = frozenset({"review"})
def contributor_access_status(
active_review_dates: list[date],
calibration_review_count: int,
calibration_passed: bool,
maximum_active_days: int = 7,
required_calibration_reviews: int = 100,
) -> dict[str, Any]:
used_days = len(set(active_review_dates))
independent_review_allowed = (
calibration_passed
and calibration_review_count >= required_calibration_reviews
and used_days < maximum_active_days
)
return {
"active_days_used": used_days,
"active_days_remaining": max(0, maximum_active_days - used_days),
"calibration_complete": calibration_passed and calibration_review_count >= required_calibration_reviews,
"independent_review_allowed": independent_review_allowed,
"permissions": sorted(TEMPORARY_CONTRIBUTOR_PERMISSIONS),
}
def assert_contributor_action_allowed(action: str) -> None:
if action not in TEMPORARY_CONTRIBUTOR_PERMISSIONS:
raise PermissionError(f"Temporary contributors cannot perform action: {action}")