예제 #1
0
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)
        ]
예제 #2
0
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
예제 #3
0
 def is_editable(self):
     return not CaseStatusEnum.is_read_only(self.status.status)