38 lignes
1.5 KiB
Python
38 lignes
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))
|