Package stocks3 :: Package savers :: Module prepared
[hide private]
[frames] | no frames]

Source Code for Module stocks3.savers.prepared

 1  # -*- coding: utf-8 -*- 
 2   
 3  u""" 
 4  Сохранение информации о котировках в виде Prepared-XML. 
 5  """ 
 6   
 7  from __future__ import with_statement 
 8   
 9  __author__ = "Zasimov Alexey" 
10  __email__ = "zasimov-a@yandex-team.ru" 
11   
12  from stocks3.core.factories import savers 
13  from stocks3.core.saver import Saver 
14  from stocks3.core.config import parseXML 
15  import Cheetah, Cheetah.Template 
16  from StringIO import StringIO 
17  from stocks3.share.xml import minimize, tidylib 
18   
19   
20 -class Prepared(Saver):
21 22 DEFAULT_TEMPLATE = "tmpl/prepared.xml" 23 PREFIX = "data/prepare/" 24 SUFFIX = ".prepare.data.xml" 25
26 - def __init__(self, tree, node, source):
27 Saver.__init__(self, tree, node, source) 28 self.prices = []
29
30 - def _default_output(self):
31 u""" 32 Конструирует имя целевого файла, если это имя не указано в параметрах 33 Saver'a. 34 Работает просто: PREFIX + source.id + SUFFIX 35 """ 36 return self.PREFIX + self.source.sourceId + self.SUFFIX
37
38 - def makeConfig(self):
39 self.filename = self.readString("", "template", self.DEFAULT_TEMPLATE) 40 self.output = self.readString("", "output", self._default_output())
41
42 - def save(self, price):
43 Saver.save(self, price) 44 self.prices.append(price)
45
47 sl = {} 48 sl["prices"] = self.prices 49 sl["source"] = self.source 50 return [sl]
51
52 - def get_data(self):
53 template = Cheetah.Template.Template(file=self.filename, searchList=self._get_search_list_for_template()) 54 return str(template)
55
56 - def flush(self):
57 data = self.get_data() 58 with open(self.output, "wb") as f: 59 f.write(data)
60 61 62 savers.register("stocks3.savers.Prepared", Prepared) 63 64
65 -class PreparedMini(Prepared):
66 - def get_data(self):
67 xml = Prepared.get_data(self) 68 return minimize(xml)
69 70 if tidylib is None: 71 savers.register("stocks3.savers.PreparedMini", Prepared) 72 else: 73 savers.register("stocks3.savers.PreparedMini", PreparedMini) 74