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__), )
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) )
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):