diff --git a/src/organisation/constants.py b/src/organisation/constants.py index db46f43..8d956ca 100644 --- a/src/organisation/constants.py +++ b/src/organisation/constants.py @@ -37,6 +37,10 @@ class Status(StrEnum): def is_pre_submission(self): return self in (self.PARTIAL, self.REMEDIATION) + @property + def is_blocked(self): + return self in (self.REMOVED, self.REJECTED) + class ContactType(StrEnum): """ diff --git a/src/organisation/dependencies.py b/src/organisation/dependencies.py index 67150e5..20c50a8 100644 --- a/src/organisation/dependencies.py +++ b/src/organisation/dependencies.py @@ -12,6 +12,7 @@ from sqlalchemy.orm import Session from fastapi import Depends, Query, Request from src.database import db_dependency +from src.exceptions import ForbiddenException from src.organisation.schemas import OrgIDMixin from src.organisation.models import Organisation as Org @@ -24,6 +25,10 @@ def get_org_model(db: Session, request: Request, org_id: int): if org_model is None: raise OrgNotFoundException(org_id) + org_status = OrgStatus(org_model.status) + if org_status.is_blocked: + raise ForbiddenException("This organisation cannot perform this action.") + root = "/api/v1" pre_approval_endpoints = [