78 lines
2.7 KiB
Python
78 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.'))
|