pygal/management/commands/export_userdata.py

38 righe
1.5 KiB
Python

from django.contrib.auth.models import User
from django.core.management.base import BaseCommand
import json
from pygal.models import Tag
from ._private import KEY_USERDATA_VERSION
from ._private import KEY_USERDATA_FAVOURITE
from ._private import KEY_USERDATA_TAGS
class Command(BaseCommand):
help = 'Export userdata in JSON-Format.'
def handle(self, *args, **options):
data = {}
data[KEY_USERDATA_VERSION] = 1
for user in User.objects.all():
favourites = user.favourite_of.all()
if len(favourites) > 0:
if KEY_USERDATA_FAVOURITE not in data:
data[KEY_USERDATA_FAVOURITE] = {}
data[KEY_USERDATA_FAVOURITE][user.username] = [i.rel_path for i in favourites]
for tag in Tag.objects.all():
if KEY_USERDATA_TAGS not in data:
data[KEY_USERDATA_TAGS] = {}
if tag.item.rel_path not in data[KEY_USERDATA_TAGS]:
data[KEY_USERDATA_TAGS][tag.item.rel_path] = []
tagdata = {}
tagdata['text'] = tag.text
if tag.has_valid_coordinates:
tagdata['topleft_x'] = tag.topleft_x
tagdata['topleft_y'] = tag.topleft_y
tagdata['bottomright_x'] = tag.bottomright_x
tagdata['bottomright_y'] = tag.bottomright_y
data[KEY_USERDATA_TAGS][tag.item.rel_path].append(tagdata)
self.stdout.write(json.dumps(data, indent=4, sort_keys=True))