def generate_templates(src_path, dst_path, locale): jinjaenv.init(src_path, locale) env = jinjaenv.get() for url in env.renderable_urls(): # Render rendered = env.render_path(url) if rendered is None: print "Warning: Could not find template for url", url continue # Save template_name = env.template_name(url) if os.path.splitext(template_name)[1] == '': template_name = os.path.join(template_name, "index.html") dst_file_path = os.path.join(dst_path, template_name) dst_dirname = os.path.dirname(dst_file_path) if not os.path.exists(dst_dirname): os.makedirs(dst_dirname) with open(dst_file_path, "w") as f: f.write(rendered) # Copy media files for folder in media.folders(): src_folder = os.path.join(src_path, folder) dst_folder = os.path.join(dst_path, folder) if os.path.exists(dst_folder): # TODO synchronize files intelligently shutil.rmtree(dst_folder) shutil.copytree(src_folder, dst_folder)
def serve(src_path, locale, address): jinjaenv.init(src_path, locale) HttpRequestHandler.ROOT_PATH = os.path.abspath(src_path) HttpRequestHandler.LOCALE = locale translate.compile_if_possible(src_path, locale) ip, port = address.split(":") server_address = (ip, int(port)) HttpRequestHandler.protocol_version = "HTTP/1.0" httpd = BaseHTTPServer.HTTPServer(server_address, HttpRequestHandler) sa = httpd.socket.getsockname() print "Serving HTTP on", "http://" + sa[0] + ":" + str(sa[1]), "..." httpd.serve_forever()