#! /usr/bin/env python import subprocess import sys from lxml import etree from lxml.html import HTMLParser from urlparse import urljoin html_parser = HTMLParser(encoding='utf-8') # platform to synchronize should be specified in parameter if len(sys.argv) > 1: PLATFORM_BASE_URL = sys.argv[1] else: PLATFORM_BASE_URL = 'https://test.villeurbanne.fr/' HEAD_URL = urljoin(PLATFORM_BASE_URL, 'publik/get/head') HEADER_URL = urljoin(PLATFORM_BASE_URL, 'publik/get/header') FOOTER_URL = urljoin(PLATFORM_BASE_URL, 'publik/get/footer') BANNER_URL = urljoin(PLATFORM_BASE_URL, 'publik/get/banner') JS_URL = urljoin(PLATFORM_BASE_URL, 'build/publik/publik-app.js') HEAD_FILENAME = 'head.html' HEADER_FILENAME = 'header.html' FOOTER_FILENAME = 'footer.html' BANNER_FILENAME = 'banner.html' subprocess.call(['wget', '--quiet', '-O', HEAD_FILENAME, '--convert-links', HEAD_URL]) head_content = open(HEAD_FILENAME).read().strip() head_content = head_content.replace(HEAD_FILENAME, '') root = etree.fromstring(head_content, parser=html_parser) # remove external undesired elements elements = ['font-awesome'] for link in root.xpath('//link'): for element in elements: if element in link.attrib['href']: parent = link.getparent() parent.remove(link) external_js = '' % JS_URL head_content = etree.tostring(root, method='html') # remove closing because it will be closed later head_content = head_content.replace('', '') head_content = head_content.replace( '', external_js + ''' {% block head %}{% endblock %} {% block global_title %}{% endblock %} ''', ) subprocess.call(['wget', '--quiet', '-O', HEADER_FILENAME, '--convert-links', HEADER_URL]) header_content = open(HEADER_FILENAME).read().strip() header_content = header_content.replace(HEADER_FILENAME, '') root = etree.fromstring(header_content, parser=html_parser) for link in root.xpath('//li[@class="compte"]'): for child in link: link.remove(child) link.text = "{% block user-info %}{% endblock %}" header_content = etree.tostring(root, method='html') subprocess.call(['wget', '--quiet', '-O', BANNER_FILENAME, '--convert-links', BANNER_URL]) banner_content = open(BANNER_FILENAME).read().strip() banner_content = banner_content.replace(BANNER_FILENAME, '') publik_content = '''
{% block nav %}{% endblock %} {% block site-content %} {% block messages %} {% endblock %} {% endblock %}
''' subprocess.call(['wget', '--quiet', '-O', FOOTER_FILENAME, '--convert-links', FOOTER_URL]) footer_content = open(FOOTER_FILENAME).read().strip() footer_content = footer_content.replace(FOOTER_FILENAME, '') publik_footer = '''''' content = '\n'.join( [ head_content, '', header_content, banner_content, publik_content, publik_footer, footer_content, '{% block tracking %}{% endblock %}', '', '', ] ) open('base-theme.html', 'w').write(content)