26 lignes
1.2 KiB
Python
26 lignes
1.2 KiB
Python
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))))
|