38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
from django.core.management.base import BaseCommand
|
|
from cmsplugin_cascade.icon.utils import zipfile, unzip_archive
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Iterates over all files in Filer and creates an IconFont for all eligibles."
|
|
|
|
def handle(self, verbosity, *args, **options):
|
|
self.verbosity = verbosity
|
|
self.assign_files_to_iconfonts()
|
|
|
|
def assign_files_to_iconfonts(self):
|
|
from filer.models.filemodels import File
|
|
from cmsplugin_cascade.models import IconFont
|
|
|
|
for file in File.objects.all():
|
|
if file.label != 'Font Awesome':
|
|
continue
|
|
if self.verbosity >= 2:
|
|
self.stdout.write(
|
|
"Creating Icon Font from: {}".format(file.label))
|
|
try:
|
|
zip_ref = zipfile.ZipFile(file.file, 'r')
|
|
except zipfile.BadZipFile as exc:
|
|
self.stderr.write(
|
|
"Unable to unpack {}: {}".format(file.label, exc))
|
|
else:
|
|
if not IconFont.objects.filter(zip_file=file).exists():
|
|
font_folder, config_data = unzip_archive(
|
|
file.label, zip_ref)
|
|
IconFont.objects.create(
|
|
identifier=config_data['name'],
|
|
config_data=config_data,
|
|
zip_file=file,
|
|
font_folder=font_folder,
|
|
)
|
|
zip_ref.close()
|