def handle(self, domain, **options): NotAllowed.check(domain) if not options['noinput']: confirm = input( """ Are you sure you want to hard delete all forms and cases in domain "{}"? This operation is PERMANENT. Type the domain's name again to continue, or anything else to cancel: """.format(domain) ) if confirm != domain: print("\n\t\tDomain deletion cancelled.") return logger.info('Hard deleting forms...') deleted_sql_form_ids = FormAccessorSQL.get_deleted_form_ids_in_domain(domain) for form_id_chunk in chunked(with_progress_bar(deleted_sql_form_ids, stream=silence_during_tests()), 500): FormAccessorSQL.hard_delete_forms(domain, list(form_id_chunk), delete_attachments=True) logger.info('Hard deleting cases...') deleted_sql_case_ids = CaseAccessorSQL.get_deleted_case_ids_in_domain(domain) for case_id_chunk in chunked(with_progress_bar(deleted_sql_case_ids, stream=silence_during_tests()), 500): CaseAccessorSQL.hard_delete_cases(domain, list(case_id_chunk)) logger.info('Done.')
def _delete_all_cases(domain_name): logger.info('Deleting cases...') case_accessor = CaseAccessors(domain_name) case_ids = case_accessor.get_case_ids_in_domain() for case_id_chunk in chunked(with_progress_bar(case_ids, stream=silence_during_tests()), 500): case_accessor.soft_delete_cases(list(case_id_chunk)) logger.info('Deleting cases complete.')
def _delete_all_forms(domain_name): logger.info('Deleting forms...') form_accessor = FormAccessors(domain_name) form_ids = form_accessor.get_all_form_ids_in_domain() for form_id_chunk in chunked( with_progress_bar(form_ids, stream=silence_during_tests()), 500): form_accessor.soft_delete_forms(list(form_id_chunk)) logger.info('Deleting forms complete.')
def _delete_all_cases(domain_name): logger.info('Deleting cases...') case_ids = CommCareCase.objects.get_case_ids_in_domain(domain_name) for case_id_chunk in chunked( with_progress_bar(case_ids, stream=silence_during_tests()), 500): CommCareCase.objects.soft_delete_cases(domain_name, list(case_id_chunk)) logger.info('Deleting cases complete.')
def _delete_all_forms(domain_name): logger.info('Deleting forms...') form_accessor = FormAccessors(domain_name) form_ids = list(itertools.chain(*[ form_accessor.get_all_form_ids_in_domain(doc_type=doc_type) for doc_type in doc_type_to_state ])) for form_id_chunk in chunked(with_progress_bar(form_ids, stream=silence_during_tests()), 500): form_accessor.soft_delete_forms(list(form_id_chunk)) logger.info('Deleting forms complete.')
def _delete_all_forms(domain_name): logger.info('Deleting forms...') form_ids = list( itertools.chain(*[ XFormInstance.objects.get_form_ids_in_domain( domain_name, doc_type) for doc_type in doc_type_to_state ])) for form_id_chunk in chunked( with_progress_bar(form_ids, stream=silence_during_tests()), 500): XFormInstance.objects.soft_delete_forms(domain_name, list(form_id_chunk)) logger.info('Deleting forms complete.')
def iter_ids(model_class, field, domain, chunk_size=1000): where = Q(domain=domain) rows = paginate_query_across_partitioned_databases( model_class, where, values=[field], load_source='delete_domain', query_size=chunk_size, ) yield from with_progress_bar( (r[0] for r in rows), estimate_partitioned_row_count(model_class, where), prefix="", oneline="concise", stream=silence_during_tests(), )