Example #1
0
    def update_cases(self):
        sector = get_sector(self._person_case)
        case_updates = []
        for prop, value in six.iteritems(self.request_json):
            try:
                param = self.api_spec.get_param(prop, sector)
            except KeyError:
                raise NinetyNineDotsException(
                    "{} is not a valid parameter to update".format(prop))

            if not param.direction & DIRECTION_INBOUND:
                raise NinetyNineDotsException(
                    "{} is not a valid parameter to update".format(prop))

            case_type = param.get_by_sector('case_type', sector)
            case_id = self.case_types_to_cases[case_type].case_id

            if param.setter:
                update = to_function(param.setter)(param, value, sector)
            else:
                update = {param.get_by_sector('case_property', sector): value}
            case_updates.append((case_id, update, False))

        return bulk_update_cases(
            self.domain,
            case_updates,
            "{}.{}".format(self.__module__, self.__class__.__name__),
        )
Example #2
0
 def _validate_choices(self):
     sector = get_sector(self._person_case)
     for param_name, value in six.iteritems(self.request_json):
         try:
             choices = self.api_spec.get_param(param_name, sector).get_by_sector('choices', sector)
         except KeyError:
             raise NinetyNineDotsException("{} is not a valid parameter to update".format(param_name))
         if choices and value not in choices:
             raise NinetyNineDotsException(
                 "{} is not a valid value for {}.".format(value, param_name)
             )
Example #3
0
            return False
        try:
            if case.type == CASE_TYPE_PERSON:
                person_case = case
                episode_case = get_open_episode_case_from_person(person_case.domain, person_case.case_id)
                registered_episode = episode_registered_with_99dots(episode_case)
            elif case.type == CASE_TYPE_EPISODE:
                episode_case = case
                registered_episode = (episode_registered_with_99dots(episode_case)
                                      and not case_properties_changed(episode_case, 'dots_99_registered'))
            else:
                return False
        except ENikshayCaseNotFound:
            return False

        sector = get_sector(episode_case)
        api_spec = load_api_spec()
        properties_to_check = api_spec.case_properties_by_case_type(sector, case.type, DIRECTION_OUTBOUND)
        props_changed = case_properties_changed(case, properties_to_check)

        return (
            registered_episode
            and props_changed
            and (
                (case.type == CASE_TYPE_EPISODE and is_valid_episode_submission(episode_case))
                or (case.type == CASE_TYPE_PERSON and is_valid_person_submission(person_case))
            )
        )


class NinetyNineDotsAdherenceRepeater(Base99DOTSRepeater):