def get_case_statuses(read_only): """ Get a list of the case statuses that are read-only. """ if read_only: return CaseStatusEnum.read_only_statuses() else: return [ status for status, value in CaseStatusEnum.choices if not CaseStatusEnum.is_read_only(status) ]
def can_status_be_set_by_exporter_user(original_status: str, new_status: str) -> bool: """ Check that a status can be set by an exporter user. Exporter users cannot withdraw an application that is already in a terminal state and they cannot set an application to `Applicant editing` if the application is read only. """ if new_status == CaseStatusEnum.WITHDRAWN: if CaseStatusEnum.is_terminal(original_status): return False elif new_status == CaseStatusEnum.SURRENDERED: if original_status != CaseStatusEnum.FINALISED: return False elif CaseStatusEnum.is_read_only( original_status) or new_status != CaseStatusEnum.APPLICANT_EDITING: return False return True
def is_editable(self): return not CaseStatusEnum.is_read_only(self.status.status)