Example #1
0
def case_changed(self, domain, case_id):
    try:
        handler_ids = CaseReminderHandler.get_handler_ids(domain, reminder_type_filter=REMINDER_TYPE_DEFAULT)
        if handler_ids:
            _case_changed(case_id, handler_ids)
    except Exception as e:
        self.retry(exc=e)
Example #2
0
def case_changed(self, domain, case_id):
    try:
        handler_ids = CaseReminderHandler.get_handler_ids(
            domain, reminder_type_filter=REMINDER_TYPE_DEFAULT)
        if handler_ids:
            _case_changed(domain, case_id, handler_ids)
    except Exception as e:
        self.retry(exc=e)
Example #3
0
def delete_reminders_for_cases(domain, case_ids):
    handler_ids = CaseReminderHandler.get_handler_ids(
        domain, reminder_type_filter=REMINDER_TYPE_DEFAULT)
    for ids in chunked(case_ids, 50):
        keys = [[domain, handler_id, case_id] for handler_id in handler_ids
                for case_id in ids]
        results = CaseReminder.get_db().view(
            'reminders/by_domain_handler_case', keys=keys, include_docs=True)
        soft_delete_docs([row['doc'] for row in results], CaseReminder)
Example #4
0
def case_changed_receiver(sender, case, **kwargs):
    try:
        handler_ids = CaseReminderHandler.get_handler_ids(case.domain,
            reminder_type_filter=REMINDER_TYPE_DEFAULT)
        if len(handler_ids) > 0:
            case_changed.delay(case._id, handler_ids)
    except Exception:
        notify_exception(None,
            message="Error in reminders case changed receiver for case %s" %
            case._id)
Example #5
0
def delete_reminders_for_cases(domain, case_ids):
    handler_ids = CaseReminderHandler.get_handler_ids(
        domain, reminder_type_filter=REMINDER_TYPE_DEFAULT)
    for ids in chunked(case_ids, 50):
        keys = [[domain, handler_id, case_id]
                for handler_id in handler_ids
                for case_id in ids]
        results = CaseReminder.get_db().view(
            'reminders/by_domain_handler_case',
            keys=keys,
            include_docs=True
        )
        soft_delete_docs([row['doc'] for row in results], CaseReminder)
Example #6
0
    def test_cache(self, check_state_mock):
        domain = 'reminder-cache-test'

        # Nothing expected at first
        self.assertEqual(CaseReminderHandler.get_handler_ids(domain), [])

        # Create two reminder definitions of different types
        handler1 = CaseReminderHandler(
            domain=domain,
            reminder_type=REMINDER_TYPE_DEFAULT,
        )
        handler1.save()
        self.addCleanup(handler1.delete)

        handler2 = CaseReminderHandler(
            domain=domain,
            reminder_type=REMINDER_TYPE_ONE_TIME,
        )
        handler2.save()
        self.addCleanup(handler2.delete)

        self.assertEqual(
            CaseReminderHandler.get_handler_ids(
                domain, reminder_type_filter=REMINDER_TYPE_DEFAULT),
            [handler1._id])

        self.assertEqual(
            CaseReminderHandler.get_handler_ids(
                domain, reminder_type_filter=REMINDER_TYPE_ONE_TIME),
            [handler2._id])

        self.assertEqual(sorted(CaseReminderHandler.get_handler_ids(domain)),
                         sorted([handler1._id, handler2._id]))

        # Add another with default type
        handler3 = CaseReminderHandler(
            domain=domain,
            reminder_type=REMINDER_TYPE_DEFAULT,
        )
        handler3.save()
        self.addCleanup(handler3.delete)

        self.assertEqual(
            sorted(
                CaseReminderHandler.get_handler_ids(
                    domain, reminder_type_filter=REMINDER_TYPE_DEFAULT)),
            sorted([handler1._id, handler3._id]))

        self.assertEqual(
            CaseReminderHandler.get_handler_ids(
                domain, reminder_type_filter=REMINDER_TYPE_ONE_TIME),
            [handler2._id])

        self.assertEqual(sorted(CaseReminderHandler.get_handler_ids(domain)),
                         sorted([handler1._id, handler2._id, handler3._id]))

        # Retire the one-time reminder
        handler2.retire()

        self.assertEqual(
            sorted(
                CaseReminderHandler.get_handler_ids(
                    domain, reminder_type_filter=REMINDER_TYPE_DEFAULT)),
            sorted([handler1._id, handler3._id]))

        self.assertEqual(
            CaseReminderHandler.get_handler_ids(
                domain, reminder_type_filter=REMINDER_TYPE_ONE_TIME), [])

        self.assertEqual(sorted(CaseReminderHandler.get_handler_ids(domain)),
                         sorted([handler1._id, handler3._id]))
Example #7
0
    def test_cache(self, check_state_mock):
        domain = 'reminder-cache-test'

        # Nothing expected at first
        self.assertEqual(
            CaseReminderHandler.get_handler_ids(domain),
            []
        )

        # Create two reminder definitions of different types
        handler1 = CaseReminderHandler(
            domain=domain,
            reminder_type=REMINDER_TYPE_DEFAULT,
        )
        handler1.save()
        self.addCleanup(handler1.delete)

        handler2 = CaseReminderHandler(
            domain=domain,
            reminder_type=REMINDER_TYPE_ONE_TIME,
        )
        handler2.save()
        self.addCleanup(handler2.delete)

        self.assertEqual(
            CaseReminderHandler.get_handler_ids(domain, reminder_type_filter=REMINDER_TYPE_DEFAULT),
            [handler1._id]
        )

        self.assertEqual(
            CaseReminderHandler.get_handler_ids(domain, reminder_type_filter=REMINDER_TYPE_ONE_TIME),
            [handler2._id]
        )

        self.assertEqual(
            sorted(CaseReminderHandler.get_handler_ids(domain)),
            sorted([handler1._id, handler2._id])
        )

        # Add another with default type
        handler3 = CaseReminderHandler(
            domain=domain,
            reminder_type=REMINDER_TYPE_DEFAULT,
        )
        handler3.save()
        self.addCleanup(handler3.delete)

        self.assertEqual(
            sorted(CaseReminderHandler.get_handler_ids(domain, reminder_type_filter=REMINDER_TYPE_DEFAULT)),
            sorted([handler1._id, handler3._id])
        )

        self.assertEqual(
            CaseReminderHandler.get_handler_ids(domain, reminder_type_filter=REMINDER_TYPE_ONE_TIME),
            [handler2._id]
        )

        self.assertEqual(
            sorted(CaseReminderHandler.get_handler_ids(domain)),
            sorted([handler1._id, handler2._id, handler3._id])
        )

        # Retire the one-time reminder
        handler2.retire()

        self.assertEqual(
            sorted(CaseReminderHandler.get_handler_ids(domain, reminder_type_filter=REMINDER_TYPE_DEFAULT)),
            sorted([handler1._id, handler3._id])
        )

        self.assertEqual(
            CaseReminderHandler.get_handler_ids(domain, reminder_type_filter=REMINDER_TYPE_ONE_TIME),
            []
        )

        self.assertEqual(
            sorted(CaseReminderHandler.get_handler_ids(domain)),
            sorted([handler1._id, handler3._id])
        )