from pathlib import Path from django.core.management.base import BaseCommand, no_translations from webproj.thumbnailer.models import ErrorLog, Job, Log, PerformanceLog, ToJsonableMixin from django.core.serializers.json import DjangoJSONEncoder class Command(BaseCommand): def add_arguments(self, parser): return def handle(self, *args, **options): # print(sorted(dir(self.style))) self.stdout.write(self.style.HTTP_INFO( 'Reading table entries...')) jobs = list(map(ToJsonableMixin.to_jsonable_nested, Job.objects.order_by('taken_at').all())) err_log = list(map(ToJsonableMixin.to_jsonable_nested, ErrorLog.objects.order_by('id').all())) perf_log = list(map(ToJsonableMixin.to_jsonable_nested, PerformanceLog.objects.order_by('id').all())) outdata = dict(jobs=jobs, logs=dict(error=err_log, performance=perf_log)) self.stdout.write(self.style.HTTP_INFO( 'Serializing to JSON...')) jsoned = DjangoJSONEncoder(indent=1).encode(outdata) self.stdout.write(self.style.HTTP_INFO( 'Saving file...')) Path('dumped.json').write_text(jsoned) self.stdout.write(self.style.SUCCESS('Saved into "dumped.json".'))