12345678910111213141516171819202122232425 |
- from django.conf import settings
- from django.core.management.base import BaseCommand
- import fstools
- import pygal
- from pygal.models import Item, TYPE_FOLDER, get_item_by_rel_path
-
-
- class Command(BaseCommand):
- def handle(self, *args, **options):
- # rebuild existing non folder items
- #
- for item in Item.objects.all().exclude(type=TYPE_FOLDER):
- item.__set_model_fields_from_file__()
- item.save()
- # rebuild folder items based on file system structure (not existing items will be created)
- folder_list = fstools.dirlist(settings.ITEM_ROOT, rekursive=True)
- folder_list.append(settings.ITEM_ROOT)
- folder_list.sort(reverse=True)
- for full_path in folder_list:
- item = get_item_by_rel_path(pygal.get_rel_path(full_path))
- if item is not None:
- item.__set_model_fields_from_file__()
- item.save()
- self.stdout.write(self.style.SUCCESS('Updated cached data of %d items.' % len(Item.objects.all().exclude(type=TYPE_FOLDER))))
- self.stdout.write(self.style.SUCCESS('Updated cached data of %d folders.' % len(Item.objects.filter(type=TYPE_FOLDER))))
|