def _find_case_ids_with_invalid_phone_number(self): case_ids_with_invalid_phone_number = [] start_date = date.today() - timedelta(days=100) reindex_accessor = CaseReindexAccessor( domain=DOMAIN, case_type='person', limit_db_aliases=[self.db_alias], start_date=start_date) filename = 'invalid_phone_numbers_with_91_part_%s_%s.csv' % ( self.db_alias, datetime.utcnow()) with open(filename, 'w') as output: cases_iterated = 0 writer = csv.writer(output) writer.writerow(CSV_HEADERS) if self.log_progress: self.stdout.write('iterating now') for case in iter_all_rows(reindex_accessor): if self.log_progress and cases_iterated % CASE_ITERATION_COUNT == 0: self.stdout.write("cases iterated: %s" % cases_iterated) cases_iterated += 1 if self._case_needs_to_be_updated(case): case_ids_with_invalid_phone_number.append(case.case_id) writer.writerow([case.case_id])
def _find_case_ids_without_mother_name(self): start_date = date.today() - timedelta(days=100) reindex_accessor = CaseReindexAccessor( domain=DOMAIN, case_type=CASE_TYPE, limit_db_aliases=[self.db_alias], start_date=start_date) filename = 'cases_without_mother_name_part_%s_%s.csv' % ( self.db_alias, datetime.utcnow()) cases_with_no_mother_name_filename = 'cases_with_no_mother_name_part_%s_%s.csv' % ( self.db_alias, datetime.utcnow()) with open(filename, 'w') as output: with open(cases_with_no_mother_name_filename, 'w') as no_mother_name_file: cases_iterated = 0 writer = csv.writer(output) writer.writerow(CSV_HEADERS) no_mother_name_writer = csv.writer(no_mother_name_file) no_mother_name_writer.writerow(['Case ID']) if self.log_progress: print('iterating now') for case in iter_all_rows(reindex_accessor): if self.log_progress and cases_iterated % CASE_ITERATION_COUNT == 0: print("cases iterated: %s" % cases_iterated) cases_iterated += 1 if self._case_needs_to_be_updated(case): mother_case_id, mother_name = self._find_mother_case_id_and_name( case) if mother_case_id and mother_name: writer.writerow( [case.case_id, mother_case_id, mother_name]) else: no_mother_name_writer.writerow([case.case_id])
def delete_all_v2_ledgers(domain=None): logger.debug("Deleting all V2 ledgers for domain %s", domain) def _delete_ledgers_for_case(case_id): transactions = LedgerAccessorSQL.get_ledger_transactions_for_case(case_id) form_ids = {tx.form_id for tx in transactions} for form_id in form_ids: LedgerAccessorSQL.delete_ledger_transactions_for_form([case_id], form_id) LedgerAccessorSQL.delete_ledger_values(case_id) if not domain: for ledger in iter_all_rows(LedgerReindexAccessor()): _delete_ledgers_for_case(ledger.case_id) else: for case_id in CaseAccessorSQL.get_case_ids_in_domain(domain): _delete_ledgers_for_case(case_id)
def delete_all_v2_ledgers(domain=None): logger.debug("Deleting all V2 ledgers for domain %s", domain) def _delete_ledgers_for_case(case_id): transactions = LedgerAccessorSQL.get_ledger_transactions_for_case(case_id) form_ids = {tx.form_id for tx in transactions} for form_id in form_ids: LedgerAccessorSQL.delete_ledger_transactions_for_form([case_id], form_id) LedgerAccessorSQL.delete_ledger_values(case_id) if not domain: for ledger in iter_all_rows(LedgerReindexAccessor()): _delete_ledgers_for_case(ledger.case_id) else: for case_id in CaseAccessorSQL.get_case_ids_in_domain(domain): _delete_ledgers_for_case(case_id)
def sync_cases(self, domain): db_aliases = get_db_aliases_for_partitioned_query() db_aliases.sort() if should_use_sql_backend(domain): case_accessor = CaseReindexAccessor(domain) case_ids = (case.case_id for case in iter_all_rows(case_accessor)) else: changes = _get_case_iterator(domain).iter_all_changes() case_ids = (case.id for case in changes) next_event = time.time() + 10 for i, case_id in enumerate(case_ids): sync_case_for_messaging.delay(domain, case_id) if time.time() > next_event: print("Queued %d cases for domain %s" % (i + 1, domain)) next_event = time.time() + 10
def sync_cases(self, domain): db_aliases = get_db_aliases_for_partitioned_query() db_aliases.sort() if should_use_sql_backend(domain): case_accessor = CaseReindexAccessor(domain) case_ids = (case.case_id for case in iter_all_rows(case_accessor)) else: changes = _iter_changes(domain, CASE_DOC_TYPES) case_ids = (case.id for case in changes) next_event = time.time() + 10 for i, case_id in enumerate(case_ids): sync_case_for_messaging.delay(domain, case_id) if time.time() > next_event: print("Queued %d cases for domain %s" % (i + 1, domain)) next_event = time.time() + 10
def iter_all_changes(self, start_from=None): accessor = CaseReindexAccessor(self.domain, limit_db_aliases=self.limit_db_aliases) for case in iter_all_rows(accessor): yield _sql_case_to_change(case)
def iter_all_changes(self, start_from=None): accessor = CaseReindexAccessor(self.domain, limit_db_aliases=self.limit_db_aliases) for case in iter_all_rows(accessor): yield _sql_case_to_change(case)