def _build_view(model_file_name, view_name, view_type, output_dir): ''' Builds the given view ''' import sys, os from murphy.model import Model from murphy import utils, graphviz #FIXME: this is needed in order to import the module, but may be better to #do it in the model object before importing? base_path = os.path.dirname(os.path.dirname(model_file_name)) base_path = os.path.abspath(os.path.dirname(base_path)) sys.path.append(base_path) model = Model(model_file_name) worker = model.new_worker() start_node = model.get_starting_node(view_name) dot = worker.graphs.generate_from_spider(start_node, {}) temp_file = '%s/temp.dot' % output_dir target_file = '%s/flow.xml' % output_dir #FIXME: do silent_remove with proper exception handling... if os.path.isfile(temp_file): os.remove(temp_file) if os.path.isfile(target_file): os.remove(target_file) utils.save_file(dot, temp_file) graphviz.generate_svg(temp_file) os.rename('%s.svg' % temp_file, target_file) #os.remove(temp_file) #svg_content = utils.load_text_file(target_file) import zipfile zip = zipfile.ZipFile('%s.zip' % target_file, 'w') zip.write(target_file, 'flow.xml') zip.close() _build_dot_with_screenshots(dot, worker, output_dir, model.images_dir) svg_content = utils.load_text_file('%s/simple-flow-images.xml' % output_dir) svg_content = svg_content.replace('xlink:href="%s/' % output_dir, 'xlink:href="') utils.save_file(svg_content, '%s/local-simple-flow-images.xml' % output_dir) downloadable_name = os.path.basename(model_file_name) if downloadable_name.find(".") != -1: downloadable_name = downloadable_name.split(".")[0] downloadable_name = '%s-%s-simple.zip' % (downloadable_name, view_name) zip = zipfile.ZipFile('%s/%s' % (output_dir, downloadable_name), 'w') zip.write('%s/local-simple-flow-images.xml' % output_dir, 'flow.xml') for file_name in os.listdir(output_dir): if file_name.endswith(".png") or file_name.endswith(".gif"): zip.write('%s/%s' % (output_dir, file_name), file_name) zip.close()