29 lines
1.2 KiB
Python
29 lines
1.2 KiB
Python
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".'))
|