From 36763188983b033043167cf2d5d409fae4625be1 Mon Sep 17 00:00:00 2001 From: Martin Journois Date: Sat, 31 Oct 2015 15:01:18 +0100 Subject: [PATCH] Add save and create_map methods --- folium/element.py | 23 ++++++++++++++++++++++- folium/folium.py | 17 +++++++++++++++++ tests/test_folium.py | 1 + 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/folium/element.py b/folium/element.py index 5a434506ec..5c062df0bd 100644 --- a/folium/element.py +++ b/folium/element.py @@ -13,7 +13,7 @@ import json import base64 -from .six import urlopen +from .six import urlopen, text_type, binary_type from .utilities import _camelify, _parse_size class Element(object): @@ -80,6 +80,27 @@ def render(self, **kwargs): """TODO : docstring here.""" return self._template.render(this=self, kwargs=kwargs) + def save(self, outfile, close_file=True, **kwargs): + """Saves an Element into a file. + + Parameters + ---------- + outfile : str or file object + The file (or filename) where you want to ouput the html. + close_file : bool, default True + Whether the file has to be closed after write. + """ + if isinstance(outfile,text_type) or isinstance(outfile,binary_type): + fid = open(outfile, 'wb') + else: + fid = outfile + + root = self.get_root() + html = root.render(**kwargs) + fid.write(html.encode('utf8')) + if close_file: + fid.close() + class Link(Element): def get_code(self): if self.code is None: diff --git a/folium/folium.py b/folium/folium.py index f03de946e5..0bbdb7558f 100644 --- a/folium/folium.py +++ b/folium/folium.py @@ -30,6 +30,23 @@ class Map(_Map): """This class inherits from the map.Map object in order to provide bindings to former folium API. """ + def create_map(self, path='map.html', plugin_data_out=True, template=None): + """Write Map output to HTML. + + Parameters: + ----------- + path: string, default 'map.html' + Path for HTML output for map + plugin_data_out: boolean, default True + Deprecated, not used anymore + template: string, default None + Deprecated, not used anymore + """ + warnings.warn("%s is deprecated. Use %s instead" % ("Map.create_map", + "Map.save"), + FutureWarning, stacklevel=2) + self.save(path) + def add_wms_layer(self, wms_name=None, wms_url=None, wms_format=None, wms_layers=None, wms_transparent=True): """Adds a simple tile layer. diff --git a/tests/test_folium.py b/tests/test_folium.py index 86901a2980..427d4d8844 100644 --- a/tests/test_folium.py +++ b/tests/test_folium.py @@ -563,6 +563,7 @@ def test_create_map(self): # Test write. map._parent.render() + map.save('map.html') def test_line(self): """Test line."""