def test_delete_schedule_instances_for_cases(self): case_id_1 = uuid.uuid4().hex case_id_2 = uuid.uuid4().hex case_id_3 = uuid.uuid4().hex case_id_4 = uuid.uuid4().hex for domain, case_id in ( (self.domain, case_id_1), (self.domain, case_id_2), (self.domain, case_id_3), (self.domain_2, case_id_4), ): self.create_case_alert_schedule_instance(domain, case_id) self.create_case_timed_schedule_instance(domain, case_id) self.assertEqual( len(self.get_case_schedule_instances_for_domain(self.domain)), 6) self.assertEqual( len(self.get_case_schedule_instances_for_domain(self.domain_2)), 2) delete_schedule_instances_for_cases(self.domain, [case_id_1, case_id_2]) self.assertEqual( len(self.get_case_schedule_instances_for_domain(self.domain)), 2) self.assertEqual( len(self.get_case_schedule_instances_for_domain(self.domain_2)), 2) for instance in self.get_case_schedule_instances_for_domain( self.domain): self.assertEqual(instance.case_id, case_id_3)
def test_delete_schedule_instances_for_cases(self): case_id_1 = uuid.uuid4().hex case_id_2 = uuid.uuid4().hex case_id_3 = uuid.uuid4().hex case_id_4 = uuid.uuid4().hex for domain, case_id in ( (self.domain, case_id_1), (self.domain, case_id_2), (self.domain, case_id_3), (self.domain_2, case_id_4), ): self.create_case_alert_schedule_instance(domain, case_id) self.create_case_timed_schedule_instance(domain, case_id) self.assertEqual(len(self.get_case_schedule_instances_for_domain(self.domain)), 6) self.assertEqual(len(self.get_case_schedule_instances_for_domain(self.domain_2)), 2) delete_schedule_instances_for_cases(self.domain, [case_id_1, case_id_2]) self.assertEqual(len(self.get_case_schedule_instances_for_domain(self.domain)), 2) self.assertEqual(len(self.get_case_schedule_instances_for_domain(self.domain_2)), 2) for instance in self.get_case_schedule_instances_for_domain(self.domain): self.assertEqual(instance.case_id, case_id_3)
def _sync_case_for_messaging(domain, case_id): try: case = CaseAccessors(domain).get_case(case_id) sms_tasks.clear_case_caches(case) except CaseNotFound: case = None if case is None or case.is_deleted: sms_tasks.delete_phone_numbers_for_owners([case_id]) delete_schedule_instances_for_cases(domain, [case_id]) return if use_phone_entries(): sms_tasks._sync_case_phone_number(case) rules = AutomaticUpdateRule.by_domain_cached(case.domain, AutomaticUpdateRule.WORKFLOW_SCHEDULING) rules_by_case_type = AutomaticUpdateRule.organize_rules_by_case_type(rules) for rule in rules_by_case_type.get(case.type, []): rule.run_rule(case, utcnow())
def clear_messaging_for_case(domain, case_id): sms_tasks.delete_phone_numbers_for_owners([case_id]) delete_schedule_instances_for_cases(domain, [case_id])
_sync_case_for_messaging_rule(domain, case_id, rule_id) except Exception as e: self.retry(exc=e) def _sync_case_for_messaging(domain, case_id): try: case = CaseAccessors(domain).get_case(case_id) sms_tasks.clear_case_caches(case) except CaseNotFound: case = None case_load_counter("messaging_sync", domain)() if case is None or case.is_deleted: sms_tasks.delete_phone_numbers_for_owners([case_id]) delete_schedule_instances_for_cases(domain, [case_id]) return if use_phone_entries(): sms_tasks._sync_case_phone_number(case) rules = AutomaticUpdateRule.by_domain_cached(case.domain, AutomaticUpdateRule.WORKFLOW_SCHEDULING) rules_by_case_type = AutomaticUpdateRule.organize_rules_by_case_type(rules) for rule in rules_by_case_type.get(case.type, []): rule.run_rule(case, utcnow()) def _get_cached_rule(domain, rule_id): rules = AutomaticUpdateRule.by_domain_cached(domain, AutomaticUpdateRule.WORKFLOW_SCHEDULING) rules = [rule for rule in rules if rule.pk == rule_id]