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)
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)
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)
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)
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)
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]))
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]) )