@@ -18,12 +18,14 @@ class Datasource(object):
1818 # Public API.
1919 #
2020 ###########################################################################
21- def __init__ (self , dsxml ):
21+ def __init__ (self , dsxml , filename = None ):
2222 """
2323 Constructor. Default is to create datasource from xml.
2424
2525 """
26+ self ._filename = filename
2627 self ._datasourceXML = dsxml
28+ self ._datasourceTree = ET .ElementTree (self ._datasourceXML )
2729 self ._name = self ._datasourceXML .get ('name' ) or self ._datasourceXML .get ('formatted-name' ) # TDS files don't have a name attribute
2830 self ._version = self ._datasourceXML .get ('version' )
2931 self ._connection = Connection (self ._datasourceXML .find ('connection' ))
@@ -32,7 +34,36 @@ def __init__(self, dsxml):
3234 def from_file (cls , filename ):
3335 "Initialize datasource from file (.tds)"
3436 dsxml = ET .parse (filename ).getroot ()
35- return cls (dsxml )
37+ return cls (dsxml , filename )
38+
39+ def save (self ):
40+ """
41+ Call finalization code and save file.
42+
43+ Args:
44+ None.
45+
46+ Returns:
47+ Nothing.
48+
49+ """
50+
51+ # save the file
52+ self ._datasourceTree .write (self ._filename )
53+
54+ def save_as (self , new_filename ):
55+ """
56+ Save our file with the name provided.
57+
58+ Args:
59+ new_filename: New name for the workbook file. String.
60+
61+ Returns:
62+ Nothing.
63+
64+ """
65+ self ._datasourceTree .write (new_filename )
66+
3667
3768 ###########
3869 # name
0 commit comments