def testSignal(self): global archive_counter, restore_counter archive_counter = 0 restore_counter = 0 def count_archive(**kwargs): global archive_counter archive_counter += 1 def count_unarchive(**kwargs): global restore_counter restore_counter += 1 xform_archived.connect(count_archive) xform_unarchived.connect(count_unarchive) xml_data = self.get_xml('basic') result = submit_form_locally( xml_data, 'test-domain', ) self.assertEqual(0, archive_counter) self.assertEqual(0, restore_counter) result.xform.archive() self.assertEqual(1, archive_counter) self.assertEqual(0, restore_counter) xform = self.formdb.get_form(result.xform.form_id) xform.unarchive() self.assertEqual(1, archive_counter) self.assertEqual(1, restore_counter)
def testSignal(self): global archive_counter, restore_counter archive_counter = 0 restore_counter = 0 def count_archive(**kwargs): global archive_counter archive_counter += 1 def count_unarchive(**kwargs): global restore_counter restore_counter += 1 xform_archived.connect(count_archive) xform_unarchived.connect(count_unarchive) form = XFormInstance(form={'foo': 'bar'}) form.save() self.assertEqual(0, archive_counter) self.assertEqual(0, restore_counter) form.archive() self.assertEqual(1, archive_counter) self.assertEqual(0, restore_counter) form.unarchive() self.assertEqual(1, archive_counter) self.assertEqual(1, restore_counter)
def testSignal(self): global archive_counter, restore_counter archive_counter = 0 restore_counter = 0 def count_archive(**kwargs): global archive_counter archive_counter += 1 def count_unarchive(**kwargs): global restore_counter restore_counter += 1 xform_archived.connect(count_archive) xform_unarchived.connect(count_unarchive) xml_data = self.get_xml('basic') response, xform, cases = self.interface.submit_form_locally( xml_data, 'test-domain', ) self.assertEqual(0, archive_counter) self.assertEqual(0, restore_counter) xform.archive() self.assertEqual(1, archive_counter) self.assertEqual(0, restore_counter) xform.unarchive() self.assertEqual(1, archive_counter) self.assertEqual(1, restore_counter)
def testSignal(self): global archive_counter, restore_counter archive_counter = 0 restore_counter = 0 def count_archive(**kwargs): global archive_counter archive_counter += 1 def count_unarchive(**kwargs): global restore_counter restore_counter += 1 xform_archived.connect(count_archive) xform_unarchived.connect(count_unarchive) xform = FormProcessorInterface.create_from_generic( GenericXFormInstance(form={'foo': 'bar'}), GenericFormAttachment(name='form.xml', content='<data/>') ) self.assertEqual(0, archive_counter) self.assertEqual(0, restore_counter) FormProcessorInterface.archive_xform(xform) self.assertEqual(1, archive_counter) self.assertEqual(0, restore_counter) FormProcessorInterface.unarchive_xform(xform) self.assertEqual(1, archive_counter) self.assertEqual(1, restore_counter)
from casexml.apps.stock.models import StockTransaction from corehq.form_processor.models import FormArchiveRebuild from couchforms.signals import xform_archived, xform_unarchived def rebuild_form_cases(sender, xform, *args, **kwargs): from casexml.apps.case.xform import get_case_ids_from_form from casexml.apps.case.cleanup import rebuild_case_from_forms from corehq.form_processor.parsers.ledgers.form import get_case_ids_from_stock_transactions domain = xform.domain case_ids = get_case_ids_from_form( xform) | get_case_ids_from_stock_transactions(xform) detail = FormArchiveRebuild(form_id=xform.form_id, archived=xform.is_archived) for case_id in case_ids: rebuild_case_from_forms(domain, case_id, detail) xform_archived.connect(rebuild_form_cases) xform_unarchived.connect(rebuild_form_cases) # any time a case is saved case_post_save = Signal(providing_args=["case"]) # only when one or more cases are updated as the result of an xform submission # the contract of this signal is that you should modify the form and cases in # place but NOT save them. this is so that we can avoid multiple redundant writes # to the database in a row. we may want to revisit this if it creates problems. cases_received = Signal(providing_args=["xform", "cases"])
process_cases(xform, config) @log_exception() def _process_cases(sender, xform, config=None, **kwargs): from casexml.apps.case import process_cases process_cases(xform, config) successful_form_received.connect(_process_cases) def rebuild_form_cases(sender, xform, *args, **kwargs): from casexml.apps.case.xform import get_case_ids_from_form from casexml.apps.case.cleanup import rebuild_case for case_id in get_case_ids_from_form(xform): rebuild_case(case_id) xform_archived.connect(rebuild_form_cases) xform_unarchived.connect(rebuild_form_cases) # any time a case is saved case_post_save = Signal(providing_args=["case"]) # only when one or more cases are updated as the result of an xform submission # the contract of this signal is that you should modify the form and cases in # place but NOT save them. this is so that we can avoid multiple redundant writes # to the database in a row. we may want to revisit this if it creates problems. cases_received = Signal(providing_args=["xform", "cases"])