Beispiel #1
0
    def handle(self, domain, **options):
        db = ExportInstance.get_db()
        exports = db.view(
            'export_instances_by_domain/view',
            startkey=[domain],
            endkey=[domain, {}],
            include_docs=False,
            reduce=False,
        ).all()
        if not exports:
            print("No exports to delete here, exiting.")
            return

        filter_exports = lambda _type: [row for row in exports if _type in row['key']]
        form_exports = filter_exports('FormExportInstance')
        case_exports = filter_exports('CaseExportInstance')

        confirm = input(
            "There are {f_count} form exports, and {c_count} case exports. "
            "Are you sure you want to delete all these exports [y/N]?\n".format(
                f_count=len(form_exports),
                c_count=len(case_exports)
            )
        )
        to_delete = []
        if confirm.lower() == 'y':
            _type = input(
                "Enter 'case' to delete all case exports, "
                "'form to delete all form exports, "
                "'all' to delete both form and case exports. "
                "Entery anything else to exit.\n"
            )
            if _type == 'form':
                to_delete = form_exports
                print("Deleting form exports")
            elif _type == 'case':
                to_delete = case_exports
                print("Deleting case exports")
            elif _type == 'all':
                to_delete = form_exports + case_exports
                print("Deleting all exports")
            else:
                print("Not deleting anything, exiting!")
                return
            total_count = iter_bulk_delete(db, [doc['id'] for doc in to_delete])
            print("Deleted total of {} exports succesfully!".format(total_count))
Beispiel #2
0
    def handle(self, domain, **options):
        db = ExportInstance.get_db()
        exports = db.view(
            'export_instances_by_domain/view',
            startkey=[domain],
            endkey=[domain, {}],
            include_docs=False,
            reduce=False,
        ).all()
        if not exports:
            print("No exports to delete here, exiting.")
            return

        if options['days_inactive'] > 0:
            import datetime
            inactive_since = datetime.datetime.today() - datetime.timedelta(days=int(options['days_inactive']))
            inactive_exports = []
            for export in exports:
                e = ExportInstance.get(export['id'])
                if e.last_accessed and e.last_accessed <= inactive_since:
                    inactive_exports.append(export)
            if not inactive_exports:
                print("No exports have been inactive for more than {days_inactive} days, exiting.".format(
                    days_inactive=options['days_inactive'])
                )
                return
            confirm = input(
                "There are {total_exports} exports in {domain}. Are you sure you want to delete "
                "{total_inactive_exports} that are older than {days_inactive} days [y/N]?".format(
                    total_exports=len(exports),
                    total_inactive_exports=len(inactive_exports),
                    domain=domain,
                    days_inactive=int(options['days_inactive'])
                )
            )
            if confirm.lower() == 'y':
                exports = inactive_exports
            else:
                return

        filter_exports = lambda _type: [row for row in exports if _type in row['key']]
        form_exports = filter_exports('FormExportInstance')
        case_exports = filter_exports('CaseExportInstance')

        confirm = input(
            "There are {f_count} form exports, and {c_count} case exports. "
            "Are you sure you want to delete all these exports [y/N]?\n".format(
                f_count=len(form_exports),
                c_count=len(case_exports)
            )
        )
        to_delete = []
        if confirm.lower() == 'y':
            _type = input(
                "Enter 'case' to delete all case exports, "
                "'form to delete all form exports, "
                "'all' to delete both form and case exports. "
                "Enter anything else to exit.\n"
            )
            if _type == 'form':
                to_delete = form_exports
                print("Deleting form exports")
            elif _type == 'case':
                to_delete = case_exports
                print("Deleting case exports")
            elif _type == 'all':
                to_delete = form_exports + case_exports
                print("Deleting all exports")
            else:
                print("Not deleting anything, exiting!")
                return
            total_count = iter_bulk_delete(db, [doc['id'] for doc in to_delete])
            print("Deleted total of {} exports succesfully!".format(total_count))