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)
def _remove_ledger_transactions(self): with open("ledger_transactions_removed_case_ids.txt", "w+b") as case_ids_log: forms_iterated = 0 for xform in with_progress_bar(self.forms): forms_iterated += 1 if forms_iterated % 100 == 0: print("traversed %s forms" % forms_iterated) ledger_case_ids = get_case_ids_from_stock_transactions(xform) if ledger_case_ids: ledger_case_ids = list(ledger_case_ids) for ledger_case_id in ledger_case_ids: case_ids_log.write("%s\n" % ledger_case_id) LedgerAccessorSQL.delete_ledger_transactions_for_form(ledger_case_ids, xform.form_id)
def get_case_ids_from_form(xform): from corehq.form_processor.parsers.ledgers.form import get_case_ids_from_stock_transactions case_ids = set(cu.id for cu in get_case_updates(xform)) if xform: case_ids.update(get_case_ids_from_stock_transactions(xform)) return case_ids
def get_cases_from_form(domain, form): from corehq.form_processor.parsers.ledgers.form import get_case_ids_from_stock_transactions case_ids = get_case_ids_from_form( form) | get_case_ids_from_stock_transactions(form) return CaseAccessors(domain).get_cases(list(case_ids))
def get_case_ids_from_form(xform): from corehq.form_processor.parsers.ledgers.form import get_case_ids_from_stock_transactions case_ids = set(case_id_from_block(b) for b in extract_case_blocks(xform)) if xform: case_ids.update(get_case_ids_from_stock_transactions(xform)) return case_ids
def _get_cases_from_form(domain, form): from corehq.form_processor.parsers.ledgers.form import get_case_ids_from_stock_transactions case_ids = get_case_ids_from_form(form) | get_case_ids_from_stock_transactions(form) return CaseAccessors(domain).get_cases(list(case_ids))