12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- from django.contrib.auth.models import User
- from django.core.management.base import BaseCommand
- import json
- from themes.models import GetSettings
- from themes.models import BottomBar
- from users.models import UserProfile
- from pygal.models import Item, Tag
-
- from ._private import KEY_THEME_SETTINGS
- from ._private import KEY_THEME_BOTTOMBAR
- from ._private import KEY_USER_PROFILE
- from ._private import KEY_USERDATA_FAVOURITE
- from ._private import KEY_USERDATA_TAGS
- from ._private import KEY_ACCESS_DATA
-
-
- class Command(BaseCommand):
- help = 'Export userdata in JSON-Format.'
-
- def handle(self, *args, **options):
- data = {}
- #
- # Access
- #
- if KEY_ACCESS_DATA not in data:
- data[KEY_ACCESS_DATA] = {}
- # public_access
- data[KEY_ACCESS_DATA][''] = [item.rel_path for item in Item.objects.filter(public_access=True)]
- # user_access
- for u in User.objects.all():
- data[KEY_ACCESS_DATA][u.username] = {}
- data[KEY_ACCESS_DATA][u.username]['read_access'] = [item.rel_path for item in u.read_access.all()]
- data[KEY_ACCESS_DATA][u.username]['modify_access'] = [item.rel_path for item in u.modify_access.all()]
- #
- # Favourites
- #
- if KEY_USERDATA_FAVOURITE not in data:
- data[KEY_USERDATA_FAVOURITE] = {}
- for user in User.objects.all():
- favourites = user.favourite_of.all()
- if len(favourites) > 0:
- data[KEY_USERDATA_FAVOURITE][user.username] = [i.rel_path for i in favourites]
- #
- # Tags
- #
- if KEY_USERDATA_TAGS not in data:
- data[KEY_USERDATA_TAGS] = {}
- for tag in Tag.objects.all():
- tag_key = tag.export_key()
- if tag_key not in data[KEY_USERDATA_TAGS]:
- data[KEY_USERDATA_TAGS][tag_key] = []
- data[KEY_USERDATA_TAGS][tag.export_key()].append(tag.export_data())
- #
- # Settings
- #
- s = GetSettings()
- data[KEY_THEME_SETTINGS] = s.export_data()
- #
- # Bottombar
- #
- if KEY_THEME_BOTTOMBAR not in data:
- data[KEY_THEME_BOTTOMBAR] = []
- for bb_entry in BottomBar.objects.all():
- data[KEY_THEME_BOTTOMBAR].append(bb_entry.export_data())
- #
- # Userprofile
- #
- if KEY_USER_PROFILE not in data:
- data[KEY_USER_PROFILE] = {}
- for profile in UserProfile.objects.all():
- data[KEY_USER_PROFILE][profile.export_key()] = profile.export_data()
-
- self.stdout.write(json.dumps(data, indent=4, sort_keys=True))
|