diff build_website.py @ 0:0a1d0ab5f518

Initial commit.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Thu, 07 Sep 2017 15:04:29 +0100
parents
children 0994ae3e4518
line wrap: on
line diff
new file mode 100755
--- /dev/null
+++ b/build_website.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+
+'''Supervision script for PyTouhou’s website.'''
+
+import sys
+from django.conf import settings
+
+AVAILABLE_LANGUAGES = ['de', 'en', 'es', 'fr', 'fi', 'it', 'pt']
+
+
+def make_messages():
+    '''Extract translatable strings from the template.'''
+
+    from django.core.management.commands import makemessages
+
+    command = makemessages.Command()
+    command.stdout = sys.stdout
+    #command.handle(verbosity=True, ignore_patterns=[], domain='django', exclude=[], extensions=['xhtml'], locale=AVAILABLE_LANGUAGES, keep_pot=True)
+    command.handle(locale=AVAILABLE_LANGUAGES, exclude=[], domain='django', verbosity=True, all=True, extensions=['xhtml'], symlinks=False, ignore_patterns=[], use_default_ignore_patterns=True, no_wrap=True, no_location=True, no_obsolete=True, keep_pot=True)
+
+
+def compile_messages():
+    '''For each locale we support, compile the po file into a mo.'''
+
+    from django.core.management.commands import compilemessages
+
+    command = compilemessages.Command()
+    command.verbosity = 1
+    command.stdout = sys.stdout
+    command.compile_messages(('locale/%s/LC_MESSAGES' % lang, 'django.po')
+                             for lang in AVAILABLE_LANGUAGES)
+
+
+def main():
+    '''Call everything in the correct order.'''
+
+    from subprocess import call
+
+    settings.configure()
+    make_messages()
+    compile_messages()
+
+    for language in AVAILABLE_LANGUAGES:
+        call([sys.argv[0], language])
+
+
+def generate_page(language):
+    '''Write a single page, and gzip it for lower network usage.'''
+
+    assert language in AVAILABLE_LANGUAGES
+
+    import django
+    from django.template import Template, Context
+    import gzip
+
+    settings.configure(LANGUAGE_CODE=language, LOCALE_PATHS=['locale'])
+
+    django.setup()
+
+    with open('index.tpl.xhtml') as template_file:
+        template = Template(template_file.read())
+
+    rendered = template.render(Context({'AVAILABLE_LANGUAGES':
+                                        AVAILABLE_LANGUAGES}))
+    filename = '../index.%s.xhtml' % language
+    with open(filename, 'w') as out:
+        out.write(rendered)
+    with gzip.open(filename + '.gz', 'w') as out:
+        out.write(rendered.encode('utf-8'))
+
+
+if __name__ == '__main__':
+    if len(sys.argv) == 1:
+        main()
+    else:
+        generate_page(sys.argv[1])