def get_infos_resource_types( self, form_json: dict, fhir_version: str, ) -> Tuple[List[CaseTriggerInfo], Dict[str, FHIRResourceType]]: form_question_values = get_form_question_values(form_json) case_blocks = extract_case_blocks(form_json) cases_by_id = _get_cases_by_id(self.domain, case_blocks) resource_types_by_case_type = _get_resource_types_by_case_type( self.domain, fhir_version, cases_by_id.values(), ) case_trigger_info_list = [] for case_block in case_blocks: try: case = cases_by_id[case_block['@case_id']] except KeyError: form_id = form_json[TAG_FORM][TAG_META]['instanceID'] raise CaseNotFound( f"Form {form_id!r} touches case {case_block['@case_id']!r} " "but that case is not found." )
def get_first_claims(domain, user_id, case_ids): """ Returns the first claim by user_id of case_ids, or None """ case_ids_found = CommCareCase.objects.get_case_ids_that_exist( domain, case_ids) cases_not_found = [case for case in case_ids if case not in case_ids_found] if len(cases_not_found) != 0: raise CaseNotFound(", ".join(cases_not_found)) potential_claim_cases = CommCareCase.objects.get_reverse_indexed_cases( domain, case_ids_found, case_types=[CLAIM_CASE_TYPE], is_closed=False) def _get_host_case_id(case): """The actual index identifier is irrelevant so return the referenced case ID from the first live extension index""" for index in case.live_indices: if index.relationship == CASE_INDEX_EXTENSION: return index.referenced_id previously_claimed_ids = { _get_host_case_id(case) for case in potential_claim_cases if case.owner_id == user_id }
def _get_case_update(request, domain, update_model): try: request_json = json.loads(request.body) except ValueError: raise ApiError(msg="Malformed JSON", status_code=400) try: update = update_model.wrap(request_json) except BadValueError as e: raise ApiError(msg=e.message, status_code=400) try: case = get_case(domain, update.case_id) if case.type != update.case_type: raise CaseNotFound()
def _handle_individual_get(request, case_id): try: case = CaseAccessors(request.domain).get_case(case_id) if case.domain != request.domain: raise CaseNotFound()
def _handle_individual_get(request, case_id): try: case = CommCareCase.objects.get_case(case_id, request.domain) if case.domain != request.domain: raise CaseNotFound()
def get(cls, id, **kwargs): try: return super(CommCareCase, cls).get(id, **kwargs) except ResourceNotFound: raise CaseNotFound(id)