Пример #1
0
    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.')
Пример #2
0
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.')
Пример #3
0
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.')
Пример #4
0
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.')
Пример #5
0
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.')
Пример #6
0
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.')
Пример #7
0
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.')
Пример #8
0
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.')
Пример #9
0
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(),
    )