reddit-image-wall-getter/hash_thumbnailer_distributed/webproj/thumbnailer/management/commands/dumpresults.py

29 lines
1.2 KiB
Python
Raw Normal View History

2020-07-20 01:54:26 +00:00
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".'))