Exemple #1
0
    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)
Exemple #3
0
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())
Exemple #4
0
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])
Exemple #5
0
            _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]