khaganat-web/navbar/management/commands/navbar_export.py
2018-02-17 19:03:37 +01:00

77 lines
2.7 KiB
Python

from django.core.management.base import BaseCommand, CommandError
from django.template.loader import render_to_string
from django.conf import settings
from navbar.templatetags.navbar import get_base_context
import os
class Command(BaseCommand):
help = 'Generates the CSS files used by Pygments'
def export_static(self, curr_lang):
self.stdout.write('Plain HTML export for language %s' % curr_lang)
output_dir = os.path.join(self.export_dir, 'html')
output_file = 'khanav_%s.html' % curr_lang
os.makedirs(output_dir, mode=0o755, exist_ok=True)
with open(os.path.join(output_dir, output_file), 'w') as f:
ctx = get_base_context(curr_lang, '/')
html = render_to_string('navbar/navbar.html', ctx)
f.write(html)
def export_docuwiki(self, langs):
self.stdout.write(
'Docuwiki export for languages %s' % ', '.join(langs)
)
output_langs = []
for lang in langs:
ctx = get_base_context(lang, '/')
output_langs.append({
'name': lang,
'html': render_to_string('navbar/navbar.html', ctx)
})
output_dir = os.path.join(self.export_dir, 'docuwiki')
os.makedirs(output_dir, mode=0o755, exist_ok=True)
with open(os.path.join(output_dir, 'khanav.php'), 'w') as f:
f.write(render_to_string('navbar/export_docuwiki.html', {
'output_langs': output_langs
}))
def add_arguments(self, parser):
parser.add_argument(
'--dir', '-d',
help='Export directory.',
default=os.path.join(settings.BASE_DIR, 'build/navbar'),
dest='export_dir'
)
parser.add_argument(
'--lang', '-l',
help='Language to export.',
action='append',
dest='langs'
)
parser.add_argument(
'--plain', '--html',
help='Export for plain HTML.',
action='store_true',
dest='static'
)
parser.add_argument(
'--docuwiki',
help='Export for docuwiki.',
action='store_true',
dest='docuwiki'
)
def handle(self, *args, **options):
if options['langs'] is None:
raise CommandError('No language specified.')
if 'all' in options['langs']:
options['langs'] = [name for name, _ in settings.LANGUAGES]
self.export_dir = options['export_dir']
if options['static']:
for lang in options['langs']:
self.export_static(lang)
if options['docuwiki']:
self.export_docuwiki(options['langs'])
self.stdout.write(self.style.SUCCESS('Ok.'))